qidao123.com技术社区-IT企服评测·应用市场

标题: Servlet p2 Servlet的生命周期 [打印本页]

作者: 南飓风    时间: 2023-6-28 16:59
标题: Servlet p2 Servlet的生命周期
学习课程: 【这可能是B站讲的最好的Servlet教程,5小时打通Servlet全套教程丨2022最新版,轻松掌握servlet基础+案例实操】 https://www.bilibili.com/video/BV1Kr4y1V7ZE/?share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e0549e
Servlet的生命周期

基本介绍

​        Servleti没有main()方法,不能独立运行,它的运行完全由Servlet引擎来控制和调度。所谓生命周期,指的是servlet容器何时创建servlet实例、何时调用其方法进行请求的处理、何时并销毁其实例的整个过程。
上述的生命周期可以通过Servlet中的生命周期方法来观察。在Servlet中有三个生命周期方法,不由用户手动调用,而是在特定的时机有容器自动调用,观察这三个生命周期方法即可观察到Servlet的生命周期。
方法介绍

Servlet的生命周期,简单的慨括这就分为四步:servlet类加载->实例化->服务->销毁。下面我们描述一下Tomcat与Servlet是如何工作的,看看下面的时序图:

代码演示:
  1. package com.xxxx.servlet;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.annotation.WebServlet;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import java.io.IOException;
  8. @WebServlet("/ser05")
  9. public class servlet05 extends HttpServlet {
  10.     /**
  11.      * 就绪/服务方法(处理请求数据)
  12.      * 系统方法,服务器自动调用,
  13.      * 当有请求到达Servlet时,就会调用该方法
  14.      * 方法可以被多次调用
  15.      * @param req
  16.      * @param resp
  17.      * @throws ServletException
  18.      * @throws IOException
  19.      */
  20.     @Override
  21.     protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  22.         System.out.println("Servlet被调用...");
  23.     }
  24.     /**
  25.      * 初始化方法
  26.      * 系统方法,服务器自动调用,它在第一次创建 Servlet对象 时被调用
  27.      * 当请求到达Servlet容器时,Servlet容器会判断该Servlet对象是否存在,如果不存在,则创建实例,并调用该方法初始化
  28.      * 该方法在生命周期中只会执行一次
  29.      * @throws ServletException
  30.      */
  31.     @Override
  32.     public void init() throws ServletException {
  33.         System.out.println("Servlet被创建了,初始化...");
  34.     }
  35.     /**
  36.      * 销毁方法
  37.      * 系统方法,服务器自动调用,在 Servlet 生命周期结束时被调用
  38.      * 当服务器关闭或应用程序停止时,调用该方法
  39.      * 方法在生命周期中只会调用一次
  40.      */
  41.     @Override
  42.     public void destroy() {
  43.         System.out.println("Servlet被销毁了...");
  44.     }
  45. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4