Servlet 生命周期

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

 

初始化阶段

 

 1、初始化阶段步骤:
*Servlet 容器加载 servlet 类,把它的. Class 文件中的数据读到内存 中。

*Servlet 容器创建 servletConfig 对象。servletConfig 对象包含了 servlet 的初始化配置信息。 此外 servlet 容器还会使得 servletConfig 对象与当前的 web 应用的 servletContext 对象关联。

 *Servlet 容器创建 servlet 对象。

 *Servlet 容器调用 servlet 对象的 init(ServletConfig config)方法。


通过初始化步骤,创建了 servlet 对象和 servletConfig 对象,并且 创建了 对象, servlet 对象与 servletConfig 对象关联,而 servletConfig 对象又与当前对象的ServletContext对象关联。当 servlet 容器完成 servlet 后, 前对象的 servletContext 对象关联 servlet 对象只要通过 getServletContext()方法就能得到 web 应用的 servletContext 对象。

2、初始化的情况:

(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 会在特定的时间被重新初始化。



运行阶段

       在这个阶段 sevlet 可以随时响应客户端的请求。 servlet 容器接到访 当 问特定的 servlet 请求时,servlet 容器会创建针对 针对与这个请求的 针对 servletRequest 和 servletResponse 对象,然后调用 service()方法 方法,并把 调用 方法 这 两 个 对 象 当 做 参 数 传 递 给 service() 方 法 。 Service() 方 法 通 过 servletRequest 对 象 获 得 请 求 信 息 , 并 处 理 该 请 求 , 再 通 过 servletResponse 对象生成响应结果。

【不管是 post 还是 get 方法提交,都会在 service 中处理,然后,由 service 来交由相应的doPost 或 doGet 方法处理,如果你重写了 service 方法,就不会再处理 doPost 或 doGet 了, 如果重写 sevice()方法,可以自己转向 doPost()或 doGet()方法】
注:当 servlet 容器把 servlet 生成的响应结果发送给客户后,servlet 容器会销毁 servletRequest 和 sevletResponse对象。



销毁阶段

       当 Web 应用被终止时, servlet 容器会先调用 web 应用中所有的 servlet 对象的 destroy()方法,然后在销毁 servlet 对象。此外容器还会销 毁与 servlet 对象关联的 servletConfig 对象。 在 destroy()方法的实现中,可以释放 servlet 所占用的资源。如关 闭文件输入输出流,关闭与数据库的连接。
注:sevlet 的生命周期中,servlet 的初始化和销毁只会发生一次,因 此 init()和 destroy()方法只能被 servlet 容器调用一次,儿 service() 方法取决与 servlet 被客户端访问的次数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值