servlet生命周期大致有四个过程,每个过程都对应有特殊的生命周期方法:
装载&实例化————构造方法
初始化————————init() 只调用一次,并且在service()之前完成
处理请求———————service() 处理客户的请求,即在doGet doPost之后均需执行(举例:把验证码模块放置到service中,不管用户走的是get还是post都需要输入验证码)每个请求都在单独的线程中完成,可多次调用
销毁——————————destroy() 只调用一次,通常在停止WEB应用或者是Web应用重启时
1)实例化(两种时机):
A.配置了元素,启动应用时实例化
其中,配置数值从1开始,值越小,载入的优先级越高。
B.如果没有配置,则在第一次请求时才实例化
2)初始化——init()/init(ServletConfig config)
实例化之后,容器马上调用init()方法来初始化。
对 Servlet 将要使用的资源作初始化,如读入配置文件信息等(只执行一次)。
在初始化过程中,容器会创建 ServletConfig 对象并把它作为 init 方法的参数传入。
该配置对象允许 servlet 从访问 Web 应用的配置信息中读取出初始化参数的名称和值。
Servlet 提供2个初始化方法: init() 和 init(ServletConfig config) 。
3)请求处理——service()
初始化后,容器会调用 servlet 的 service()方法,向客户端提供服务
service()能够被多客户端多次调用(每个请求都要执行一次)
4)销毁——destroy()
在Web Container停止 Web App 或 WebApp 被停止/reload 时调用此方法。