Filter的详解与配置应用

1.filter概念与用处:

          filter 直译为过滤器,是servlet中的重点对象,是web应用组件,是个典型的处理链

          主用用于: Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。

                       例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

2.filter的生命周期: (init方法与destroy方法只会执行一次)

          创建: 由WEB服务器负责,服务器启动及创建,与servlet中的load-on-startup配置为1时效果相同 (只创建一次)

          初始化:创建Filter对象实例后及会调用init()方法,接着被Web容器保存进应用级的集合容器中去了等待着,用户访问资源 (只初始化一次)

          拦截: 当用户访问的url被Filter的url-pattern拦截时,Filter调用doFilter方法(多次拦截也不会再初始化filter)

          消亡: 当web应用服务被停止或重新装载了,Filter调用destroy方法,Filter销毁

3.filter的拦截原理:

           Filter接口中有一个doFilter方法,当开发人员编写好Filter类实现doFilter方法,并配置对哪个web资源进行拦截后,

           WEB服务器每次在调用web资源的service方法之前(服务器内部对资源的访问机制决定的),都会先调用一下filter的doFilter方法。

4.filter的应用注意事项:

            1> filter-mapping标签中servlet-name与url-pattern。
                Filter不仅可以通过url-pattern来指定拦截哪些url匹配的资源。

                而且还可以通过servlet-name来指定拦截哪个指定的servlet(专门为某个servlet服务了,servlet-name对应Servlet的相关配置)。
            2> filter-mapping标签中dispatcher。
                指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST。

                用户可以设置多 个<dispatcher> 子元素用来指定 Filter 对资源的多种调用方式进行拦截。
      REQUEST:
        当用户直接访问页面时,Web容器将会调用过滤器。

                      如果目标资源是通过RequestDispatcher的include()或forward()方法访问或ERROR情况时,那么该过滤器就不会被调用。
      INCLUDE:
            如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
               FORWARD:
                       如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
      ERROR:
                       如若在A.jsp页面page指令中指定了error属性=examError.jsp,那么A.jsp中若出现了异常,会跳转到examError.jsp中处理。

                       而在跳转到examError.jsp时,若过滤器配置了ERROR的dispather那么则会拦截,否则不会拦截。

5.filter的实例入门:

                1、新建一个类,实现Filter接口
      2、实现doFilter()方法,打印一句话,来证明能够进行拦截
      3、在web.xml中进行配置(参照Servlet配置)
      4、访问一个页面,看看能不能拦截
     

            

posted on 2015-05-13 17:20  丿易小易  阅读(485)  评论(0编辑  收藏  举报

导航