`
wuhaidong
  • 浏览: 351160 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

解读Servlet生命周期

    博客分类:
  • WEB
阅读更多

Servlet 的生命周期是由servlet 的容器来控制的。分为3个阶段:初始化阶段,运行阶段,销毁阶段。

 

初始化阶段:

 

  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 对象与servletCongfig 对象关联,而servletConfig 对象又与当前对象的 servletContext 对象关联。当servlet 容器完成servlet 后,servlet 对象只要通过 getServletContext() 方法就能得到 web 应用的servletContext 对象。

 

*注: servlet 初始化的情况:

 

(1)当web 应用处于运行阶段时,特定的servlet 被客户端首次请求访问。

(2)在web.xml 文件中servlet 设置了<load-on-startup>元素

<servlet>

<servlet-name>servlet1</servlet-name>

<servlet-class>servlet.servlet1</servlet-class>

<load-on-startup>0</load-on-startup>

</servlet>

 

  说明:

 

  在servlet 的配置当中,<load-on-startup>5</load-on-startup>的含义是:
 

  标记容器是否在启动的时候就加载这个servlet。

 

  当值为 0 或者 大于 0 时,表示容器在应用启动时就加载这个容器这个servlet;

 

  当时一个负数时或者没有指定时,则指示容器在该servlet 被选择时才加载。

 

 正数的值越小,启动该servlet的优先级越高。

 

(3)当web 应用被重新启动时,web 应用中的所有servlet 会在特定的时间被重新初始化。

 

运行阶段:

 

在这个阶段servlet 可以随时响应客户端的请求。当servlet 容器接到访问特定的 servlet 请求时,servlet容器会

 

创建针对与这个请求的servletRequest和servletResponse 对象,然后调用 service 方法,并把这连个对象当做参数

 

传递给 service() 方法。service() 方法通过servletRequest 对象获取请求信息,并处理该请求,再通过

 

servletResponse 对象生成响应结果。

 

 

* 注: 当servlet 容器把 servlet 生成的响应结果发送客户后,servlet 容器会销毁 servletRequest 和

 

servletResponse 对象。

 

 

销毁阶段:

 

当 Web 应用被终止时,servlet 容器会先调用 web 应用中所有的 servlet 对象的 destroy() 方法,然后在销毁

 

servlet 对象。此外容器还会销毁与 servlet 对象关联的 servletConfig 对象。

 

在destroy() 方法的实现中,可以释放servlet 所占用的资源。如关闭文件输入输出流,关闭与数据库的连接。

 

* 注: servlet 的生命周期中, servlet 的初始化和销毁只会发生一次,因此 init() 和 destroy() 方法只

 

能被servlet容器调用一次,而service() 方法取决于servlet 被客户端访问的次数

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics