tomcat的责任链模式的体现:
当一个request请求过来的时候,需要对这个request做一系列的加工,使用责任链模式可以使每个加工组件化,减少耦合。
也可以在一个request过来的时候,需要找到合适的加工方式。当一个加工方式不适合这个request的时候,传递到下一个加工方法,该加工方式再尝试对request加工。
在tomcat中容器之间的调用,使用的就是责任链的设计模式:
当一个请求过来的时候,首先是engine容器接受请求,然后engine容器会把请求传到host容器,host容器又会传到context容器,context容器传到wrapper容器,最后wrapper容器使用适配请求的servlet来处理请求。
·
·
Container 是tomcat中所有容器的父接口,所有的容器都必须实现这个接口;
Container 容器的设计用的是典型的责任链的设计模式,它有四个子容器组件构成,分别是:Engine、Host、Context、Wrapper;
Wrapper是四大容器最底层的容器,是请求处理的真正容器。与servlet的区别是:wrapper本质并未处理请求,而是加载对应的servlet来处理;
通常一个 Servlet类对应一个 Wrapper,如果有多个 Servlet 就可以定义多个 Wrapper,如果有多个 Wrapper 就要定义一个更高级别的 Container 了,比如 Context。