servlet的生命周期是怎样的?
servlet的生命周期
(1)生命周期的含义:
servlet容器如何创建servlet对象、如何初始化、如何
调用servlet对象的方法完成请求处理以及如何销毁servlet
对象的整个过程。
(2)生命周期可以分成四个阶段:
1)实例化:
a,含义:容器调用servlet构造器,创建其对象。
b,什么时候实例化:
第一种情况: 容器在收到请求之后。
第二种情况: 容器在启动之后,会预先创建好一些
servlet对象。要求这些servlet配置load-on-startup
参数。
2)初始化
a,含义: 容器调用servlet对象的init方法(init(ServletConfig)),
初始化是在实例化之后立即进行的,并且只进行一次。
b, init(ServletConfig config)方法:
容器会事先创建好一个符合ServletConfig接口的对象,
该对象提供了一个getInitParameter方法来获得servlet
的初始化参数(在web.xml文件当中,使用init-param配置的
参数)。
c, 如何实现自已的初始化逻辑
一般只需要override init()方法。
3)就绪
a,含义:容器收到请求之后,会调用servlet对象的
service方法来处理请求。
4)销毁
a,含义:容器依据自身的算法,将不再需要的
servlet对象删除掉,在删除之前,会调用servlet
对象的destroy方法。该方法也只会执行一次。
b,destroy方法一般不需要去override。
(3)跟生命周期相关的几个接口与类
a, Servlet接口
init(ServletConfig config)
service(ServletRequest req,ServletResponse res)
destroy()
b, GenericServlet抽象类
实现了Servlet接口,主要实现了init,destroy方法。
c, HttpServlet抽象类
继承了GenericServlet,主要实现了service方法。
会依据请求方式分别调用doGet,doPost方法(HttpServlet
抽象类的doGet,doPost方法只是抛出了一个异常,需要
子类去override)。
d, ServletConfig接口
//获得servlet的初始化参数。
String getInitParameter(String paraName);