Servlet的生命周期由Servlet容器(例如Tomcat)管理,主要包括以下阶段:
- 加载与实例化 :
-
当Servlet容器启动时,或者当请求到达一个尚未实例化的Servlet时,容器会根据
web.xml
配置文件中的定义或注解来加载并实例化相应的Servlet类。 -
如果
load-on-startup
配置了某个值,Servlet会在服务器启动时加载并实例化。 -
如果没有配置,则Servlet会在第一次请求到达时被加载并实例化。
- 初始化 :
-
在Servlet实例化之后,容器会调用Servlet的
init()
方法进行初始化。该方法只会在Servlet的生命周期中被调用一次,主要用于执行一些初始化操作,例如数据库连接的建立、资源加载等。 -
init()
方法接收一个ServletConfig
对象,该对象包含了Servlet的初始化配置信息。
- 服务(请求处理) :
-
当客户端首次发送请求后,容器会解析请求并找到对应的Servlet。
-
容器会调用Servlet的
service()
方法,该方法会根据请求的类型(如GET或POST)将请求分发到相应的方法(如doGet()
或doPost()
)。 -
service()
方法可以调用doGet()
、doPost()
等方法来处理具体的请求,这些方法可以包含处理请求的逻辑。
- 销毁 :
-
当Servlet容器关闭时,会调用Servlet的
destroy()
方法,用于执行清理操作,例如关闭数据库连接、释放资源等。 -
destroy()
方法在Servlet的生命周期中只被调用一次。
总结起来,Servlet的生命周期包括以下四个阶段:
-
加载与实例化
-
初始化
-
服务(请求处理)
-
销毁
每个阶段都有其特定的方法和配置,确保Servlet能够正确地处理请求并在需要时被清理。