[转]Java Web乱码过滤器

时间:2023-03-09 21:49:23
[转]Java Web乱码过滤器

本文转自http://blog.csdn.net/l271640625/article/details/6388690

大家都知道,在jsp里乱码是最让人讨厌的东西,有些乱码出来的莫名其妙,给开发带来很大困扰,但搞一个乱码过滤器就一切都解决了,配置好之后,你并不需要在页面里进行转码之类的。

        首先,写一个过滤器类,如下:

 package filter;  

 import java.io.IOException;  

 import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; public class PageEncodingFilter implements Filter{ private String encoding = "UTF-8";
protected FilterConfig filterConfig; public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
//本过滤器默认编码是UTF-8,但也可以在web.xml配置文件里设置自己需要的编码
if(filterConfig.getInitParameter("encoding") != null)
encoding = filterConfig.getInitParameter("encoding");
} public void doFilter(ServletRequest srequset, ServletResponse sresponse,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)srequset;
request.setCharacterEncoding(encoding);
filterChain.doFilter(srequset, sresponse);
} public void destroy() {
this.encoding = null;
} }

然后,在web.xml里配置,如下:

 <filter>
<filter-name>Encoding</filter-name>
<filter-class>filter.PageEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

到这里,一切就OK了,你可以放心的写代码了,而不会担心出现乱码了。