先说一下我的经历,以及解决问题的而过程。

  在使用SpringMVC的时候,最开始的时候在配置文件中使用<mvc:annotation-driven />去自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,这是spring MVC为@Controllers分发请求所必须的。再后来,Ajax请求需要返回字符串,遂在控制器上使用@ResponseBody注解来实现,这时候遇到的一个问题是,返回中文字符的时候会乱码,关于中文乱码的解决办法倒时有很多。SpringMVC的@ResponseBody注解使用的处理类为Spring的org.springframework.http.converter.StringHttpMessageConverter类,返回中文乱码的原因是其默认处理的字符集是ISO-8859-1。So...

  解决办法1:

    在控制器上加上@RequestMapping(value="/checkLogin",method=RequestMethod.POST,produces="text/html;charset=UTF-8")字符编码的注解,加上注解之后,中文乱码的问题的到了解决,但是之后又有了为HandlerMapping添加拦截器的需求,在这里为了精准的添加拦截器,所以放弃使用<mvc:annotation-driven />这句话去自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,而改为手动注册。等修改了之后,发现中文乱码的问题又来了,遂采用了另外一种办法。

  解决办法2:

<bean
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<bean class="cn.ciss.interceptor.LoginInterceptor"></bean>
</list>
</property>
</bean>
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean
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>
<bean
class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean>
<bean
class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean>
<bean
class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean>
<bean
class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"></bean>
<bean
class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"></bean>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</list>
</property>
</bean>

  这是自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter的代码,之所以自己去注册,是为了增加对SpringMVC的控制能力,比如你想为某个特定的HandleMapping注册一个拦截器之类的。看以上贴出的代码可以看到,在注册org.springframework.http.converter.StringHttpMessageConverter的时候明确了其编码格式为UTF-8。这种解决办法也是我比较喜欢的,因为不用再每一个返回中文字符串上的控制器都加一个@RequestMapping(value="/checkLogin",method=RequestMethod.POST,produces="text/html;charset=UTF-8")这样的注解了。

    

SpringMVC使用@ResponseBody注解返回中文字符串乱码的问题的更多相关文章

  1. spring mvc 返回乱码SpringMVC使用@ResponseBody注解返回中文字符串乱码的问题

    原文地址:https://www.cnblogs.com/fzj16888/p/5923232.html 先说一下我的经历,以及解决问题的而过程. 在使用SpringMVC的时候,最开始的时候在配置文 ...

  2. spring 3.0 @ResponseBody注解返回中文问号乱码解决办法

    前几天给公司做项目,很久没接触java项目的我,遇到了一个问题,就是我在利用异步到控制器中查询,然后返回jaon字符串到前台,字符串中包含中文,于是我直接用了@ResponseBody注解,来返回到前 ...

  3. springmvc 解决@ResponseBody注解返回中文乱码

    使用messageConverters <bean class="org.springframework.web.servlet.mvc.method.annotation.Reque ...

  4. Spring MVC @ResponseBody返回中文字符串乱码问题

    朋友做小项目练手的时候遇到的,着实让他郁闷够呛..这个问题的确很恶心.. 项目中引用的json包,直接用@ResponseBody注解返回json字符串..有关这个的乱码问题网上很多,各种花样各种转码 ...

  5. SpringMVC中 解决@ResponseBody注解返回中文乱码

    问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter ...

  6. 记一次@ResponseBody注解返回中文乱码的问题

    Bug场景 前端AJax $.ajax({ url: '$!{request.getContextPath()}/XX/save.do', type: 'post', dataType: 'json' ...

  7. Java-SpringMvc-@ResponseBody返回中文字符串乱码

    第一种.注解 @RequestMapping(value = "/test.do", method = {RequestMethod.GET},produces = "t ...

  8. 解决springmvc使用ResponseBody注解返回json中文乱码问题

    spring版本:4.2.5.RELEASE 查看“org.springframework.http.converter.StringHttpMessageConverter”源码,中有一段说明: B ...

  9. 解决Spring MVC @ResponseBody返回中文字符串乱码问题

    spring mvc使用的默认处理字符串编码为ISO-8859-1 解决方法: 第一种方法: 对于需要返回字符串的方法添加注解,如下: @RequestMapping(value="/use ...

随机推荐

  1. HIbernate学习笔记(六) 关系映射之多对多

    六.多对多 - 单向 Ø        一般的设计中,多对多关联映射,需要一个中间表 Ø        Hibernate会自动生成中间表 Ø        Hibernate使用many-to-ma ...

  2. 跨平台的游戏客户端Socket封装,调整

    原文链接:http://www.cnblogs.com/lancidie/archive/2013/04/13/3019359.html 头文件: #pragma once #ifdef WIN32 ...

  3. JDBC 的基本步骤

    JDBC 的基本步骤: 一.导入mysql-connector-java-x.x.x-bin.jar后: 二.代码 1. 注册驱动(三种方式)2. 创建一个连接对象(三种方式) 3. 创建一个sql语 ...

  4. 关于Java Collections API您不知道的5件事,第2部分

    注意可变对象 java.util 中的 Collections 类旨在通过取代数组提高 Java 性能.如您在 第 1 部分 中了解到的,它们也是多变的,能够以各种方 式定制和扩展,帮助实现优质.简洁 ...

  5. drag and drop

    <!DOCTYPE HTML> <html> <head> <script type="text/javascript"> func ...

  6. hdu 5533 Dancing Stars on Me

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5533 Dancing Stars on Me Time Limit: 2000/1000 MS (Ja ...

  7. nyoj 891 找点

    找点 时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述 上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点.但是这几天LYH太忙了,你们帮 ...

  8. SQL 正则表达式使模式匹配和数据提取变得更容易

    SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易 David Banister 本文讨论: 使用正则表达式进行高效的 SQL 查询 SQL Server 2005 对正则表达式 ...

  9. server2008服务器iis设置的一些经验

    安装顺序会有一定得影响,如果是先安装IIS,再安装.NET Framework,系统应该可以正常解析.aspx页面:但是,如果是先安装了.NET Framework,再安装IIS,则会由于相关的IIS ...

  10. Select-Object用法

    展开 modules 属性的详细信息 get-process |? {$_.processname -eq "cmd"}|select -ExpandProperty module ...