Servlet生命周期

Servlet应用开发接口(抽象层次较高)

init():在Servlet实例化之后,调用Service之前调用init()方法
service():调用此方法允许Servlet响应请求
destroy():当一个Servlet被从服务中去除时,Servlet容器会调用此方法。
getServletConfig():返回一个ServletConfig对象
getServletInfo():允许Servlet向主机的Servlet运行者提供有关信息。返回的字符串应该是纯文本格式

  • GenericServlet抽象类(不限定协议
    实现了Servlet接口
    提供了Servlet接口中除service()方法外4个方法的简单实现
    子类必须实现service()方法
  • HttpServlet抽象类(基于http协议
    继承自GenericServlet
    一般重写doXXX()方法处理业务逻辑/返回响应

Servlet生命周期

  • 加载和实例化:由Servlet容器完成
  • 初始化:实例化Servlet后会调用init方法
  • 处理客户请求:service方法(doGet或doPost)
  • 销毁:销毁之前会调用destroy方法
    Servlet生命周期

Servlet什么时候实例化

  • 在服务器启动加载网站时
  • 第一次访问Servlet时
    具体什么时候加载需要通过web.xml配置文件中,对应Servlet设置项的< load-on-startup >节点进行设置
    – 标记容器是否在启动的时候就加载这个servlet
    – 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet,设置的正数的值越小,启动该servlet的优先级越高
    – 当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载
Servlet对init方法的调用

init(ServletConfig config)方法
– 在加载Servlet实例成功后调用init()方法,一般作一些初始化的工作
– 在一个Servlet的生命周期中只执行一次
– 通过config. getInitParameter(Param)可取得web.xml中的参数

Servlet在什么时候被销毁

  • 服务器关闭
  • 更新、停止Web模块的时候
  • 由Servlet容器根据情况
Servlet对destroy方法的调用

destroy()方法
– 在Servlet实例被销毁之前调用
– 在一个Servlet的生命周期中只执行一次