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时
具体什么时候加载需要通过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的生命周期中只执行一次