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 注解返回中文乱码相关推荐

  1. spring mvc 返回html 乱码,解决springmvc使用ResponseBody注解返回json中文乱码问题

    spring版本:4.2.5.RELEASE 查看"org.springframework.http.converter.StringHttpMessageConverter"源码 ...

  2. 解决@ResponseBody注解返回的json中文乱码问题

    解决@ResponseBody注解返回的json中文乱码问题 参考文章: (1)解决@ResponseBody注解返回的json中文乱码问题 (2)https://www.cnblogs.com/hu ...

  3. ajax后台返回数据中文乱码_ajax提交 返回中文乱码问题

    接口返回数据相关 使用@ResponseBody后返回NUll 说明:刚把后台运行起来,兴高采烈的测试接口数据,结果无论如何都是返回null, 最终通过各种百度,发现原来是没有引入关键的Jar包. 解 ...

  4. ajax传输json数据格式乱码_解决Ajax加载JSon数据中文乱码问题

    一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { ...

  5. php excelreader 中文,如何解决php excel reader导出excel中文乱码?

    解决php excel reader导出excel中文乱码的方法:1.如果不使用dump函数,可以通过修改[_defaultEncoding]变量解决问题:2.如果使用dump函数导出excel,需要 ...

  6. python2中文输出代码_解决vscode python print 输出窗口中文乱码的问题

    解决vscode python print 输出窗口中文乱码的问题 发布时间:2020-09-17 23:53:25 来源:脚本之家 阅读:119 一.搭建 python 环境 在 VSC 中点击 F ...

  7. php写入文本乱码,如何解决PHP用fwrite写入文件中文乱码的问题

    如何解决PHP用fwrite写入文件中文乱码的问题 发布时间:2020-07-15 13:52:07 来源:亿速云 阅读:220 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP用fw ...

  8. Springboot使用FastJson后,接口返回中文乱码的问题解决。

    Springboot使用FastJson后,接口返回中文乱码的问题解决. 参考文章: (1)Springboot使用FastJson后,接口返回中文乱码的问题解决. (2)https://www.cn ...

  9. Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法

    Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法 Eclipse 工具中的操作 流程图片生成的两种方式: 使用 activiti-designer 设计流程图 ...

最新文章

  1. bzoj 4602: [Sdoi2016]齿轮
  2. 高动态范围图像-单图
  3. 中的实践 中兴_中兴通讯王卫斌:一步到位 构建5G 2B新商业
  4. unity 角色换装
  5. 如何在 C# 8 中使用默认接口方法
  6. Serverless在SaaS领域的最佳实践
  7. 8.19 NOIP模拟测试26(B) 嚎叫响彻在贪婪的厂房+主仆见证了 Hobo 的离别+征途堆积出友情的永恒...
  8. 用MyEclipse JPA创建项目(四)
  9. python代码性能优化技巧
  10. 【AtCoder】ARC083
  11. window版GitHub使用
  12. Brother-MFC系列打印机 PDF双面打印设置
  13. SpringMVC中get请求中文乱码问题
  14. excel公式编辑器_七款编辑器/笔记工具推荐
  15. Win10家庭版没有权限访问网上邻居,不能连接共享打印机的解决办法
  16. Daily Scrum Meeting 11.07
  17. 电脑网站如何用支付宝收款(php)
  18. FPGA Verilog视频笔记
  19. 第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1)
  20. 不同的声音-我为什么反对用Node

热门文章

  1. ITK:用常量填充图像
  2. DCMTK:将显示曲线导出到文本文件
  3. VTK:Snippets之CameraPosition
  4. OpenGL 深度测试depth test 的实例
  5. QT的QSound类的使用
  6. c++适配器模式adapter
  7. gitlab 开源项目 星_49必须了解的机器学习开源项目,Github上平均3600星
  8. php面向对象及tp框架初识,thinkphp面向对象的问题
  9. 「Tensorflow」TensorFlow基本使用步骤——以线性回归为练习
  10. 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)