servlet生命周期
什么是Servlet生命周期?
容器如何去管理servlet的创建、初始化、调用以及销毁的整个过程
- 创建
- 初始化
- 调用
- 销毁
生命周期分成哪几个阶段?
- 实例化(创建)
- 初始化(容器调用servlet对象的init方法。)
- 就绪(调用)
- 销毁
- 实例化(创建)
容器创建servlet实例(对象)
什么时候实例化?
- 情形1:容器收到请求之后。
- 情形2:容器启动之后,立即创建。(需要配置load-on-startup)
<servlet>
<servlet-name>someServlet</servlet-name>
<servlet-class>web.SomeServelt</servlet-class>
<!-- 值是一个大于等于0的整数,值越小,越优先被创建 -->
<load-on-startup>1</load-on-startup>
</servlet>
注:容器在默认情况下,只会创建一个实例。
注:如果要扩展GenericServlet的init方法,可以在自己的servlet中重写init方法,用来扩展初始化方法
- 初始化
容器调用servlet对象的init方法。
注:GenericServlet提供了init方法,HttpServlet是GenericServlet的子类。
注:init方法只会执行一次。
注:可以通过ServletConfig对象读取初始化参数。
- 就绪(调用)
容器收到请求之后,调用servlet对象的service方法。
HttpServlet提供了service方法的实现(空的实现),需要我们去覆盖。(也可以覆盖HttpServlet的doGet方法和doPost方法)
- 销毁
容器在删除Servlet对象之前,会调用该对象的destroy方法。(该方法只会执行一次)
GenericServlet提供了destroy方法。可以override该方法。
- Servlet接口
- GenericServlet抽象类
- HttpServlet抽象类