Servlet技术(三)--JavaWeb与Servlet的生命周期
来源:互联网 发布:监控覆盖数据恢复 编辑:程序博客网 时间:2024/05/29 09:57
JavaWeb应用的生命周期
JavaWeb应用的生命周期是由Servlet容器来控制的。归纳起来,JavaWeb应用的生命周期包括3个阶段。
1、启动阶段:加载Web应用的有关数据,创建ServletContext对象,对Filter(过滤器)和一些Servlet进行初始化
2、运行时阶段:为客户端提供服务
3、终止阶段:释放Web应用所占用的各种资源
启动阶段
Servlet容器在启动JavaWeb应用时,会完成以下操作:
(1) 把web.xml文件中的数据加载到内存中
(2) 为JavaWeb应用创建一个ServletContext对象
(3) 对所有的Filter进行初始化。
(4) 对那些需要在Web应用启动时就被初始化的Servlet进行初始化。
运行时阶段
这是JavaWeb应用最主要的生命阶段。在这个阶段,它的所有Servlet都处于待命状态,随时可以响应客户端的特定请求,提供相应的服务。假如客户端请求的Servlet还不存在,Servlet容器会先初始化Servlet,然后再调用它的service()服务方法。
终止阶段
Servlet容器在终止JavaWeb应用时,会完成以下操作:
(1) 销毁Javaweb应用中所有处于运行时状态的Servlet。
(2) 销毁JavaWeb应用中所有处于运行时状态的Filter。
(3) 销毁所有与JavaWeb应用相关的对象,如ServletContext对象等,并且释放Web应用所占用的相关资源
Servlet的生命周期
JavaWeb应用的生命周期由Servlet容器来控制,而Servlet作为JavaWeb应用的最核心的组件,其生命周期也由Servlet容器来控制。Servlet的生命周期可以分为3个阶段:初始化阶段、运行时阶段和销毁阶段。在javax.servlet.Servlet接口中定义了3个方法:init()、service()和destroy(),它们将分别在Servlet的不同阶段被Servlet容器调用。
初始化阶段
Servlet的初始化阶段包含4个步骤:
(1) Servlet容器加载Servlet类,把它的.class文件中的数据读入到内存中
(2) Servlet容器创建ServletConfig对象。ServletConfig对象包含了特定Servlet的初始化配置信息,如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被客户端首次请求访问。多数Servlet都会在这种情况下被Servlet容器初始化。
(2) 如果在web.xml文件中为一个Servlet设置了<load-on-startup>元素,那么当Servlet容器启动Servlet所属的web应用时,就会初始化这个Servlet。
(3) 当Web应用被重新启动时,Web应用中的所有Servlet都会在特定的时刻被重新初始化
运行时阶段
这是Servlet的生命周期中的最重要阶段。在这个阶段,Servlet可以随时响应客户端的请求。当Servlet容器接收到要求访问特定Servlet的客户端请求时,Servlet容器会创建针对于这个请求的ServletRequest对象和ServletResponse对象,然后调用相应Servlet对象的service()方法。service()方法从ServletRequest对象中获得客户端请求信息并处理该请求,再通过ServletResponse对象生成响应结果。
当Servlet容器把Servlet生成的响应结果发送给了客户,Servlet容器就会销毁ServletRequest对象和ServletResponse对象。
销毁阶段
当Web应用被终止时,Servlet容器会先调用Web应用中所有Servlet对象的destroy()方法,然后再销毁这些Servlet对象。在destroy()方法的实现中,可以释放Servlet所占用的资源(例如关闭文件输入流和输出流,关闭与数据库的连接等)。
此外,容器还会销毁与Servlet对象关联的ServletConfig对象。
- Servlet技术(三)--JavaWeb与Servlet的生命周期
- Servlet技术浅析(六)之-----JavaWeb应用的生命周期和Servlet的生命周期
- Servlet教程(三) Servlet的生命周期
- javaWeb之Servlet的工作原理与生命周期
- JavaWeb之 Servlet执行过程 与 生命周期
- JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板
- JavaWeb,Servlet,Jsp生命周期
- JavaWeb,Servlet,Jsp生命周期
- javaWeb servlet生命周期
- javaWeb之Servlet生命周期
- JavaWeb Servlet 生命周期
- 温故知新--servlet(三)--servlet的调用过程和生命周期
- javaweb三大技术点之servlet
- JavaWeb中Servlet的生命周期方法
- 【Java.Web】Servlet —— Servlet(JavaWeb)的生命周期
- Servlet生命周期(跟龙哥学javaweb)笔记
- JavaWeb 学习笔记(二)Servlet生命周期
- servlet生命周期,servlet与CGI的区别
- 常用的正则表达式大全
- python 问题集锦
- Linux下进程通信之管道
- 完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题
- Linux usb 驱动分析
- Servlet技术(三)--JavaWeb与Servlet的生命周期
- the security settings could not be applied to the database (error 1045 MySQL)的解决
- 整合SpringMVC
- Poj 1979 Red and Black(DFS)
- Android中listview的item布局中button点击事件position混乱解决
- 【网络流24题】数字梯形问题
- Atitit 输入法原理与概论ati use
- 预防数据库攻击的正确做法 mysql_real_escape_string
- 合并两个文件的内容:shell/java