解决spring3 mvc中乱码的问题。

转载 2012年03月22日 16:53:23

今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万恶的iso编码啊),想起之前解决post提交乱码问题一般都是写一个filter,在filter中实现编码的转换,配置方法是是在web.xml中加入以下代码:


  1. <filter>    
  2.     <filter-name>Character Encoding</filter-name>    
  3.     <filter-class>com.filter.CharacterEncodingFilter</filter-class>    
  4.     <init-param>    
  5.         <param-name>encoding</param-name>    
  6.         <param-value>UTF-8</param-value>    
  7.     </init-param>    
  8. </filter>    
  9. <filter-mapping>    
  10.     <filter-name>Character Encoding</filter-name>    
  11.     <url-pattern>/*</url-pattern>    
  12. </filter-mapping>  

其中:com.filter.CharacterEncodingFilter是自己实现的过滤器,具体写法可以参考tomcat6中webapps\examples\WEB-INF\classes\filters下SetCharacterEncodingFilter这个类。

 

觉得这样做有点麻烦,百度了一下,发spring中自带了一个设置编码的过滤器org.springframework.web.filter.CharacterEncodingFilter,所以在web.xml中可以改成这样:


  1. <filter>    
  2.     <filter-name>Character Encoding</filter-name>    
  3.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    
  4.     <init-param>    
  5.         <param-name>encoding</param-name>    
  6.         <param-value>UTF-8</param-value>    
  7.     </init-param>    
  8. </filter>    
  9. <filter-mapping>    
  10.     <filter-name>Character Encoding</filter-name>    
  11.     <url-pattern>/*</url-pattern>    
  12. </filter-mapping>  

 

这样就不用自己写过滤器了。

但是还是觉得有点麻烦,因为使用spring mvc的时候,已经在web.xml中设置了servlet:


  1. <servlet>  
  2.  <servlet-name>spring</servlet-name>  
  3.  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  4.  <load-on-startup>1</load-on-startup>  
  5. </servlet>  
  6.   
  7. <servlet-mapping>  
  8.  <servlet-name>spring</servlet-name>  
  9.  <url-pattern>*.do</url-pattern>  
  10. </servlet-mapping>  

上面已经对请求做了一次过滤,如果再加一个过滤器感觉有点多余,直接改一下DispatcherServlet这个类,使它具有修改编码的功能不是更好?于是就写了一个新的类,继承自DispatcherServlet,代码如下:


  1. package com.mocha.servlet;  
  2.   
  3. import javax.servlet.ServletConfig;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletResponse;  
  7. import org.springframework.web.servlet.DispatcherServlet;  
  8.   
  9. public class EncodingDispatcherServlet extends DispatcherServlet {  
  10.  private String encoding;  
  11.   
  12.  public void init(ServletConfig config) throws ServletException {  
  13.   encoding = config.getInitParameter("encoding");  
  14.   super.init(config);  
  15.  }  
  16.   
  17.  protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception {  
  18.   request.setCharacterEncoding(encoding);  
  19.   super.doService(request, response);  
  20.  }  
  21. }  

然后将web.xml中的配置改为:


  1. <servlet>  
  2.  <servlet-name>spring</servlet-name>  
  3.  <servlet-class>com.mocha.servlet.EncodingDispatcherServlet</servlet-class>  
  4.  <load-on-startup>1</load-on-startup>  
  5.  <init-param>  
  6.   <param-name>encoding</param-name>  
  7.   <param-value>UTF-8</param-value>  
  8.  </init-param>  
  9. </servlet>  
  10.   
  11. <servlet-mapping>  
  12.  <servlet-name>spring</servlet-name>  
  13.  <url-pattern>*.do</url-pattern>  
  14. </servlet-mapping>  

 OK,乱码消失,现在总结一下乱码的问题,get方法乱码解决方法一般是将tomcat中conf目录下server.xml文件中加入


  1. <Connector port="8080" maxHttpHeaderSize="8192"    
  2.                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"    
  3.                enableLookups="false" redirectPort="8443" acceptCount="100"    
  4.                connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />  

而post方法解决乱码是设置一个专门处理编码转换的filter或者servlet。


彻底解决Spring MVC 中文乱码 问题

1:表单提交controller获得中文参数后乱码解决方案 注意: jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 修改w...
  • kalision
  • kalision
  • 2015年06月10日 14:03
  • 188621

SpringMVC 环境下的中文乱码解决

重要的是定位问题的方法和解决问题的耐心! 场景一:SpringMVC+JSON+@ResponseBody 先上截图: 接下来,我们看一下Controller里面的代码: @RequestM...

Spring乱码,forceEncodeing=true

记录一下CharacterEncodingFilter这个类的使用和作用。         很简单很实用的一个过滤器,当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交...

解决spring3 mvc中乱码的问题。

今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万恶的iso编码啊),想起之前解决post提交乱码问题一般都是写一个filter,在filter中实现编码的转换,配置方法是是在web....
  • zhengzhb
  • zhengzhb
  • 2011年11月14日 11:40
  • 31360

Spring3 MVC使用@ResponseBody的乱码问题及解决办法

近日用Spring3的MVC写东西,深感其之于Webwork/Struts2的便利,但是在通过@ResponseBody这个annotation输出一个json字符串的时候,发现页面上获得的json字...

解决spring3 mvc中乱码的问题。

今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万恶的iso编码啊),想起之前解决post提交乱码问题一般都是写一个filter,在filter中实现编码的转换,配置方法是是在web....
  • seelye
  • seelye
  • 2014年12月02日 17:35
  • 712

解决spring3 mvc中乱码的问题

原文 http://blog.csdn.net/zhengzhb/article/details/6967975 今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万恶...

springmvc Spring3 MVC @ResponseBody返回,jquery ajax调用中文乱码问题解决

转自:http://blog.csdn.net/xiaoxin888888/article/details/8279745 转自:http://thoughtfly.iteye.com/blog/1...

spring3 mvc框架乱码问题

今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万恶的iso编码啊),想起之前解决post提交乱码问题一般都是写一个filter,在filter中实现编码的转换,配置方法是是在web....

spring3 mvc中POST和GET乱码的解决

from:http://blog.csdn.net/javabenface/article/details/7383882 今天搭建spring3 mvc框架的时候,发现居然又出现了乱码(万...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决spring3 mvc中乱码的问题。
举报原因:
原因补充:

(最多只允许输入30个字)