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

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值