并非只有Servlet才会去处理请求,查找路径上的父子容器都会对请求做一些处理:
- 连接器中的Adapter会调用容器的Service方法执行Servlet
- 最先拿到请求的是Engine容器,Engine容器对请求做一些处理后,会把请求传给自己子容器Host继续处理,依次类推
- 最后这个请求会传给Wrapper容器,Wrapper会调用最终的Servlet来处理
这个调用过程使用的Pipeline-Valve管道,责任链模式,在一个请求处理的过程中有很多处理者依次对请求进行处理,每个处理者负责做自己相应的处理,处理完之后将再调用下一个处理者继续处理。
Valve表示一个处理点,比如权限认证和记录日志。