- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
1. 什么是生命周期?
所谓的生命周期,指的是servlet容器如何创建servlet组件对象,为其分配资源,调用其方法以及销毁其实例的整个过程。
2.四个阶段
-
实例化
默认情况下,当请求到达容器时,容器会先检查容器当中是否有该对象,如果没有,则创建该servlet组件对象,如果有,则不创建。通过
<load-on-startup>1</load-on-startup>配置可以提前实例化servlet对象,参数值>=0整数,数值越小,优先级越高。 -
初始化
容器为servlet分配资源,调用init(ServletConfig config)方法,init方法只会被调用一次,GenericServlet重写了init方法,该方法会将容器创建好的ServletConfig对象赋值给当前类的成员变量,便于子类获取ServletConfig对象,通过该对象的getInitParameter(String name)方法可以获取初始化参数值。
配置初始化参数:
<init-param> <param-name>version</param-name> <param-value>1.0</param-value> </init-param>注意:可以覆盖父类的init方法,
一:init(ServletConfig config)
二:init()(建议)
-
就绪
容器收到了客户端的请求,开始调
用service(ServletRequest req,ServletResponse res)方法,service方法会被调用多次,可以覆盖。方式一:覆盖
service(HttpServletRequest req,HttpServletResponse res)(建议)方式二:根据请求方式覆盖doGet()或者doPost()方法
-
销毁
容器会根据自身的算法,将不再使用的servlet组件对象销毁,销毁之前,调用destroy方法