1、Filter也称之为过滤器
(1)WEB开发人员通过Filter技术,对服务器管理的所有web资源拦截;
(2)Jsp, Servlet, 静态图片文件或静态 html 文件等;
(3)实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等高级功能;
(4)配置对哪个web资源进行拦截,调用web资源的service方法之前,先调doFilter方法;
- 调用目标资源之前,让一段代码执行。
- 是否调用目标资源(即是否让用户访问web资源)。
- 调用目标资源之后,让一段代码执行。
(5)web服务器在调用doFilter方法时,会传递一个filterChain对象;
chain.doFilter(request, response); //让目标资源执行,放行
(6)可以编写多个Filter,根据在web.xml文件中的注册顺序,执行filterChain的doFilter传递执行;
2、Filter生命周期
(1)Filter的创建和销毁由WEB服务器负责;
(2)web服务器启动时创建,调用init()方法;
(3)filter对象只会创建一次,init方法也只会执行一次;
(4)Web容器调用destroy方法销毁Filter,仅执行一次;
3、FilterConfig接口
(1)配置filter时,可以使用<init-param>为filter配置一些初始化参数;
4、filter-mapping标签中servlet-name与url-pattern
(1)可以通过url-pattern来指定拦截哪些url匹配的资源;
(2)可以通过servlet-name来指定拦截哪个指定的servlet;
(3)servlet-name对应Servlet的相关配置);
5、filter-mapping标签中dispatcher
(1)可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST;
(2)REQUEST:用户直接访问页面时,Web容器将会调用过滤器,其他调用无效;
(3)INCLUDE:通过RequestDispatcher的include()方法访问,其他调用无效;
(4)FORWARD:RequestDispatcher的forward()方法访问,其他调用无效;
(5)ERROR:A.jsp中若出现了异常,会跳转到examError.jsp中处理,其他调用无效;