Servlet生命周期

servlet遵循一定的生命周期,由servlet容器管理。生命周期包含以下过程:

  1. 加载Servlet类
  2. 创建Servlet实例
  3. 调用servlet init()方法
  4. 调用servlet service()方法
  5. 调用servlet destroy()方法

步骤1、2、3只在servlet初始加载时执行一次。默认情况下,servlet在没有收到请求时不会加载。但也可以在容器启动时强制加载servlet,后续内容会有说明。

步骤4会被多次执行 —— servlet每处理一个HTTP请求,都会执行一次service()
步骤5在servlet容器卸载servlet时执行。

servlet生命周期图:

加载Servlet类

在调用servlet前,servlet容器必须首先加载servlet的类定义,这和加载其他类是一样的。

创建Servlet实例

加载servlet类后,servlet容器将创建servlet的一个实例,通常并发请求会在同一个servlet实例上执行。但servlet容器可以决定是否创建多个实例,但一般只有一个实例。

调用servlet init()方法

创建servlet实例时,将调用其init()方法初始化servlet。

可以在web.xml文件中为servlet指定初始化参数,后续会有详细介绍。

调用servlet service()方法

对于收到的每个HTTP请求,容器都会调用servlet service()方法处理请求。对于HttpServlet子类,通常调用doGet()doPost()等方法。

只要servlet容器中的servlet是激活的(没有被destory),就可以调用service()方法,生命周期中的这个步骤可以执行多次。

调用servlet destroy()方法

当servlet容器卸载servlet时,调用其destroy()方法。这个步骤只执行一次,因为servlet只卸载一次。

当容器关闭,或者容器在运行时重新加载整个web应用程序,则由容器卸载servlet。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载