过滤器,也属于 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配置的顺序决定的。