`

Servlet生命周期

阅读更多

归纳起来, Servlet的生命周期分为3个阶段:

初始化阶段:

运行时阶段:

销毁阶段:

 

在下列的情况之一,Servlet会进入初始化阶段:

1  如果在web.xml中为一个Servlet设置了<load-on-startup>,那么当服务器启动时,也会初始化这个Servlet

2  当前Web应用在运行,Servlet被客户端请求,且内存里没有这个Servlet的对象的话,就会初始化这个Servlet

3  Web应用被重新启动时,所有Servlet都会重新初始化

 

二、初始化阶段完成下面的操作:

1  Servlet.class加载到内存

2  创建一个ServletConfig对象[此对象包含了特定Servlet的初始化配置信息,如Servlet初始参数,另外,服务器还    会使得此对象与自己的Web应用的ServletContext对象关联]

3  创建Servlet对象

4  调用Servlet对象的init()方法。建立Servlet对象与ServletContext对象的关联

 

三、运行时阶段:在这个阶段,所有的Servlet都处于待命状态,随时可以响应客户端的特定请求

1  当有用户请求时,若Servlet未被初始化,则执行上面的初始化,若有则执行2

2  服务器把客户端请求包装到ServletRequest,同时创建ServletResponse,调用service方法

3  service方法调用doXXX()方法,通过ServletResponse响应客户

4  响应结果发送完毕后,销毁ServletRequestServletResponse对象

 

销毁阶段:

整个生命周期,销毁只会发生一次。[但是销毁时间是不确定的?]

1  当应用被终止时,调用Web应用的destory()方法销毁所有Servlet对象[那些未被垃圾回收的那些吧]

2  销毁与Servlet对象关联的ServletConfig对象。

[Servlet到底是什么时候被销毁的呢?有垃圾回收的吧?]

 

 

注意:

ServletContext      对应              一个Web应用

ServletConfig         对应              一个Servlet对象

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics