java中Servlet类的生命周期

     web在Servlet的一次完整的生命周期中(从容器加载Servlet)到服务器关闭,Servlet主要有三个阶段(也即是三个方法)

  • init() 初始化阶段
  • service() 处理客户端请求阶段
  • destroy() 销毁阶段
一、初始化

首先我们从初始化阶段看起:
     web容器在加载Servlet之后就会创建一个Servlet实例并调用init()方法。也即是说,当一个容器中,存在多个Servlet的时候,默认都是不加载的。当所需的Servlet加载的时候就会创建对象并初始化

     例如,当我们在浏览器中访问我的一个Servlet的时候
在这里插入图片描述
     容器就会加载该Servlet并调用默认的无参构造器创建对象和初始化

     此外,我们还可以通过在web.xml配置文件添加<load-on-startup>标签来使该Servlet类在容器初始化之后默认加载并自由调整顺序

     下面,我们创建三个Servlet类分别为LifeCycleServlet1,LifeCycleServlet2,LifeCycleServlet3来实验,配置文件如下

  <servlet>
        <servlet-name>LifeCycleServlet</servlet-name>
        <servlet-class>包名.LifeCycleServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>LifeCycleServlet</servlet-name>
        <url-pattern>/lifeCycleServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>LifeCycleServlet2</servlet-name>
        <servlet-class>包名.LifeCycleServlet2</servlet-class>
        <load-on-startup>3</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>LifeCycleServlet2</servlet-name>
        <url-pattern>/lifeCycleServlet2</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>LifeCycleServlet3</servlet-name>
        <servlet-class>包名.LifeCycleServlet3</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>LifeCycleServlet3</servlet-name>
        <url-pattern>/lifeCycleServlet3</url-pattern>
    </servlet-mapping>

结果如下
在这里插入图片描述
     可以明显看到,当我们加入<load-on-startup>标签之后Servlet类就会默认加载并且安装我们给出的顺序,从1开始,从小到大加载,当给出的值相同的时候,随机顺序加载

二、service()阶段
     它是Servlet的核心,可以处理get/post方式的请求,如果servlet中有Service方法,会优先调用service方法对请求进行处理。

     当在HttpServlet中已存在Service()方法的时候,默认的服务是调用和请求相同的do功能,即对于get方式的请求Service会将其分发给doGet()方法,对于post方式的请求Service会将其分发给doPost()方法,这一特点是调用HttpServlet中的Service方法实现的
在这里插入图片描述
     不同于初始化和销毁阶段只执行一次的特点,服务阶段会多次执行,只要服务器被访问就会调用

三、destroy()阶段
     该阶段仅执行一次,在服务器停止且销毁Servlet时执行



     总结来谈,用以下一张图表示
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值