SpringMvc POST中文乱码解决方案

来源:互联网 发布:早晨 句子 知乎 编辑:程序博客网 时间:2024/05/29 11:44

转自:http://www.cnblogs.com/rollenholt/archive/2012/12/26/2833921.html

通党我们都是自己编写一个filter,来实现编码,代码如下:

复制代码
 1 public class CharacterEncodingFilter implements Filter { 2  3     private final static Logger log= LoggerFactory.getLogger(CharacterEncodingFilter.class); 4  5     private String characterEncoding; //编码方式配置在web.xml文件中 6     private boolean enabled;   //是否启用此Filter,配置在web.xml中 7  8     @Override 9     public void destroy() {10         characterEncoding = null;11     }12 13     @Override14     public void doFilter(ServletRequest request, ServletResponse response,15                          FilterChain chain) throws IOException, ServletException {16         if (enabled || characterEncoding != null) {17             request.setCharacterEncoding(characterEncoding);18             response.setCharacterEncoding(characterEncoding);19         }20         chain.doFilter(request, response);21     }22 23     @Override24     public void init(FilterConfig config) throws ServletException {25         characterEncoding = config.getInitParameter("characterEncoding");26         enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim());27     }28 }
复制代码

然后自己在web.xml文件中做如下配置

复制代码
 1  <filter> 2         <filter-name>characterEncodingFilter</filter-name> 3         <filter-class>training.model.filter.CharacterEncodingFilter</filter-class> 4         <init-param> 5             <param-name>characterEncoding</param-name> 6             <param-value>UTF-8</param-value> 7         </init-param> 8         <init-param> 9             <param-name>enabled</param-name>10             <param-value>true</param-value>11         </init-param>12     </filter>13     <filter-mapping>14         <filter-name>characterEncodingFilter</filter-name>15         <url-pattern>/*</url-pattern>16     </filter-mapping>
复制代码

其实我们可以不必这么麻烦,重复造轮子。如下配置更方便处理该问题,我就是用的下面的方案:

spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下:

复制代码
 1 <filter>   2     <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>  11     <url-pattern>/*</url-pattern>  12 </filter-mapping>  
复制代码

  以后我们项目及所有页面的编码均为UTF-8。


0 0
原创粉丝点击