来自我的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>