• Servlet的生命周期


    Servlet的生命周期

    servlet的生命周期顾名思义就是从servlet出现到消亡(销毁)的全过程。

    主要分为以下几个阶段:
    加载类—>**实例化(**为对象分配空间)—>初始化(为对象的属性赋值)—>请求响应(服务阶段)—>销毁

    servlet生命周期三个方法:

    init()初始化阶段

    service()处理客户端请求阶段

    destroy()终止阶段

    容器(tomcat等)装载servlet

    实例化阶段

    1.1 当客户端首次发送第一次请求后,由Servlet容器去解析请求,根据请求找到是否有对应的servlet。
    1.2 判断是否有Servlet实现类的对象存在?存在则直接使用,不存在则先创建一个servlet实现类的对象。

    初始化阶段

    Servlet 初始化是其生命周期的第一个阶段,也是其他阶段的基础。只有完成了初始化,Servlet 才能处理来自客户端的请求。

    Servlet 初始化阶段分为 2 步:

    1. 加载和实例化 Servlet;
    2. 调用 init() 方法进行初始化

    1.加载和实例化

    Servlet 容器负责加载和实例化 Servlet。

    当容器启动或首次请求某个 Servlet 时,容器会读取 web.xml (配置load-on-startup=1,默认为0)或 @WebServlet 中的配置信息,对指定的 Servlet 进行加载。加载成功后,容器会通过反射对 Servlet 进行实例化。

    2.调用 init() 方法进行初始化

    加载和实例化完成后,Servlet 容器会创建一个servlet对象并调用servlet的init方法(在servlet生命周期内只能调用一次init方法)去初始化 Servlet 实例。

    请求响应阶段

    初始化完成后调取service()方法,由service()判断客户端的请求方式。
    3.1 如果是get请求,则执行doGet()方法。
    3.2 如果是post请求,则执行doPost()。
    3.3 处理方法完成后会作出相应的结果返回给客户端,单次请求处理完毕。

    当用户发送第二次以后的请求时,会判断对象是否存在,但是不再执行init(),而直接执行service方法调取doGet() / doPost()方法。

    服务终止阶段

    当服务器关闭,重启或移除 Servlet 实例时Servlet调取destroy()方法进行销毁,宣告生命周期的结束。

    public class EmpServlet extends HttpServlet{
    //初始化servlet,调用init方法

    public void init() throws ServletException {
    System.out.println(“初始化时调用”);
    }
    //开启服务

    protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
    System.out.println(“开启服务时调用”);
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
    //销毁时调用destory

    public void destroy() {
    System.out.println(“销毁时调用”);
    }
    }

  • 相关阅读:
    吴恩达机器学习 第一课 week2 基于Scikit-Learn的线性回归
    阿里面试官:聊聊如何格式化Instant
    适配器模式 ( Adapter Pattern )(6)
    宝塔自建bitwarden密码管理器
    c语言入门---自定义类型:结构体,枚举,联合
    git项目迁移到新仓库,且保留原项目的历史记录
    【vue设计与实现】组件的实现原理 4 - setup函数的作用与实现 & 组件事件与emit的实现
    UDP用户数据报协议
    安装和使用
    删除的通话记录也能找回!如何iPhone很早以前的通话记录
  • 原文地址:https://blog.csdn.net/m0_67402914/article/details/126040509