Java之Filter过滤器

Filter过滤器

  配置方式:web.xml

<filter>
  <filter-name>Demo097</filter-name>
  <filter-class>cn.xinx.web.FilterDemo097</filter-class>
</filter>
<filter-mapping>
  <filter-name>Demo097</filter-name>
  <!-- 拦截路径 -->
  <url-pattern>/*</url-pattern>
</filter-mapping>

   过滤器生命周期

    init:在服务器启动后,会创建Filter对象,然后调用init方法;

    doFilter:每一次请求被拦截资源时,会执行;

     destroy:在服务器正常关闭后,Filter对象被销毁;释放资源;

  注解方式:

    @WebFilter("/*")  访问所有资源之前,都会执行该过滤器

  过滤器配置

具体资源路径: /index.jsp  只有访问index.jsp资源时,过滤器才会被执行

拦截目录: /xin/*  访问/xin下的所有资源时,过滤器都会被执行

后缀名拦截: *.jsp  访问所有后缀名为jsp资源时,过滤器都会被执行

拦截所有资源:/*  访问所有资源时,过滤器都会被执行

  拦截方式配置:  配置资源被访问到的方式

    注解配置:

    设置dispatcherTypes属性

    1 FEQUEST  默认  浏览器直接请求资源时拦截

    2 FORWARD  转发  只有转发访问资源时拦截

    3 INCLUDE  包含  包含访问资源

    4 ERROR  错误  错误跳转资源

    5 ASYNC  异步  异步访问资源

@WebFilter(value="/*", dispatcherTypes = DispatcherType.REQUEST)  请求时拦截

@WebFilter(value="/*", dispatcherTypes ={ DispatcherType.REQUEST, DispatcherType.FORWARD}) 请求和转发都拦截

    web.xml配置:

      设置<dispatcher> 5个值 </dispatcher>标签即可

     过滤器链(配置多个过滤器)

      执行顺序   执行顺序:如果有两个过滤器:过滤器1和过滤器2

        1 - 2 - 资源 - 2 - 1

    先后顺序问题:

      注解配置:按照类名的字符串比较规则比较,值小的先执行

        FilterA  和 FilterB  A先执行,

      web.xml配置: <filter-mapping>谁定义在上边,谁先执行

 

 

 

 

posted @ 2020-03-11 22:44  金鑫金  阅读(180)  评论(0编辑  收藏  举报