servlet的过滤器

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中处理,其他调用无效;

猜你喜欢

转载自my.oschina.net/u/3847203/blog/1813056