Filter 表示过滤器,是 JavaWeb 三大组件 (Servlet 、 Filter 、 Listener) 之一。
过滤器可以把对资源的请求 拦截 下来,从而实现一些特殊的功能。
过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等..
一、Filter 快速入门
(1)定义类,实现 Filter接口,并重写其所有方法
(2)配置Filter拦截资源的路径:在类上定义 @WebFilter 注解。而注解的 value 属性值 /* 表示拦截所有的资源
(3)在doFilter方法中输出一句话,并放行
@WebFilter("/*") public class FilterDemo implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //1. 放行前,对 request数据进行处理 System.out.println("1.FilterDemo..."); //放行 chain.doFilter(request,response); //2. 放行后,对Response 数据进行处理 System.out.println("5.FilterDemo..."); } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } }
二、Filter拦截路径配置
拦截路径有如下四种配置方式:(1)拦截具体的资源: /index.jsp :只有访问 index.jsp 时才会被拦截(2) 目录拦截: /user/* :访问 /user 下的所有资源,都会被拦截(3)后缀名拦截: *.jsp :访问后缀名为 jsp 的资源,都会被拦截(4)拦截所有: /* :访问所有资源,都会被拦截
三、过滤器链
过滤器链是指在一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。
配置方式的优先级是按照过滤器类名 ( 字符串 ) 的自然排序。