本文共 2256 字,大约阅读时间需要 7 分钟。
Spring MVC 项目在使用 DeferredResult 实现异步接口,但返回中文乱码,显示的都是问号。
相关代码:
/** * 长轮询 * * @return */ @RequestMapping(value = "ctrldf.do", method = RequestMethod.GET) @ResponseBody public DeferredResult
其中尝试使用
// 设置响应内容编码,解决直接在浏览器地址栏访问中文内容乱码的问题 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/