• Servlet的生命周期


    一、实例化

      1、什么是实例化?

        容器创建Servlet对象

      2、创建的时机  

        可以是在容器收到针对这个组件的请求之后,即用了才创建;

        也可以在容器启动之后立刻创建实例,而不管此时Servlet是否使用的上。

        创建的具体时机可以设置:

    <servlet>
        <servlet-name>someServlet</servlet-name>
        <servlet-class>test.SomeServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
         <servlet-name>someServlet</servlet-name>
         <url-pattern>/*</url-pattern>
    </servlet-mapping>
        配置文件说明:load-on-startup节点用于设置该Servlet的创建时机。   
          1、当其中的值大于等于0时,表示容器在启动时就会创建实例
          2、小于0时或没有指定时,代表容器在该Servlet被请求时再执行创建
          3、正数的值越小,优先级越高,应用启动时就越先被创建。

    二、初始化

      1、什么是初始化?

        init()方法被调用。Servlet在被加载实例化之后,必须要初始化它。

        这个方法在javax.servlet.Servlet接口中定义,其中,方法以一个ServletConfig类型的对象作为参数。ServletConfig对象由Servlet引擎负责创建,从中可以读取到事先在web.xml文件中通过<init-param>节点配置的多个name-value名值对。ServletConfig对象还可以让Servlet接受一个ServletContext对象。一般情况下,init方法不需要编写,因为GenericServlet已经提供了init方法的实现,并且提供了getServletConfig()来获得ServletConfig对象。

        注:init方法只被执行一次。
     
    以下代码为在servlet配置中,增加初始化参数
    <servlet>
            <servlet-name>someServlet</servlet-na me>
            <servlet-class>test/SomeServlet</servlet-class>
            <init-param>
                  <param-name>debug</param-name>
                  <param-value>true</param-valule>
             </init-param>
     </servlet>
        可以用如下方法读取Servlet配置中增加的初始化参数
            ServletConfig config = getServletConfig();
            String debug = config.getInitParameter("debug");
     

    三、就绪(调用)

      1、什么是调用?  
        容器收到请求之后,会调用servlet实例的service方法
     
      2、HttpServlet的service方法是如何实现的?
        依据请求类型,分别调用对应的doPost或者doGet方法
        doGet方法处理get请求,doPost方法处理post请求
     
     

    四、销毁

      1、什么是销毁?
        容器在删除servlet实例之前,会调用该实例的destroy方法。该方法只会执行一次。
      2、可以重写GenericServlet提供的init方法来实现自已的销毁处理逻辑。
     


    作者:danielJinyu

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,请在文章页面明显位置给出原文连接
    Github:https://github.com/DanielJinyu

  • 相关阅读:
    markDown 语法学习
    flutter 自定义输入框组件
    flutter 学习零碎知识点01
    如何让模拟的json数据接口能够正常的在手机上有效果
    react高阶组件的使用
    如何把原生小程序项目合并的mpvue项目中
    如何把一个vue组件改为ionic/angular组件
    浅析MySQL中change与modify的区别
    如何在电脑上配置两个tomcat
    警告-SetPropertiesRule Server Service Engine Host Context
  • 原文地址:https://www.cnblogs.com/danielJinyu/p/11362679.html
Copyright © 2020-2023  润新知