配置拦截器:
<!-- 为所有页面配置编码格式的过滤器 ,这里设置的编码格式需要与所有jsp页面的编码格式一致-->
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>(包路径).SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
拦截器指向类:
/**
* Servlet乱码过滤器
* 只能过滤post请求的乱码问题.
*/
public class SetCharacterEncodingFilter implements Filter{
private String encoding = null;//编码集
private FilterConfig filterConfig = null;//配置信息
/**
* 初始化参数
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
//访问部署的描述文件(web.xml)中配置的过滤器初始化参数
this.encoding = filterConfig.getInitParameter("encoding");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//将请求转换为HttpServletRequest的请求
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
//System.out.println("serlvet编码过滤器");
if(encoding != null){
req.setCharacterEncoding(encoding);
resp.setCharacterEncoding(encoding);
}
//释放拦截器
chain.doFilter(req, resp);
}
/**
* 销毁
*/
@Override
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
}