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