定义:
web容器的组件之一,主要用于请求到Servlet之前处理和servlet返回信息到client 之前处理
应用:
- 认证(shiro、Spring security)
- 授权(shiro、Spring security)
- 信息过滤(xss)
- 统一信息(编码)
声明周期
工作原理图,假设有三个过滤器符合请求规则
以 chain.doFilter(request,response); 为界限,每个filter分为前、后两部分、
拦截类型: DispatcherType
public enum DispatcherType { FORWARD,//转发请求 INCLUDE,//转发请求类型为include REQUEST,//直接请求 ASYNC,//异步请求,servlet3.0后才有的 ERROR //声明式异常处理机制 }
关于异步请求的处理流程,补充一下:
直接调用异步请求 :
既会触发 REQUEST类型的Filter,也会触发ASYNC 类型的Filter,下面针对同时存在的REQUEST、ASYNC类型的Filter进行模拟