当web应用启动的时候,we b.xml文件首先被装载,(这里面包含了整个应用的servlet配置信息,以及每个servlet的初始化信息)。同时创建应用的servletContext对象。
servlet的初始化阶段:
一旦一个servlet进入初始化阶段,这是需要客户端首次请求访问或者在web.xml文件中的<load-on-startup>元素中设置了数字(即在应用启动的时候),便开始一系列初始化过程。
1.容器加载servlet.class文件到内存中。
2..class文件装载到内存之后,必然可以获取该servlet的配置信息(位于web.xml文件中的),进而封装称为一个servletConfig对象,此时的servletConfig对象与servlet Context对象关联。
3.接下来是创建servlet对象。也就是实例化一个servlet对象。
4.servlet容器调用servlet对象的init(servletConfig)方法,这使得该对象与servletConfig对象关联。
经过以上的步骤那么,servlet对象与servlet Config对象关联,servletConfig对象又与servletContext对象关联,导致servlet与servlet Context对象关联。那么也就是说在创建了servlet对象之后,servlet对象只要通过getServletContext()方法就能获取到当前应用的servlet Context对象。
运行时阶段:
就是响应客户端请求的一系列过程,通过HttpServletRequest获取请求信息,再通过HttpServletResponse对象生成响应结果。当响应结束之后,那么容器会销毁request/response对象。
销毁阶段:(销毁servletContext对象)
web应用被终止的时候,Servlet容器会先调用web应用中所有servlet对象的destroy()方法,然后再销毁servlet对象。此外容器还会销毁与servlet对象关联的servlet Config对象。
待续~~~~~~~