JVAWEB学习(3) — Serlvet的生命周期

Servlet的生命周期

什么是Servlet的生命周期

Servlet容器如何创建Servlet对象,如何对该对象进行初始化处理,如何调用该对象的方法拉处理请求,以及如何销毁该对象的整个过程。

在这里插入图片描述

Servlet的声明周期分成哪几个阶段

1. 实例化

  • 什么是实例化

    容器调用Servlet的构造器,创建Servlet对象。

  • 什么时候实例化

    1. 容器收到请求之后,才创建相应的实例

    2. 容器启动之后,立即创建相应的实例(需要额外的配置)

  • 对于某个Servlet,容器只会创建一个实例

2. 初始化

  • 什么是初始化

    容器调用servlet对象的init方法

    该方法只会执行一次

  • GenericServlet已经提供了init方法的实现

    会将容器传递过来的ServletConfig对象保存下来,并且提供了一个方法(getServletConfig)来获得该对象

    如果要实现自己的初始化处理逻辑,只需要override GenericServlet的Init方法。

  • 初始化参数

    1. 配置初始化参数

      <!-- 
        	配置初始化参数
      -->
      <init-param>
      	<param-name>company</param-name>
      	<param-value>码多多</param-value>
      </init-param>
      
    2. 调用ServletConfig提供的方法

      //读取初始化参数
      String company = config.getInitParameter("conpany");
      System.out.println("company:" + company);
      

3. 就绪

  • 什么是就绪

    容器调用Servlet对象的service方法来处理请求

  • HttpServlet已经提供了service方法的实现

    该方法会依据请求类型(get请求/post请求)调用对应的doXXX方法(比如,get请求会调用doGet方法,post请求会调用doPost方法)。doXXX方法只是抛出了一个异常。

    开发人员有两个选择

    • override HttpServlet的doXXX方法
    • override HttpServlet的service方法

4. 销毁

  • 什么是销毁

    容器在删除servlet对象之前,会调用该对象的destroy方法

    该方法只会执行一次

  • GenericServlet已经提供了destroy方法的实现

    该方法实际上什么都没有做,我们可以override该方法,来实现自己的销毁处理逻辑

相关的接口与类

Servlet接口

init(ServletConfig config);
service(ServletRequest req, ServletResponse res);
destroy();

GenericServlet抽象类

实现了Servlet接口中的部分方法(init,destroy)。

HttpServlet抽象类

继承了GenericServlet,实现了service方法

猜你喜欢

转载自blog.csdn.net/yisany_Q/article/details/83268079
今日推荐