`
chenchh
  • 浏览: 60764 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Servlet生命周期

阅读更多

    servlet的生命周期是由servlet的容器来控制的。分为三个阶段:初始化阶段、运行阶段、销毁阶段。

  • 初始化阶段

    初始化阶段的步骤:

  1.  
    1. servlet容器加载servlet类,把它的class文件读取到内存中。
    2. servlet容器创建servletConfig对象。servletConfig对象包含了servlet对象的初始化配置信息。此外servlet容器还会使得servletConfig对象与当前web应用的servletContext对象相关联。
    3. servlet容器创建servlet对象。
    4. servlet容器调用servlet的init(ServletConfig config)方法。

    通过初始化步骤,创建了servlet对象和servletConfig对象,并且servlet对象和servletConfig对象相关联,而servletConfig对象又与当前web的servletContext对象关联。当servlet容器实例化servlet对象后,通过servlet对象的getServletContext()方法即可获得web的servletContext对象。

    注:servlet初始化的情况

  1. 当web应用处于运行阶段时,特定的servlet被客户端首次请求访问。
  2. 在web.xml文件中为servlet设置了<load-on-startup>元素
<servlet>
    <servlet-name>servlet1</servlet-name>
    <servlet-class>servlet.servlet1</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>

     在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:标记容器是否在启动的时候就加载这个servlet。当值大于等于0的时候,表示容器在应用启动的时候就加载这个servlet;当该值为负数或没有指定的时候,表示容器在该servlet被选择的时候才加载该servlet。正数的值越小,表示该servlet被加载的优先级越高。

 

    3. 当web应用被重新启动的时候,所有的servlet会在特定的时间被重新初始化。

 

  • 运行阶段

    这个阶段servlet可以随时响应客户端的请求。当servlet容器接到访问特定servlet的请求时,容器会创建针对这个servlet的servletRequest对象和servletReponse对象,然后调用service()方法,并把这两个对象作为参数传递给service()方法。service()方法通过servletRequest对象获取请求信息,并处理该请求,然后通过servletReponse对象返回响应结果。不管是用post还是get方式提交请求,都会在service()中处理,由service()方法来交由相应的doPost()/doGet()方法处理。如果你重写了service()方法,就不会再处理doPost/doGet()了,这个时候可以自己转向doPost/doGet方法。当servlet容器把servlet生成的结果发送给客户端之后,servlet容器会销毁servletRequest对象和servletReponse对象。

 

  • 销毁阶段

    当web应用被终止的时候,web容器会首先调用应用中所有servlet的destory()方法,然后再销毁servlet对象。此外,容器还会销毁与servlet关联的servletConfig对象。

 


注: 在servlet的生命周期中,servlet的初始化和销毁只会发生一次。

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics