• Servlet工作过程和生命周期


    Servlet工作过程

    用户请求致使Servlet容器调用Servlet的Service()方法,并传入一个ServletRequest对象和一个ServletResponse对象。ServletRequest对象和ServletResponse对象都是由Servlet容器(例如TomCat)封装好的,并不需要程序员去实现,程序员可以直接使用这两个对象。
    ServletRequest中封装了当前的Http请求,因此,开发人员不必解析和操作原始的Http数据。ServletResponse表示当前用户的Http响应,程序员只需直接操作ServletResponse对象就能把响应轻松的发回给用户。

    servlet中定义的方法

    public interface Servlet {
        void init(ServletConfig var1) throws ServletException;
        ServletConfig getServletConfig();
        void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
        String getServletInfo();
        void destroy();
    }
    
    getServletInfo( ),这个方法会返回Servlet的一段描述,可以返回一段字符串。
        getServletConfig( ),这个方法会返回由Servlet容器传给init( )方法的ServletConfig对象。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Servlet生命周期

    1、实例化Servlet对象
    默认:客户端首次发送请求的时候(在使用对应的servlet时)才会进行对象的创建。
    特殊:有时我们需要某个servlet随着容器加载时就创建servlet对象,而不是在使用时才创建。这是就可以通过设定servlet对应的优先级来决定servlet实例化的时机

    2.初始化阶段 :init()
    加载和实例化完成后,Servlet 容器会创建一个servlet对象并调用servlet的init( ServletConfig var1)方法(在servlet生命周期内只能调用一次init方法)去初始化 Servlet 实例。init方法的作用就是初始化一些配置参数(比如编码设置),并写这些参数贯穿整个servlet生命周期
    其中的ServletConfig参数对象携带了该servlet的配置信息,比如初始化参数,此ServletConfig参数由服务器创建。 参数通过 ServletConfig类提供的 getInitParameter(String name) 获取初始化参数
    (初始化失败后,执行init()方法抛出ServletException异常,Servlet对象将会被垃圾回收器回收)

    3.运行阶段:service()
    在这个阶段sevlet可以随时响应客户端的请求。当servlet容器接到访问特定的servlet请求时,servlet容器会创建针对与这个请求的servletRequest和servletResponse对象,然后调用service()方法,并把这两个对象当做参数传递给service()方法。由service根据请求类型交给doGet doPost方法。当servlet容器将生成的响应结果发送给客户端的时候,servlet容器就会销毁servlrtrequest对象和servletreaponse对象

    4.销毁阶段
    当Web应用被终止时,servlet容器会先调用web应用中所有的servlet对象的destroy ()方法,然后再销毁servlet对象。此外容器还会销毁与servlet对象关联的servletConfig对象
    在destroy ()方法的实现中,可以释放servlet所占用的资源。 Servlet可以释放掉所有在init方法申请的资源。如关闭文件输入输出流,关闭与数据库的连接。

  • 相关阅读:
    解放你的项目!depcheck:清理无用依赖,让代码更精致
    【MySQL篇】第四篇——数据类型
    JS——利用JS实现 tab 切换详解
    kubernetes CNI(Container Network Inferface)
    Kafka - 主题Topic与消费者消息Offset日志记录机制
    ThreadLocal保存用户信息
    1、k8s问题pod从service中剔除
    HummerRisk V0.5.2:升级对象存储、云检测、云审计和K8s资源态势等
    面试系列MySql:谈谈B树、B+树的原理及区别
    什么是Rare Apepe Yacht Club NFT?
  • 原文地址:https://blog.csdn.net/weixin_45511599/article/details/126156634