StandardWrapperValve的invoke就三步:
-
创建Servlet实例
-
给当前请求创建一个Filter链
-
调用Filter链
[](()为何要给每个请求创建Filter链
每个请求的请求路径不同,而Filter都有相应路径映射,因此不是所有Filter都需要处理当前请求,要根据请求路径选择特定的一些Filter。
[](()为何没调用Servlet#service
Filter链的最后一个Filter会负责调用Servlet。
[](()Filter管理
=======================================================================
跟Servlet一样,Filter也可在web.xml
配置。
但Filter的作用域是整个Web应用,因此Filter的实例维护在Context容器:Map里存的是filterDef(filter定义),而非filter类实例