zoukankan      html  css  js  c++  java
  • servlet的生命周期

         1.装载并实例化Servlet

        在整个的servlet的生命周期中只有一个Servlet实例。一般装载Servlet的方式有两种,一种是延迟装载(默认的方式)就是当用户第一次访问的Servlet时,容器会将Servlet装载到虚拟机中并实例化,当用户再次访问这个Servlet时容器不会在去加载实例化。另一种是预先加载,当web容器启动时,容器在装载web应用的时候会将Servlet初始化,如果要使用这种方式加载Servlet需要在web.xml中配置:

    <servlet>
        <load-on-startup>
            number
       </load-on-startup>
    </servlet>

    其中,number<0表示延迟加载,number>=0表示采用预先加载。number越小越先加载,越大越晚被加载,springMVC的DispatcherServlet就是使用的预先加载。

        2.init 方法的调用

        当Servlet被装载时会先调用ini方法对servlet初始化,这里需要注意,在整个的Servlet周期中init方法只会被调用一次。用户可以覆盖init方法,如果覆盖有参数的init方法需要先调用super.init(config)方法,如果覆盖无参的init方法则不用,原因参考我写的java的继承。使用config对象可以获取ServletContext对象。

        3.service方法的调用

        Servlet被装载实例化后,客户端发起请求,容器会调用Servlet实例的service方法来对请求进行处理,所以service方法会根据请求的次数被调用多次。HttpServlet的service方法会根据请求的方式来调用service中对应的方法,常见的有doGet、doPost、doPut和doDelete。其中doGet和doPost默认情况下会抛异常所以需要子类去覆盖。

        4.Servlet实例的销毁

        当web容器需要销毁Servlet实例时会先调用destroy方法,在这个方法中容器会释放资源,恢复一下变量的值等。我们定义的servlet可以不覆盖destroy方法。

  • 相关阅读:
    图片轮播插件比较(jquerySlide与superSlide)
    footer贴底的纯css实现方法
    input line-height 兼容解决方案
    HBuilder js 自定义代码块
    HBuilder HTML 自定义代码块
    HBuilder CSS 自定义代码块
    Element-ui el-cascader不触发prop?
    css水平垂直居中
    本地存储时注意的问题
    银行卡号,每四位添加空格
  • 原文地址:https://www.cnblogs.com/suyang-java/p/11221167.html
Copyright © 2011-2022 走看看