zoukankan      html  css  js  c++  java
  • JSP Servlet WEB生命周期

    【转载】

    JavaWeb的生命周期是由Servlet容器来控制的总的来说分为三个阶段
    1.启动阶段:加载web应用相关数据,创建ServletContext对象,对Filter和servlet进行初始化
          a.把web.xml中的数据加载到内存中
          b.为JavaWeb应用创建一个ServletContext对象
          c.对所有的Filter进行初始化
          d.对需要在web应用启动时就被初始化的Servlet进行初始化

    2.运行时阶段:为客户提供服务
          a.所有的Servlet都处于待命状态,随时响应客户请求,提供服务
          b.如客户请求的Servlet还不存在,Servlet容器会先初始化Servlet再调用它的service()方法

    3.终止阶段:释放web应用占用的各种资源
          a.销毁JavaWeb中所有处于运行状态的Servlet
          b.销毁JavaWeb中所有处于运行状态的Filter
          c.销毁所有与JavaWeb相关的对象如ServletContext,并释放资源

    Servlet的生命周期也是由Servlet容器来控制也分为三个阶段与JavaWeb相同
    1.初始化阶段(对应javax.servlet.Servlet接口中的init()方法)
      a.Servlet容器加载Servlet类,将其.class文件中的数据读入内存
      b.Servlet容器创建ServletConfig对象,ServletConfig对象包含特定的Servlet的初始化配置信息。同时Servlet容器还会使得ServletConfig对象与当前Web应用的ServletContext对象关联
      c.Servlet容器创建Servlet对象
      d.Servlet容器调用Servlet对象的init(ServletConfig config)方法完成初始化。Servlet对象只要通过getServletContext()方法就能得到当前Web应用中的ServletContext对象

    2.运行阶段(对应Service()方法)
      a.当Servlet容器接收到要求访问特定的Servlet和客户请求时Servlet容器会创建针对这个请求的ServletRequest对象和ServletResponse对象,然后调用对应Servlet的service()方法从ServletRequest对象中得到客户请求信息并处理该请求。再通过ServletResponse对象生成响应结果。
      b.当Servlet容器把Servlet生成的响应结果发送给客户,Servlet容器就会销毁ServletRequest对象和ServletResponse对象

     

    3.销毁阶段(对应destroy()方法)
      a.当Web应用被终止时,Servlet容器会调用当前Web应用中所有Servlet对象的destroy()方法,然后再销毁这些Servlet对象。
      b.在destroy()方法中会释放Servlet所占用的资源(关闭输入输出流,数据库连接等)
      c.Servlet容器销毁与Servlet对象关联的ServletConfig对象

    注意:Servlet的初始化和销毁只会发生一次,初始化发生特定Servlet在首次被客户端访问。销毁发生在web应用被终止

    JSP的生命周期:JSP的生命周期与Servlet一个区别在于,Servlet容器必须先将Jsp编译成Servlet类然后再运行它.JSP生命周期如下:
      a.解析阶段:Servlet容器解析JSP文件的代码查看是否有语法错误
      b.翻译阶段:Servlet容器把JSP文件翻译成Servlet源文件(.java)
      c.编译阶段:Servlet容器翻译Servlet源文件生成Servlet类(.class)
      d.初始化阶段:加载与JSP对应的Servlet尖,创建其实例,并调用它的初始化方法
      e.运行时阶段:调用与JSP对应的Servlet实例的服务方法
      f.销毁阶段:调用与JSP对应的Servlet实例的销毁方法,然后销毁Servlet实例

    注意:在JSP的生命周期中,解析,翻译,编译是JSP特有的阶段,仅发生在JSP文件首次被客户端请求访问,JSP文件被更新,与JSP文件相对应的Servlet类的类文件被手工删除

  • 相关阅读:
    golang删除数组某个元素
    golang用通道实现信号量,控制并发个数
    什么是ScaleIO中的forwards rebuild和backwards rebuild?
    SQL Server中的database checkpoint
    如何将thick provision lazy zeroed的VMDK文件转换为thick provision eager zeroed?
    LoadTestAgentResultsLateException in VS2010
    SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
    VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
    SQL Server AlwaysOn Setup Step-By-Step Guide
    TPC-E在populate测试Database时需要注意的一些事项
  • 原文地址:https://www.cnblogs.com/cocoat/p/5628168.html
Copyright © 2011-2022 走看看