Servlet的生命周期
Servlet的生命周期
当web容器接收到从浏览器发送过来的请求时,web容器会调用相应的servlet程序去处理这些请求。
servlet对象的生命周期分为:
- 初始化:若这个servlet程序是第一次被调用,那么init()方法会被调用来完成初始化。
- 调用:如果servlet对象已经被初始化,那么就会调用service()方法来处理这些请求。
- 销毁:当服务器关闭的时候,此servlet对象会被销毁。
public class ServletLife extends HttpServlet {
//当第一次调用这个service时,调用init()方法来完成初始化
@Override
public void init() throws ServletException {
super.init();
System.out.println("加载servlet对象");
}
//servlet对象存在,web容器使用这个servlet处理请求时,调用service()方法.
// servlet对象只会创建一个,当多个request请求同时请求一个servlet对象的时候,web容器分别对这些请求创建线程。
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
super.service(req, res);
System.out.println("当使用这个servlet处理请求时,调用此方法");
}
//当服务器关闭时,调用destroy()方法
@Override
public void destroy() {
super.destroy();
System.out.println("服务器关闭,此servlet对象销毁。");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().println("servlet的生命周期");
}
//当第一次向这个servlet发送请求时,init()方法被调用,然后调用service()方法来处理请求.
Connected to server
[2020-11-16 08:05:42,620] Artifact servlet:war exploded: Artifact is being deployed, please wait...
16-Nov-2020 20:05:43.379 警告 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[463]毫秒。
[2020-11-16 08:05:43,402] Artifact servlet:war exploded: Artifact is deployed successfully
[2020-11-16 08:05:43,402] Artifact servlet:war exploded: Deploy took 782 milliseconds
加载servlet对象
当使用这个servlet处理请求时,调用此方法
//当关闭服务器的时候,会调用destory()来销毁此servlet对象
Using CATALINA_OPTS: ""
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
16-Nov-2020 20:07:27.217 信息 [main] org.apache.catalina.core.StandardServer.await 通过关闭端口接收到有效的关闭命令。正在停止服务器实例。
16-Nov-2020 20:07:27.218 信息 [main] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"]
16-Nov-2020 20:07:27.688 信息 [main] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
服务器关闭,此servlet对象销毁。
注意: servlet对象只会创建一个,当多个request请求同时请求一个servlet对象的时候,web容器分别对这些请求创建线程。

浙公网安备 33010602011771号