Servlet是服务器端小程序,因此生命周期受web容器(也可看作是服务器)的控制。
Servlet的生命周期分:加载程序、初始化、服务、销毁、卸载5个部分。
a.加载Servlet (构造方法)
Web容器负责加载Servlet,当WEB容器启动时或第一次使用SERVLET时,容器会负责创建Servlet实例(需配置web.xml指定servlet的位置),成功加载后,web容器会通过映射的方式对Servlet进行实例化。
b.初始化 (init()方法)
当servlet被实例化后,容器将调用init()方法初始化这个对象。
初始化包括建立数据库连接、读取源文件信息等。
如初始化失败,则此Servlet将被直接卸载(注意,不是直接销毁,而是直接卸载)。
c.处理服务 (service()方法)
当有请求提交时,servlet调用service()方法(常用的有doGet()和doPost())进行处理。
在service()中,可通过ServletRequest接收客户的请求,也可通过ServletResponse响应客户信息。
d.销毁 destory()
当WEB容器关闭或检测到一个Servlet要从容器中被删除时,会自动调用destory()方法,释放实例所占用的资源。(注意:销毁servlet实例,并不是删掉了servlet实例)
e.卸载
在销毁后,该实例将等待被垃圾收集器回收,如在被回收前再次使用此servlet,会重新用init()方法初始化。
需要提醒的是:
在正常情况下,Servlet只会初始化一次,而处理服务会调用多次,销毁也只会调用一次。但如果一个servlet长时间不使用,也会被容器自动销毁,而如果需要再次使用时会重新进行初始化的操作,即在特殊情况下初始化可能会进行多次,销毁也可能进行多次。