Servlet 的生命周期

概要(摘自 《Tomcat 与 Java Web 开发技术详解》)

Java Web 应用的生命周期由Servlet容器来控制,而 Servlet 作为 Java Web 应用的最核心的组件,其生命周期也由 Servlet 容器来控制。Servlet 的生命周期可以分为3阶段:1. 初始化阶段 2. 运行时阶段 3. 销毁阶段。

在javax.servlet.Servlet 接口中定义了3个方法:init(),service(),destroy(),他们将分别在 Servlet 的不同阶段被Servlet容器调用。

一、初始化阶段

(1)Servlet 容器加载 Servlet 类, 把它的 .class 文件中的数据读到内容中。
(2)Servlet 容器创建 ServletConfig 对象。ServletConfig 对象包含了特定 Servlet 的初始化参数。此外 Servlet 容器还会是的ServletConfig 对象与当前 Web 应用的 ServletContext 对象关联。
(3)Servlet 容器创建 Servlet 对象。
(4)Servlet 容器调用 Servlet 对象的 init(ServletConfig config) 方法。

以上初始化步骤创建了 Servlet 对象和 ServletConfig 对象,并且 Servlet 对象与 ServletConfig 对象关联,而 ServletConfig 对象又与当前 Web 应用 ServletContext 对象关联。当 Servlet 容器初始化完 Servlet 后,Servlet 对象只要通过 getServletContext() 方法就能得到 Web 应用的 ServletContext 对象。

在下列情况之一,Servlet 会进入初始化阶段。

(1)当前 Web 应用处于运行时阶段,特定的 Servlet 被客户端首次请求访问。多数 Servlet 都会在这种情况下被 Servlet 容器初始化。
(2)如果在 Web.xml 文件中为一个 Servlet 设置了 元素,那么当 Servlet 容器启动 Servlet 所属的 Web 应用时,就会初始化这个 Servlet。
(3)当 Web 应用被重新启动时, Web应用中所有的 Servlet 都会在特定的时刻被重新初始化。

二、运行时阶段

这是 Servlet 的生命周期中的最重要阶段。在这个阶段中,Servlet 可以随时响应客户端的请求。当 Servlet 容器接收到要求访问特定 Servlet 的客户请求是,Servlet 容器会创建针对这个请求的 ServletRequest 对象和 ServletResponse 对象,然后调用相应的 Servlet 对象的 service() 方法。service() 方法从 ServletRequest 对象中获得客户请求信息并处理该请求,再通过 ServletResponse 对象生成响应结果。
当 Servlet 容器把 Servlet 生成的响应结果发送给了客户, Servlet 容器就会销毁 ServletRequest 对象和 ServletResponse 对象。

三、销毁阶段

当 Web 应用被终止时,Servlet 容器会先调用 Web 应用中所有 Servlet 对象的 destroy() 方法,然后再销毁这些 Servlet 对象。在 destroy() 方法的实现中,可以释放 Servlet 所占用的资源(例如关闭文件输入流和输出流, 关闭与数据库的连接等)。
此外,容器还会销毁与 Servlet 对象关联的 ServletConfig 对象。

你可能感兴趣的:(JAVA,Web)