• 关于servlet是在什么时候初始化的个人总结


    今天无意中看到一个博主的总结,总结的是servlet是在什么时候初始化的,并且附上了实例。但是由于那位博主的实例有问题,所以总结的也有误。这里我把我的体会写下来,分享给大家。

    java代码:

     1   @Override
     2     public void init(ServletConfig request) throws ServletException {
     3         System.out.println("TestServlet init ...");
     4         
     5     }
     6 
     7     @Override
     8     public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
     9         HttpServletRequest hsr = (HttpServletRequest) request;
    10         String servletPath = hsr.getServletPath();
    11         System.out.println("TestServlet service ...|| servletPath:" + servletPath);
    12         
    13     }

    web.xml配置:

    1     <servlet>
    2         <servlet-name>dispatcher</servlet-name>
    3         <servlet-class>com.leq.test.servlet.TestServlet</servlet-class>
    4     </servlet>
    5     <servlet-mapping>
    6         <servlet-name>dispatcher</servlet-name>
    7         <url-pattern>*.action</url-pattern>
    8     </servlet-mapping>

    场景1: 在启动Tomcat的时候,没有执行init方法;

        关闭Tomcat的时候,没有执行destroy方法。

    场景2: 在启动Tomcat的时候,没有执行init方法;

        在发送请求的时候,先执行init方法,后执行service方法。

        关闭Tomcat的时候,没有执行destroy方法。

    ------------------------------------------------------------华丽的分割线-------------------------------------------------------------------

    现在改变web.xml配置:

    1     <servlet>
    2         <servlet-name>dispatcher</servlet-name>
    3         <servlet-class>com.leq.test.servlet.TestServlet</servlet-class>
    4         <load-on-startup>0</load-on-startup>
    5     </servlet>
    6     <servlet-mapping>
    7         <servlet-name>dispatcher</servlet-name>
    8         <url-pattern>*.action</url-pattern>
    9     </servlet-mapping>

    java类代码不变。

    场景1: 在启动Tomcat的时候,执行了init方法;

        关闭Tomcat的时候,执行了destroy方法。

    总结:

    当web.xml中不配置load-on-startup属性,或者配置该属性且值为负数时,servlet在有请求的时候才会初始化。

    当load-on-startup属性值大于等于0的时候,servlet会在启动的时候就初始化。

    备注:1. load-on-startup属性值只能为整数。

         2. load-on-startup属性值大于等于0时,数值越小,优先级越高。

  • 相关阅读:
    Python学习(五)函数 —— 自定义函数
    Python学习(四)数据结构 —— dict
    Python学习(四)数据结构 —— set frozenset
    C++ —— 构建开源的开发环境
    Oracle 数据库 Database Express Edition 11g Release 2 (11.2) 错误解决集锦(使用语法)
    Web —— tomcat 问题解决
    web —— jsp笔记
    Web 前端 —— javaScript
    编程杂谈—— 浮点数
    Web —— java web 项目开发 笔记
  • 原文地址:https://www.cnblogs.com/leqhome/p/5379837.html
Copyright © 2020-2023  润新知