过滤器链 [Servlet][JavaWeb]

49 篇文章 0 订阅

过滤器链

一个web应用中可以配置多个过滤器(Filter), 这多个过滤器称之为过滤器链
  • 准确的说是访问某个资源的时候的多个过滤器构成了一个过滤器链
    • 因为如果我们一个web项目中的多个过滤器之间都不会形成交集,都不会拦截到访问同一个Servlet的请求, 这个时候这些过滤器其实就是各自单独存在的, 其实并没有形成过滤器链

图解:

在这里插入图片描述

这个时候就会有相应的问题出现了: 我们的多个过滤器之间如何知道那个过滤器在前面执行, 那个过滤器在后面执行?

注意: 注解配置的过滤器(Filter), 优先级是按照过滤器类名(字符串)的自然排序

  • 就是和Java中的字符串比较大小是一样的, 就是从第一个字符开始一个字符一个字符的比较, 知道比较出结果为止, 比较的结果中小的过滤器在前面, 大的在后面, 也就时小的先执行(最先拦截)

  • 我们通过一个例子来说明:

    • 如果我们此时有两个过滤器FilterDemo和FilterDemo2都是拦截同一个资源的时候: 关于过滤器中代码的执行顺序如下:

      FilterDemo放行前代码 —> FilterDemo2放行前代码 —> 访问到Servlet资源,执行service()方法 —> FilterDemo2放行后代码 —> FilterDemo放行后代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值