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

来源:互联网 发布:源码授权是什么 编辑:程序博客网 时间:2024/05/21 19:14

一个人开发前台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;}@Overridepublic 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;}@Overridepublic 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":"你好世界"}

1 0
原创粉丝点击