• Servlet的生命周期


    ## (1)什么是Servlet的生命周期?
    Servlet容器如何创建Servlet对象、如何对其进行初始化、如何调用其方法
    来处理请求,以及如何销毁该对象的整个过程。
    也就是说,容器是如何管理Servlet的。
     
    ![](life.png)
     
    ## (2)分成哪几个阶段?
     
    ### 1)实例化
    a.什么是实例化?
     
        容器调用Servlet的构造器,创建Servlet实例(对象)。
     
    b.什么时候实例化?
     
        情况1: 容器收到请求之后创建。
        情况2: 容器启动之后,立即创建(需要配置)。
     
            <!--  
              配置启动加载。
              容器启动之后,会立即创建该servlet对象。
              值是一个大于等于零的整数,值越小,优先
              级越高(即优先被创建)
               -->
              <load-on-startup>1</load-on-startup>
        注:
            容器只会创建一个实例!
     
    ### 2)初始化
    a.什么是初始化?
     
        容器在创建servlet实例之后,会立即调用该实例的init方法。
        注:
            init方法只会执行一次!
     
    b.GenericServlet已经提供了init方法的简单的实现。
     
        将容器传递过来的ServletConfig对象保存下来了,并且提供了一个
        方法(getServletConfig)来获得该对象。
     
    ![](init.png)
     
    c.初始化参数(局部初始化,只在对应的<servlet><servlet>里面有效,在哪个<servlet><servlet>里面就哪个有效)
     
        step1.配置初始化参数
              <init-param>
                  <param-name>company</param-name>
                  <param-value>IBM</param-value>
              </init-param>
     
        step2.读取
            String company =  
                    config.getInitParameter(
                            "company");
        
     
     
    ### 3)就绪(调用)
    a.什么是就绪?
     
        容器收到请求之后,会调用servlet的service方法来处理。
     
    b.HttpServlet已经提供了service方法的实现。
     
        该方法依据请求类型调用对应的doXXX方法。
            比如,get请求会调用doGet方法,post请求会调用doPost方法。
            doXXX方法只是抛出了一个异常。
        作为开发人员,只需要override doXXX方法即可。
        注:
            也可以直接override HttpServlet的service方法。

            
     
    ### 4)销毁
    a.什么是销毁?
     
        容器在删除servlet实例之前,会调用该实例的destroy方法。
        注:
            该方法只会执行一次!
     
    b.GenericServlet已经提供了destroy方法的实现。
     
        可以override GenericServlet的destroy方法,来实现
        自己的销毁处理逻辑。
        注:
            在init方法里如果我们获得了一些资源,比如数据库
            Connection等,就需要在destroy方法当中释放这些
            资源。
     
     
    ## (3)相关的接口与类(了解)
    a.Servlet接口
     
        init(ServletConfig config);
        service(ServletRequest req,ServletResponse res);
        destroy();
     
    b.GenericServlet抽象类
     
        实现了Servlet接口中的部分方法(init,destroy)
     
    c.HttpServlet抽象类
        
        继承了GenericServlet,实现了service方法。

  • 相关阅读:
    oracle 物化视图导入导出报错
    算法导论------------桶排序算法之研究
    实现一个做双向NAT的虚拟网卡
    合理的keyword密度散布与黑帽SEO之躲藏文本
    Java发送Email
    ubuntu系统下设置静态IP
    Design Pattern Iterator 迭代器设计模式
    概率论高速学习03:概率公理补充
    鄂尔多斯
    衬衫面料品牌:Alumo_衬衫_男装_男装:衬衫、法式衬衫、袖扣领带、西服西裤等男士正装服饰-仕族官网
  • 原文地址:https://www.cnblogs.com/package-java/p/10240941.html
Copyright © 2020-2023  润新知