JSP表单提交中文乱码解决方法(使用过滤器)(GET方法无效)

  来自我的Iteye,搬家了。

  如果是get方式,就算写Filter也不行,因为Filter针对的是post方式提交的数据,而get方式就不行了,如果用get方式必须要转码.建议用post方式。

编写一个过滤器全局编码设置:

 1 import java.io.IOException;   
 2   
 3 import javax.servlet.*;   
 4 import javax.servlet.http.HttpServletRequest;   
 5   
 6 public class EncodingFilter implements Filter {   
 7     private String charSet;   
 8        
 9     public void init(FilterConfig arg0) throws ServletException {   
10             this.charSet=arg0.getInitParameter("charset");   
11     }   
12   
13     public void doFilter(ServletRequest arg0, ServletResponse arg1,   
14             FilterChain arg2) throws IOException, ServletException {   
15             HttpServletRequest request=(HttpServletRequest)arg0;   
16             request.setCharacterEncoding(charSet);      //设置编码   
17             arg2.doFilter(arg0, arg1);   
18     }   
19   
20     public void destroy() {   
21         // TODO Auto-generated method stub   
22            
23     }   
24   
25 }  

WEB.XML中配置过滤器:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app version="2.5"    
    xmlns="http://java.sun.com/xml/ns/javaee"    
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
<!-- 编码过滤,设置统一编码 -->  
<filter>     
     <filter-name>encodingFilter</filter-name>     
    <filter-class>     
           org.mm.filter.EncodingFilter     
    </filter-class>  
    <init-param>  
        <param-name>charset</param-name>  
        <param-value>UTF-8</param-value>  
    </init-param>  
</filter>     
<filter-mapping>     
    <filter-name>     
       encodingFilter     
    </filter-name>     
    <url-pattern>/*</url-pattern>     
</filter-mapping>   
原文地址:https://www.cnblogs.com/cfan1874/p/2876572.html