上一小节简单介绍了过滤器的概念和基本结构以及新建过滤器的步骤,本节使用过滤器设计一个小案例 -- 使用过滤器统一处理Post方式下参数值中文乱码的问题。
1、分析
对于有汉字信息处理的Servlet或JSP,可以通过编写过滤器实现请求和请求响应的统一编码格式。过滤地址设置成需要进行编码转换的servlet或jsp地址。
2、关键
request.setCharacterEncoding("UTF-8");
3、实现
(1)在需要新建Filter的包中新建filter;
(2)在doFilter()方法中编写编码转换的代码:
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;
public class EncodingFilter implements Filter {
public void destroy() { }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException { }
}
(3)在web.xml中设置过滤地址
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>test.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>