POST中文乱码解决方案

以前,我都是自己编写一个filter,来实现编码,代码如下:

public class CharacterEncodingFilter implements Filter {
  
      private final static Logger log=   LoggerFactory.getLogger(CharacterEncodingFilter.class);
  
      private String characterEncoding; //编码方式配置在web.xml文件中
      private boolean enabled;   //是否启用此Filter,配置在web.xml中
  
      @Override
      public void destroy() {
         characterEncoding = null;
     }
 
     @Override
     public void doFilter(ServletRequest request, ServletResponse response,
                          FilterChain chain) throws IOException, ServletException {
         if (enabled || characterEncoding != null) {
             request.setCharacterEncoding(characterEncoding);
             response.setCharacterEncoding(characterEncoding);
         }
         chain.doFilter(request, response);
     }
 
     @Override
     public void init(FilterConfig config) throws ServletException {
         characterEncoding = config.getInitParameter("characterEncoding");
         enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim());
     }
 }

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

   <filter>
          <filter-name>characterEncodingFilter</filter-name>
          <filter-class>training.model.filter.CharacterEncodingFilter</filter-class>
          <init-param>
              <param-name>characterEncoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
          <init-param>
              <param-name>enabled</param-name>
             <param-value>true</param-value>
         </init-param>
     </filter>
     <filter-mapping>
         <filter-name>characterEncodingFilter</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>

其实我们可以不必这么麻烦,重复造轮子。

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

<filter>  
    <filter-name>CharacterEncodingFilter</filter-name>  
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    <init-param>  
        <param-name>encoding</param-name>  
        <param-value>utf-8</param-value>  
    </init-param>  
</filter>  
<filter-mapping>  
    <filter-name>CharacterEncodingFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping>

按 Ctrl+C 复制代码
以后我们项目中所传递所有参数的编码均为UTF-8。

猜你喜欢

转载自blog.csdn.net/weixin_44505789/article/details/89245064