zoukankan      html  css  js  c++  java
  • Servlet基础(二) Servlet的生命周期

     

    Servlet基础(二) Servlet的生命周期

      Servlet的生命周期可以分为三个阶段:

      1.初始化阶段

      2.响应客户请求阶段

      3.终止阶段

    Servlet的初始化阶段

      在下列时刻Servlet容器装载Servlet:

      1.Servlet容器启动时自动装载某些Servlet。

      2.在Servlet容器启动后,客户首次向Servlet发出请求。

      3.Servlet的类文件被更新后,重新装载Servlet。

     

      Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。

      在Servlet的整个生命周期中,init方法只会被调用一次

    Servlet对象何时被创建?

      默认情况下,当Web客户第一次请求访问某个Servlet时,Web容器创建这个Servlet的实例。

      但web.xml中如果设置了<servlet>元素的<load-on-startup>子元素,Servlet容器在启动Web应用时,将按照指定的顺序(元素值从小到大)创建并初始化这个Servlet。

      如下:

        <servlet>
            <servlet-name>MyServlet</servlet-name>
            <servlet-class>com.shengqishiwind.servlet.MyServlet</servlet-class>
            <load-on-startup>2</load-on-startup>
        </servlet>

      注:<servlet-mapping>提供了URL向servlet元素的映射,如下:

        <servlet-mapping>
            <servlet-name>MyServlet</servlet-name>
            <url-pattern>/MyServlet</url-pattern>
        </servlet-mapping>

      但有些时候某些Servlet在web.xml中没有 <servlet-mapping>,只有  <servlet>标签,即不能通过URL直接访问。

      它们是用来做什么的呢?

      答案是:

      它们会被用来做一些全局性的初始化工作。

      这种Servlet在元素中加入<load-on-startup>子元素,在启动Web应用时,这些Servlet会被自动加载,其中的init方法会被调用,完成一些初始化工作。

    Web应用何时被启动?

      当Servlet容器启动时,会启动所有的Web应用。

      通过控制台启动Web应用。

    Servlet的响应客户请求阶段

      对于到达Servlet容器的客户请求,Servlet容器创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service方法。

      service方法从ServletRequest对象获得客户请求信息、处理该请求,并通过ServletResponse对象向客户返回响应结果。

    Servlet的终止阶段

      当1)Web应用被终止,或2)Servlet容器终止运行,或3)Servlet容器重新装载Servlet的新实例时,Servlet容器会先调用Servlet的destroy方法。

      在destroy方法中,可以释放Servlet所占用的资源。

    参考资料

      圣思园张龙老师Java Web视频教程。

  • 相关阅读:
    使用MFC界面库LibUIDK制作超酷界面
    使用WSH和WMI实现定时记录系统CPU和内存使用率
    关于CreateFileMapping的问题
    360对NSIS误报Malware.QVM06.GEN的解决办法
    win2003实现单用户远程登录
    All bytes must be within the maximum size specified by CreateFileMapping
    解决在VS2005中“当前不会命中断点。源代码与原始版本不同”的问题
    static library中能不能带资源
    HUDSON_HOME
    USB GUID查找
  • 原文地址:https://www.cnblogs.com/mengdd/p/3202570.html
Copyright © 2011-2022 走看看