12.Servlet的生命周期
1)加载:在下列时刻加载 Servlet:
(1)如果已配置自动加载选项,则在启动服务器时自动加载 (web.xml中 设置
(2)在服务器启动后,客户机首次向 Servlet 发出请求时;
(3)重新加载 Servlet 时(只执行一次)
2)实例化:加载 Servlet 后,服务器创建一个 Servlet 实例。(只执行一次)
3)初始化:调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet 配置对象ServletConfig。 (只执行一次)[因此Servlet是单例的,线程不安全的]
4)请求处理:对于到达服务器的客户机请求,服务器创建针对此次请求的一个“请求”对象和一个“响应”对象。服务器调用 Servlet 的 service() 方法,该方法用于传递“请求”和“响应”对象。service() 方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。service() 方法可以调用其它方法来处理请求,例如 doGet()、doPost() 或其它的方法。(每次请求都执行该步骤)
5)销毁:当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。(只执行一次)