Java Servlet教程—Servlet 的生命周期
Servlet 的生命周期(Servlet 生命周期)
Web 容器维护着 servlet 实例的生命周期。让我们来看一下 servlet 的生命周期:
- 加载 Servlet 类。
- 创建 Servlet 实例。
- 调用 init 方法。
- 调用 service 方法。
- 调用 destroy 方法。
如上图所示,servlet 有三种状态:新建、就绪和结束。如果创建了 servlet 实例,则 servlet 处于新建状态。调用 init() 方法后,servlet 进入就绪状态。在就绪状态,servlet 执行所有任务。当 web 容器调用 destroy() 方法时,它转换到结束状态。
1) 加载 Servlet 类
类加载器负责加载 servlet 类。当 web 容器接收到 servlet 的第一个请求时,会加载 servlet 类。
2) 创建 Servlet 实例
加载 servlet 类之后,web 容器会创建 servlet 实例。在 servlet 的生命周期中,servlet 实例只创建一次。
3) 调用 init 方法
创建 servlet 实例之后,web 容器只调用一次 init 方法。init 方法用于初始化 servlet。它是 javax.servlet.Servlet 接口的生命周期方法。init 方法的语法如下所示:
**public** **void** init(ServletConfig config) **throws** ServletException
4) 调用 service 方法
每次接收到 servlet 的请求时,web 容器都会调用 service 方法。如果 servlet 未初始化,它会先执行上述前三个步骤,然后调用 service 方法。如果 servlet 已初始化,则直接调用 service 方法。注意,servlet 只初始化一次。Servlet 接口的 service 方法的语法如下所示:
**public** **void** service(ServletRequest request, ServletResponse response)
**throws** ServletException, IOException
5) 调用 destroy 方法
在从服务中移除 servlet 实例之前,web 容器会调用 destroy 方法。它为 servlet 提供了清理任何资源(例如内存、线程等)的机会。Servlet 接口的 destroy 方法的语法如下所示:
**public** **void** destroy()