过滤器,也属于 Servlet 规范

三要素

  • 拦截
  • 过滤
  • 放行

生命周期

和 Servlet 生命周期类比,Filter 生命周期关键区别是: 在 Web 应用启动时创建对象

生命周期阶段 执行时机 执行次数
创建对象 Web 应用启动时 1
初始化 创建对象后 1
拦截请求 接收到匹配的请求 n
销毁 Web应用卸载前 1

多个Filter执行顺序

1、注解方式注册,默认按照 Filter 首字母升序执行
2、xml 文件方式注册,按照注册的顺序执行

过滤器链

  • 多个Filter的拦截范围如果存在重合部分,那么这些Filter会形成Filter链
  • 浏览器请求重合部分对应的目标资源时,会依次经过Filter链中的每一个Filter。
  • Filter链中每一个Filter执行的顺序是由web.xml中filter-mapping配置的顺序决定的。