TOMCAT结构
Tomcat 的心脏是两个组件:Connector连接器 和 Container容器
一个Container可以选择对应多个Connector。Connector组件是可以被替换,这样可以提供给服务器设计者更多的选择,
多个 Connector 和一个 Container 就形成了一个 Service,Service 还要一个生存的环境,那就非 Server 莫属了。所以整个 Tomcat 的生命周期由 Server 控制。
Container 是容器的父接口,所有子容器都必须实现这个接口,Container 容器的设计用的是典型的责任链的设计模式,它有四个子容器组件构成,分别是:Engine、Host、Context、Wrapper,这四个组件不是平行的,而是父子关系,
Engine 包含 Host,Host 包含 Context,Context 包含 Wrapper。
Engine 容器比较简单,它只定义了一些基本的关联关系
Host是Engine的字容器,一个Host在Engine中代表一个虚拟主机,这个虚拟主机的作用就是运行多个应用,它负责安装和展开这些应用,并且标识这个应用以便能够区分它们。
它的子容器通常是Context,它除了关联子容器外,还有就是保存一个主机应该有的信息。
Context代表Servlet的Context,它具备了Servlet运行的基本环境,理论上只要有Context就能运行Servlet了。简单的Tomcat可以没有Engine和Host。
Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。容器如何处理一个请求
1.client发送一个http请求给容器,映射给了一个sevlet
2.容器根据请求创建了两个对象httpsrequest和httpresponse
3.容器根据url地址寻找一个正确的servlet,为其创建一个线程,将request对象和response对象,传递给目标servlet
4.容器会调用servlet的service()方法,根据请求的method的属性的提交方式,调用doGet()和doPost()方法
5.这里面使用了doPost()方法生成动态页面,并将页面封装到response的对象中
6.servlet的处理结束,容器将response对象数据,转换为http响应格式,发送给客户端,然后删除request和response对象