11. Filter (重点)
Filter:过滤器,用来过滤网站的数据;
- 处理中文乱码
- 登录验证…
Filter开发步骤:
- 导包
- 编写过滤器
导包不要导错了:
实现Filter接口,重写对应方法即可
public class CharacterEncodingFilter implements Filter {
/**
* 初始化:web服务器启动,就已经触发了,随时等待过滤对象
* @param filterConfig
* @throws ServletException
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化了");
}
/**
* Chain:链
* 1. 过滤器中的所有代码,在过滤特定请求的时候都会执行
* 2. 必须要让过滤器继续前行
* chain.doFilter(request, response);
* @param request
* @param response
* @param chain
* @throws IOException
* @throws ServletException
*/
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
System.out.println("CharacterEncodingFilter执行前...");
//让我们的请求继续走,如果不写,程序就到这里被拦截停止了!
chain.doFilter(request, response);
System.out.println("CharacterEncodingFilter执行后...");
}
/**
* 销毁:web服务器关闭的时候,过滤器会被销毁
*/
@Override
public void destroy() {
System.out.println("CharacterEncodingFilter销毁了");
}
}
-
在web.xml中配置过滤器Filter
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>com.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <!--只要是 /servlet的任何请求,都会经过这个过滤器--> <url-pattern>/servlet/*</url-pattern> </filter-mapping>