Servlet的生命周期
什么是Servlet的生命周期
- Servlet容器如何创建Servlet对象,如何对该对象进行初始化处理,如何调用该对象的方法来处理请求,以及销毁该对象的整个过程.
Servlet的生命周期分成哪几个阶段
1)实例化
- 什么是实例化?
容器调用Servlet的构造器,创建Servlet对象
- 什么时候实例化?
1. 容器收到请求之后才创建相应的实例
2. 容器启动后,立即创建相应的实例(需要额外的配置)
- 对于某个Srevlet,容器只会创建一个实例
2)初始化
- 什么是初始化?
容器调用Servlet对象的init方法.
- GenericServlet已经提供了init方法的实现
会将容器传递过来的ServletConfig对象保存下来,并且提供了一个方法(getServletConfig)来获得该对象
如果要扩展(实现自己的)init()(初始化)处理逻辑,只需要override GenericServlet 的init()方法
实例化之后立刻初始化
- 初始化参数
- 配置初始化参数
<!-- 配置初始化参数 -->
<init-param>
<param-name>company</param-name>
<param-value>钱多多</param-value>
</init-param>
<init-param>
<param-name>address</param-name>
<param-value>合肥</param-value>
</init-param>
- 调用ServletConfig提供的getInitParameter来读参数
3)就绪(调用)
- 什么是就绪
容器调用Servlet对象的service方法来处理请求
- HttpServlet已经提供了service方法的实现
该方法依据请求类型(get/post)调用对应的doXxx()方法
doXxx()方法只是抛出了一个异常
开发人员有两个选择:
1. override HttpServlet的doXxx()
2. override HttpServlet的service()
4)销毁
相关的接口与类
Servlet接口
- init(ServletConfig config)
- service(ServletRequest req,ServletResponse resp)
- destroy()
GenericServlet抽象类
- 实现了Servlet接口中的部分方法(init,destroy)
HttpServlet抽象类
- 继承了GenericServlet,实现了service()