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

  在使用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. Tomcat普通用户部署教程(生产服务器)

    1.环境准备 JDK安装 解压     tar xf tomcat-xx.tar.gz -C /data/soft     cd /data/soft 重命名     mv tomcat-xx tom ...

  2. 安装ADT

    ubuntu下安装android开发环境. 打开eclipse,help---install new software,安装adt,一直提示无法连接到dl-ssl.google.com 由https改 ...

  3. 集合框架-Map练习-记录字母出现的次数

    /* * 练习: * 字符串"abcb453   sddbs343bsjvAJBBDVBs21768723",获取该字符串中,每一个字母出现的次数. * 要求打印结果是:a(2)b ...

  4. Modbus Poll :Byte Missing Error或CRC Error

    原因: 1.通信线路受干扰或是路线接触不良:    用显示器测量物理电平信号   2.从机工作不正常: 检测电源不正常或查程序bug   3.PC主机串口不正常: PC串口2.3脚答短接用串口调试器测 ...

  5. pom.xml报错

    错误太多打开文件后就不会显示,点开前边的选项卡就会提示错误信息,一般是jar包没加载全.

  6. Vim Skills——Windows利用Vundle和Github进行Vim配置和插件的同步

    OS:Windows Vim安装完成之后,目录如下 vim73:vim运行时所需的文件,对应目录为$VIMRUNTIME变量 vimfiles:第三方的文件,对应目录为$VIM/vimfiles _v ...

  7. 08重编终极版《东邪西毒:终极版》DVD粤语中字

    1.东邪西毒].Ashes.of.Time.1994.384p.DVDRip.x264.ac3-DTMM.mkv 这个版本最清晰 ,可惜删减了,只有87分钟,粤语,1.4G. 2.东邪西毒(初始版). ...

  8. Android硬件加速

    Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存. 开启或关闭硬件加速: 由于硬件加速自身并非完美 ...

  9. WebGL on iOS8 最终等到了这一天

    WWDC2014刚结束,这次的大会是名符事实上的开发人员大会.更贴切的应该说的确是一次软件开发人员的大会.对于OSX和iOS的很多其它功能特性让人兴奋.Swift新语言促成了如上图片 但我更感兴趣的是 ...

  10. 文件夹同步/备份软件推荐 (SyncToy/FreeFileSync/Compare Advance/GoodSync/Allway Sync/Compare Advance)

    关于文件同步的文章,已经很多次出现在异次元上了,因为它们很多都能实实在在提高工作便利性.比方说有我们熟悉的云端同步软件 Dropbox.金山快盘,以及曾经还介绍过可本地使用的 Allway Sync  ...