归纳起来, 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 响应结果发送完毕后,销毁ServletRequest和ServletResponse对象
四、销毁阶段:
整个生命周期,销毁只会发生一次。[但是销毁时间是不确定的?]
1 当应用被终止时,调用Web应用的destory()方法销毁所有Servlet对象[那些未被垃圾回收的那些吧]
2 销毁与Servlet对象关联的ServletConfig对象。
[Servlet到底是什么时候被销毁的呢?有垃圾回收的吧?]
注意:
ServletContext 对应 一个Web应用
ServletConfig 对应 一个Servlet对象