Servlet容器:
我们以大家最为熟悉的Tomcat为例来介绍Servlet容器时如何管理Servlet的。
Tomcat容器分为4个等级,真正管理Servlet的容器是Context容器,一个Context容器对应一个Web工程。
Servlet容器的启动过程:
从添加一个web应用说起,当添加一个web应用时,将会创建一个StandardContext容器,并且给这个Context容器设置必要的参数,url和path分别代表这个应用在Tomcat中的访问路径和这个应用实际的物理路径。最后将这个Context容器加到父容器Host中。
接下来会调用Tomcat的start方法启动Tomcat。Tomcat的启动逻辑基于观察者模式设计的,所有的容器都会继承Lifecycle接口,它管理着容器的整个生命周期,所有容器的修改和状态的改变都会由它去通知已经注册的观察者(Listener)。
当Context容器初始化状态设为init时,添加到Context容器的Listener将会被调用。
Web应用的初始化工作:
应用的初始化主要是解析web.xml文件,这个文件描述了一个web应用的关键信息,也是一个Web应用的入口。web.xml文件中的各个配置项将会被解析成相应的属性保存在WebXml对象中。
最后,将Servlet包装成StandardWrapper并作为子容器添加到Context中,其他所有的web.xml属性都被解析到Context中。
所以说Context容器才是真正运行Servlet的Servlet容器。一个Web应用对应一个Context容器,容器的配置属性由应用的web.xml指定。
Serlvet体系结构:
与Serlvet主动关联的是三个类&#x