java中用过滤器解决字符编码问题
java的web程序经常出现中文乱码的问题,用一个实现了Filter接口的过滤器类可以较好地解决这个问题。
新增过滤器类EncodingFilter
import
java.io.IOException;
import javax.servlet. * ;
public class EncodingFilter implements Filter {
private FilterConfig filterConfig = null ;
private String encoding = null ;
@Override
public void destroy() {
filterConfig = null ;
encoding = null ;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
if (request.getCharacterEncoding() == null ) {
if (encoding != null ) {
request.setCharacterEncoding(encoding);
}
filterChain.doFilter(request, response);
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this .filterConfig = filterConfig;
this .encoding = filterConfig.getInitParameter( " encoding " );
}
}
import javax.servlet. * ;
public class EncodingFilter implements Filter {
private FilterConfig filterConfig = null ;
private String encoding = null ;
@Override
public void destroy() {
filterConfig = null ;
encoding = null ;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
if (request.getCharacterEncoding() == null ) {
if (encoding != null ) {
request.setCharacterEncoding(encoding);
}
filterChain.doFilter(request, response);
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this .filterConfig = filterConfig;
this .encoding = filterConfig.getInitParameter( " encoding " );
}
}
web.xml中加入
<
filter
>
< filter-name > EncodingFilter </ filter-name >
< filter-class > EncodingFilter </ filter-class >
< init-param >
< param-name > encoding </ param-name >
< param-value > UTF-8 </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > EncodingFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< filter-name > EncodingFilter </ filter-name >
< filter-class > EncodingFilter </ filter-class >
< init-param >
< param-name > encoding </ param-name >
< param-value > UTF-8 </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > EncodingFilter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
jsp页面中设置pageEncoding="UTF-8" ,表单提交方法method="post"