JavaWeb应用的生命周期是由Servlet容器来控制的。包括三个阶段:

1.启动阶段:加载Web应用的有关数据,创建ServletContest对象,对Filter(过滤器)和一些Servlet进行初始化。启动时会:

  (1)把web.xml文件中的数据加载到内存中。

  (2)为JavaWeb应用创建一个ServletContext对象。

  (3)对所有的Filter进行初始化。

  (4)对需要在Web应用启动时就被初始化的Servlet进行初始化。

2.运行阶段:为客户端提供服务。

  JavaWeb应用最主要的声明阶段,此阶段,所有的Servlet都处于待命状态,随时可以响应客户端的特定请求,提供相应的服务。若客户端请求的Servlet不存在,Servlet容器会先初始化Servlet,然后调用它的Service服务方法。

3.终止阶段:释放Web应用所占用的各种资源。终止时会:

  (1)销毁JavaWeb应用中所有处于运行状态的Servlet。

  (2)销毁JavaWeb应用中所有处于运行时状态的Filter。  

  (3)销毁所有与JavaWeb应用相关的对象,如ServlerContext对象等,并且释放Web应用所占用的相关资源。


Servlet的生命周期

Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。
(1)加载:容器通过类加载器使用servlet类对应的文件加载servlet
(2)创建:通过调用servlet构造函数创建一个servlet对象
(3)初始化:调用init方法初始化
(4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求
(5)卸载:调用destroy方法让servlet自己释放其占用的资源
  • 当Servlet容器启动时,会启动JavaWeb应用,当JavaWeb应用启动后,就处于运行时状态。当Servlet容器被关闭 时,Servlet会先终止所有的JavaWeb应用。
  • JavaWeb应用的生命周期由Servlet容器来控制,Servlet作为JavaWeb应用最核心的部件,其生命周期也由Servlet容器来控制。
  • Servlet的生命周期分为三个阶段,初始化阶段,运行时阶段和销毁阶段。在javax.servlet.Servlett阶段后中定义了3个方法:init(), service(), destroy(),分别在Servlet的不同阶段被Servlet容器调用。

1.初始化阶段:

  (1)Servlet容器加载Srvlet类,吧它的.class文件中的数据读入到内存 中。

  (2)Servlet容器创建ServletConfig对象,ServletConfig对象包含类特定Servlet的初始化配置信息,如Servlet的初始参数,此外,Servlet容器还会使得ServletConfig对象与当前Web应用的ServletContext对象关联。

  (3)Servlet容器创建Servlet对象。

  (4)Servlet容器带哦用Servlet对象的init(ServletConfig config)方法,在Servlet接口的实现类GenericServlet的init(ServletConfig config)方法中,会建立Servlet对象与ServletConfig对象的关联关系。

*********在初始化阶段,创建类Servlet对象和ServletConfig对象,并且Servlet对象与ServletConfig对象关联,而ServletConfig对象有与当前Web应用的ServletContext对象关联。

******** Servlet进入初始化的情况:

  • 当前Web应用处于运行时阶段,特定Servlet被客户端首次请求访问,多数Servlet会在这种情况下被Servlet容器初始化。
  • 如果在web.xml文件中为一个Servlet设置了<load-on-startup>元素,当Servlet容器启动Servlet所属的Web应用时,会初始化这个Servlet
  • 当web应用被重新启动时,Web应用中的所有Servlet都会在特定的时刻重新初始化。

2.运行时阶段:

  此阶段,Servlet可以随时响应客户端的请求,当Servlet容器接受到要求访问特定Servlet的客户请求时,Servlet容器会创建针对这个请求的ServletRequest对象和ServletResponse对象,然后调用相应Servlet对象的servlce()方法。service()方法从ServletRequest对象中获得客户请求信息并处理该请求,再通过ServletResponse对象生成响应结果。当Servlet容器把Servlet生成的响应结果发送给客户,Servlet容器就会销毁SevletRequest对象和ServletResponse对象。

3.销毁阶段:

  当Web应用被终止时,Servlet容器会先调用Web应用中所有的Servlet对象的destroy()方法,然后再销毁这些Servlet对象,在destroy()方法的实现中可以释放Servlet所占用的资源(如关闭文件输入流和输出流,关闭与数据库的连接等),此外,还会销毁与Servlet对象关联的ServletConfig对象。

  

JavaWeb应用和Servlet的更多相关文章

  1. JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  2. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

    JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference

  3. (转)JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  4. JavaWeb学习——了解Servlet

    JavaWeb学习——了解Servlet 摘要:本文主要学习了什么是Servlet,以及如何使用Servlet进行开发. 基础知识 背景 随着互联网技术的发展,基于HTTP和HTML的web应用急速增 ...

  5. JavaWeb(二):Servlet

    一.本教程使用的Web容器——Tomcat Tomcat是提供一个支持Servlet和JSP运行的容器.Servlet和JSP能根据实时需要,产生动态网页内容.而对于Web服务器来说, Apache仅 ...

  6. Intellij idea创建javaWeb:实现JSP/Servlet(转)

    转自:https://www.jianshu.com/p/9684e90cf7b5 Intellij idea创建javaWeb:实现JSP/Servlet by_love唯念 关注 2016.12. ...

  7. javaweb学习之Servlet开发(二)

    javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...

  8. JavaWeb基础:Servlet Response

    ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ...

  9. 在javaweb中通过servlet类和普通类读取资源文件

    javaweb有两种方式读取资源文件 在Servlet中读取,可以使用servletContext,servletContext可以拿到web所有的资源文件,然后随便读,但是这种方法不常用,尽量少在S ...

  10. JavaWeb开发之Servlet

    1. Servlet有关概念和前置知识 1.1 什么是动态网页 如果浏览器在不同时刻或不同条件下访问web服务器上的某个页面,浏览器所获得的页面内容可以发生变化,那么这个页面就称之为动态页面. 动态网 ...

随机推荐

  1. [转帖] securebootthemes 挖矿病毒的说明 http://blog.netlab.360.com/msraminer-qian-fu-yi-jiu-de-wa-kuang-jiang-shi-wang-luo/ 原文为毛不给一个专杀工具呢.

    MsraMiner: 潜伏已久的挖矿僵尸网络 2017 年 11 月底,我们的 DNSMon 系统监测到几个疑似 DGA 产生的恶意域名活动有异常.经过我们深入分析,确认这背后是一个从 2017 年 ...

  2. [转帖] 打开加密SQLite文件的方法

    Copy From http://blog.csdn.net/sean4m/article/details/50211565 mark 下 正好工作用到了这个东西. 版本:SQLiteExpertPr ...

  3. Ubuntu16.04.3安装以及简单配置使用

    1. 官网下载ubuntu16.04.3的iso 2.上传至esxi 3. 中文安装界面有问题,使用english进行安装. 4. server版本的应该不带gui的界面进行安装... 5.使用非ro ...

  4. LY tomcat 的闪退问题

    http://www.cnblogs.com/1693977889zz/archive/2018/04/06/8726920.html 在bin文件夹里打开此文件setclasspath.bat 举例 ...

  5. 关于mybatis的@Param注解和参数

    1,使用@Param注解 当以下面的方式进行写SQL语句时: @Select("select column from table where userid = #{userid} " ...

  6. Java之Date Time API (Java 8 新特性)

    Java 8 – Date Time API Java 8 comes with a much improved and much required change in the way date an ...

  7. python之打印日志logging

    import logging # 简单打印日志举例 logging.basicConfig(level=logging.DEBUG) # 设置日志级别,WARN logging.warning('Wa ...

  8. maven dependcymanage作用在父类里面定义依赖包 子类不会自动继承需要主动使用 这样解决了父类引用任意包 子类就会引用的问题

    maven dependcymanage作用在父类里面定义依赖包 子类不会自动继承需要主动使用 这样解决了父类引用任意包 子类就会引用的问题  子类在引用时候 不需要加上版本号

  9. NOIP2018滚粗记

    NOIP2018滚粗记 day 0 上午,说是可以休息,然后睡到快9点起来吃个早饭去了机房.刷了几个板子就十二点了 下午大概就是看别人总结,颓知乎,完全没心思写代码. 晚上不要求,然后在寝室颓了一下, ...

  10. BZOJ2553[BeiJing2011]禁忌——AC自动机+概率DP+矩阵乘法

    题目描述 Magic Land上的人们总是提起那个传说:他们的祖先John在那个东方岛屿帮助Koishi与其姐姐Satori最终战平.而后,Koishi恢复了读心的能力…… 如今,在John已经成为传 ...