博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决DeferredResult 使用 @ResponseBody 注解返回中文乱码
阅读量:6987 次
发布时间:2019-06-27

本文共 2256 字,大约阅读时间需要 7 分钟。

Spring MVC 项目在使用 DeferredResult 实现异步接口,但返回中文乱码,显示的都是问号。

相关代码:

/**	 * 长轮询	 * 	 * @return	 */	@RequestMapping(value = "ctrldf.do", method = RequestMethod.GET)	@ResponseBody	public DeferredResult
> DeferredControl(HttpServletRequest request, HttpServletResponse response) throws Exception { // 设置响应内容编码,解决直接在浏览器地址栏访问中文内容乱码的问题 response.setCharacterEncoding("utf-8"); // 设置响应内容类型 response.setContentType("application/json"); DeferredResult
> result = new DeferredResult
>(10000l, null); // 设置超时10s,超时返回null Personal personal = SecurityUtils.getPersonal(request); Long personalId = personal.getId(); if (personalId == null) { // outFailureJson(response, BaseCodeMessage.personal_10001); result.setErrorResult(BaseCodeMessage.personal_10001); return result; } Long familyId = personal.getFamilyId(); if (familyId == null) { // outFailureJson(response, "1", "家庭编号不能为空"); result.setErrorResult("家庭编号不能为空"); return result; }}

其中尝试使用

// 设置响应内容编码,解决直接在浏览器地址栏访问中文内容乱码的问题		response.setCharacterEncoding("utf-8");		// 设置响应内容类型		response.setContentType("application/json");
发现根本不起作用。

解决方法:

需要在 spring-mvc.xml 中添加以下内容:

text/plain;charset=UTF-8
text/html;charset=UTF-8
最初我是只添加了:

这样子使用 以下代码 是没有乱码的。

相关代码如下:

@RequestMapping("/savegw.do")	@ResponseBody	public void savegw(HttpServletRequest request, HttpServletResponse response) throws Exception {// 设置响应内容编码,解决直接在浏览器地址栏访问中文内容乱码的问题		response.setCharacterEncoding("utf-8");		// 设置响应内容类型		response.setContentType("text/plain");		try {			OutputStream out = response.getOutputStream();			if (content == null){				content = "";			}			out.write(content.getBytes());			out.close();		} catch (IOException e) {			e.printStackTrace();		}}
有什么区别呢?

上面的方法返回值是 DeferredResult, 而这里返回值是 void。

另外看到有的文章中提到:

text/plain;charset=utf-8
text/html;charset=UTF-8
不知是用于什么情况。

注意:有文章提到 上面配置的 xml 必须在 <mvc:annotation-driven /> 之上,这个

转载地址:http://izhpl.baihongyu.com/

你可能感兴趣的文章
CSS格式化 CSS代码压缩工具
查看>>
mvc伪静态<三> IIS配置
查看>>
Visual Studio中的lib的链接顺序
查看>>
android自定义radiobutton样式文字颜色随选中状态而改变
查看>>
【CodeForces 604B】F - 一般水的题1-More Cowbe
查看>>
wxPython 4.0.0b2安装
查看>>
Android RecyclerView利用Glide加载大量图片into(Target)导致OOM异常
查看>>
UGUI表情系统解决方案
查看>>
HTTP Health Checks
查看>>
为什么正态分布如此普遍
查看>>
jQuery事件
查看>>
BBS论坛(三十)
查看>>
轻松看懂Java字节码
查看>>
AE TIN的切割
查看>>
ASP.NET图片上传,删除
查看>>
Visual Studio 2010 创建的WCF服务 第一个应用
查看>>
2016第42周五
查看>>
centos7 取消自动锁屏
查看>>
在IDEA中代码自动提示第一个字母大小写必须匹配的解决
查看>>
面向接口编程的好处和优点
查看>>