您的位置:首页 > 移动开发

用struts2开发的App后台,返回json数据中文为问号的解决办法

2015-09-27 12:07 597 查看
一个人开发前台app和后台,由于对后台框架了解的不多,暂用struts2+hibernate搭建后台。遇到一个问题,就是struts2的返回值中,中文显示为问号(?),上网查了很多文章才找到了解决方法,提供了两种方案,只有第二种可以解决乱码的问题,一开始用的第一种方案,就是遇到乱码问题,后来采用的第二种就可以了。废话不多说,看代码。第一种:strust.xml配置文件
<action name="send_pass" class="com.secret.action.SendPassAction">
<result name="success">/primer/success.jsp</result>
</action>
Action代码:
package com.secret.action;

import com.opensymphony.xwork2.ActionSupport;

public class SendPassAction extends ActionSupport {
private String result;

public String getResult() {
return result;
}

public void setResult(String result) {
this.result = result;
}

@Override
public String execute() throws Exception {
result = "{\"status\":1,\"msg\":\"你好世界\"}";
return SUCCESS;
}
}
success.jsp文件比较简单,就一条代码
${result}
返回的结果(android和浏览器返回结果一致):{"status":1,"msg":"????"}这种方案结构挺喜欢,可是就是出现乱码问题,(没办法,做程序追求的是结果不是美观),有知道解决方法的请告知。第二种xml文件不变Action代码(这是重点):
package com.secret.action;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class SendPassAction extends ActionSupport {
private String result;

public String getResult() {
return result;
}

public void setResult(String result) {
this.result = result;
}

@Override
public String execute() throws Exception {
result = "{\"status\":1,\"msg\":\"你好世界\"}";
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print(result);
out.flush();
out.close();
return NONE;
}
}
返回结果:{"status":1,"msg":"你好世界"}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: