Servlet的生命周期
- 服务器加载Servlet
- 服务器创建Servlet实例
- 调用Servlet实例的init()方法
- 收到请求,调用service()方法
- service()方法处理请求并将输出结果返回客户端
- Servlet等待下一个请求或由服务器卸载
- Servlet在服务器调用destroy()方法后被卸载
一、实例化
容器调用servlet的构造器,创建一个servlet对象。
注:容器在默认情况下,不管收到多少个请求,只会创建一个servlet对象。
什么时候实例化?
情况1: 收到请求之后,才进行实例化操作。
情况2: 容器在启动之后,事先创建好servlet对象。需要配置:
<load-on-startup>大于等于0的整数值越小,优先级越高(优先级高的会先被创建)。
二、初始化
容器在创建好servlet对象之后,会立即调用该对象的init方法。
Servlet如何实现自已的初始化处理逻辑
1、GenericServlet已经提供了init方法的实现(将容器传递进来的ServletConfig对象保存下来了)。
2、如果要实现自已的初始化处理逻辑,只需要override init()方法。
init方法只会执行一次。
初始化参数的使用
step1,使用<init-param>配置初始化参数,
比如:
<init-param> <param-name>company</param-name> <param-value>sun</param-value> </init-param>
step2,
ServletConfig.getInitParameter("company");
三、就绪
容器收到请求之后,会调用servlet对象的service方法来处理请求。
如何实现自已的业务处理逻辑?
1、HttpServlet已经实现了service方法。
2、HttpServlet的service方法是这样实现的:
依据请求方式调用对应的doGet/doPost方法。
doGet/doPost需要开发人员去override。
3、实现业务处理逻辑?
方式一: override HttpServlet的doGet,doPost方法。
方式二: override HttpServlet的service方法。
四、销毁
容器在删除servlet对象(即Remove deployment)之前,会调用该对象的destroy方法。
destory方法只会执行一次。
destory方法一般用于释放资源。