Servlet生命周期

时间:2020-01-09 10:36:23  来源:igfitidea点击:

Servlet遵循一定的生命周期。 Servlet生命周期由Servlet容器管理。生命周期包含以下步骤:

  • 加载Servlet类。
  • 创建Servlet实例。
  • 调用servlet的init()方法。
  • 调用servlet的service()方法。
  • 调用servlet的destroy()方法。

最初加载servlet时,步骤1、2和3仅执行一次。默认不加载的servlet,直到接收到它的第一个请求。不过,我们可以在容器启动时强制容器加载servlet。见web.xml中Servlet的配置有关的更多细节。

对于向Servlet发出的每个HTTP请求,步骤4将执行多次。当servlet容器卸载servlet时,执行步骤5.

加载Servlet类

在可以调用servlet之前,servlet容器必须首先加载其类定义。就像加载任何其他类一样完成此操作。

创建Servlet实例

加载servlet类时,servlet容器将创建servlet的实例。

通常,仅创建一个单一的servlet实例,并在同一servlet实例上执行对servlet的并发请求。不过,这实际上取决于servlet容器。但通常只有一个实例。

调用Servlets init()方法

创建一个servlet实例时,将调用它的init()方法。 init()方法允许Servlet在处理第一个请求之前对其进行初始化。

我们可以在web.xml文件中为servlet指定初始化参数。有关更多详细信息,请参见web.xml Servlet配置。

调用Servlets service()方法

对于每个接收到的servlet的请求,都会调用servlet的service()方法。对于HttpServlet子类,通常调用doGet(),doPost()等方法之一。

只要Servlet在Servlet容器中处于活动状态,就可以调用service()方法。因此,生命周期中的此步骤可以多次执行。

调用Servlet destroy()方法

当一个servlet容器卸载一个servlet时,它的destroy()方法被调用。该步骤仅执行一次,因为servlet仅卸载一次。

如果容器关闭,或者容器在运行时重新加载了整个Web应用程序,则该容器将卸载Servlet。