Servlet基础(二) Servlet的生命周期

时间:2022-06-09 12:41:42

Servlet基础(二) Servlet的生命周期

  Servlet的生命周期可以分为三个阶段:

  1.初始化阶段

  2.响应客户请求阶段

  3.终止阶段

Servlet的初始化阶段

  在下列时刻Servlet容器装载Servlet:

  1.Servlet容器启动时自动装载某些Servlet。

  2.在Servlet容器启动后,客户首次向Servlet发出请求。

  3.Servlet的类文件被更新后,重新装载Servlet。

  Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。

  在Servlet的整个生命周期中,init方法只会被调用一次

Servlet对象何时被创建?

  默认情况下,当Web客户第一次请求访问某个Servlet时,Web容器创建这个Servlet的实例。

  但web.xml中如果设置了<servlet>元素的<load-on-startup>子元素,Servlet容器在启动Web应用时,将按照指定的顺序(元素值从小到大)创建并初始化这个Servlet。

  如下:

    <servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.shengqishiwind.servlet.MyServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>

  注:<servlet-mapping>提供了URL向servlet元素的映射,如下:

    <servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

  但有些时候某些Servlet在web.xml中没有 <servlet-mapping>,只有  <servlet>标签,即不能通过URL直接访问。

  它们是用来做什么的呢?

  答案是:

  它们会被用来做一些全局性的初始化工作。

  这种Servlet在元素中加入<load-on-startup>子元素,在启动Web应用时,这些Servlet会被自动加载,其中的init方法会被调用,完成一些初始化工作。

Web应用何时被启动?

  当Servlet容器启动时,会启动所有的Web应用。

  通过控制台启动Web应用。

Servlet的响应客户请求阶段

  对于到达Servlet容器的客户请求,Servlet容器创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service方法。

  service方法从ServletRequest对象获得客户请求信息、处理该请求,并通过ServletResponse对象向客户返回响应结果。

Servlet的终止阶段

  当1)Web应用被终止,或2)Servlet容器终止运行,或3)Servlet容器重新装载Servlet的新实例时,Servlet容器会先调用Servlet的destroy方法。

  在destroy方法中,可以释放Servlet所占用的资源。

参考资料

  圣思园张龙老师Java Web视频教程。