解决DeferredResult 使用 @ResponseBody 注解返回中文乱码
Spring MVC 项目在使用 DeferredResult 实现异步接口,但返回中文乱码,显示的都是问号。
相关代码:
/*** 长轮询* * @return*/@RequestMapping(value = "ctrldf.do", method = RequestMethod.GET)@ResponseBodypublic DeferredResult<Map<String, String>> DeferredControl(HttpServletRequest request,HttpServletResponse response) throws Exception {// 设置响应内容编码,解决直接在浏览器地址栏访问中文内容乱码的问题response.setCharacterEncoding("utf-8");// 设置响应内容类型response.setContentType("application/json");DeferredResult<Map<String, String>> result = new DeferredResult<Map<String, String>>(10000l, null); // 设置超时10s,超时返回nullPersonal 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 中添加以下内容:
<!--避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value><value>text/html;charset=UTF-8</value></list></property></bean><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 --></list></property></bean><mvc:annotation-driven />
最初我是只添加了:
<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 --></list></property></bean>
这样子使用 以下代码 是没有乱码的。
相关代码如下:
@RequestMapping("/savegw.do")@ResponseBodypublic 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。
另外看到有的文章中提到:
<bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=utf-8</value><value>text/html;charset=UTF-8</value></list></property></bean>
不知是用于什么情况。
注意:有文章提到 上面配置的 xml 必须在 <mvc:annotation-driven /> 之上,这个
解决DeferredResult 使用 @ResponseBody 注解返回中文乱码相关推荐
- spring mvc 返回html 乱码,解决springmvc使用ResponseBody注解返回json中文乱码问题
spring版本:4.2.5.RELEASE 查看"org.springframework.http.converter.StringHttpMessageConverter"源码 ...
- 解决@ResponseBody注解返回的json中文乱码问题
解决@ResponseBody注解返回的json中文乱码问题 参考文章: (1)解决@ResponseBody注解返回的json中文乱码问题 (2)https://www.cnblogs.com/hu ...
- ajax后台返回数据中文乱码_ajax提交 返回中文乱码问题
接口返回数据相关 使用@ResponseBody后返回NUll 说明:刚把后台运行起来,兴高采烈的测试接口数据,结果无论如何都是返回null, 最终通过各种百度,发现原来是没有引入关键的Jar包. 解 ...
- ajax传输json数据格式乱码_解决Ajax加载JSon数据中文乱码问题
一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { ...
- php excelreader 中文,如何解决php excel reader导出excel中文乱码?
解决php excel reader导出excel中文乱码的方法:1.如果不使用dump函数,可以通过修改[_defaultEncoding]变量解决问题:2.如果使用dump函数导出excel,需要 ...
- python2中文输出代码_解决vscode python print 输出窗口中文乱码的问题
解决vscode python print 输出窗口中文乱码的问题 发布时间:2020-09-17 23:53:25 来源:脚本之家 阅读:119 一.搭建 python 环境 在 VSC 中点击 F ...
- php写入文本乱码,如何解决PHP用fwrite写入文件中文乱码的问题
如何解决PHP用fwrite写入文件中文乱码的问题 发布时间:2020-07-15 13:52:07 来源:亿速云 阅读:220 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP用fw ...
- Springboot使用FastJson后,接口返回中文乱码的问题解决。
Springboot使用FastJson后,接口返回中文乱码的问题解决. 参考文章: (1)Springboot使用FastJson后,接口返回中文乱码的问题解决. (2)https://www.cn ...
- Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法
Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法 Eclipse 工具中的操作 流程图片生成的两种方式: 使用 activiti-designer 设计流程图 ...
最新文章
- bzoj 4602: [Sdoi2016]齿轮
- 高动态范围图像-单图
- 中的实践 中兴_中兴通讯王卫斌:一步到位 构建5G 2B新商业
- unity 角色换装
- 如何在 C# 8 中使用默认接口方法
- Serverless在SaaS领域的最佳实践
- 8.19 NOIP模拟测试26(B) 嚎叫响彻在贪婪的厂房+主仆见证了 Hobo 的离别+征途堆积出友情的永恒...
- 用MyEclipse JPA创建项目(四)
- python代码性能优化技巧
- 【AtCoder】ARC083
- window版GitHub使用
- Brother-MFC系列打印机 PDF双面打印设置
- SpringMVC中get请求中文乱码问题
- excel公式编辑器_七款编辑器/笔记工具推荐
- Win10家庭版没有权限访问网上邻居,不能连接共享打印机的解决办法
- Daily Scrum Meeting 11.07
- 电脑网站如何用支付宝收款(php)
- FPGA Verilog视频笔记
- 第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1)
- 不同的声音-我为什么反对用Node
热门文章
- ITK:用常量填充图像
- DCMTK:将显示曲线导出到文本文件
- VTK:Snippets之CameraPosition
- OpenGL 深度测试depth test 的实例
- QT的QSound类的使用
- c++适配器模式adapter
- gitlab 开源项目 星_49必须了解的机器学习开源项目,Github上平均3600星
- php面向对象及tp框架初识,thinkphp面向对象的问题
- 「Tensorflow」TensorFlow基本使用步骤——以线性回归为练习
- 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)