JavaWeb应用和Servlet
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容器启动时,会启动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的更多相关文章
- JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板
		[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ... 
- JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)
		JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference 
- (转)JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板
		[声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ... 
- JavaWeb学习——了解Servlet
		JavaWeb学习——了解Servlet 摘要:本文主要学习了什么是Servlet,以及如何使用Servlet进行开发. 基础知识 背景 随着互联网技术的发展,基于HTTP和HTML的web应用急速增 ... 
- JavaWeb(二):Servlet
		一.本教程使用的Web容器——Tomcat Tomcat是提供一个支持Servlet和JSP运行的容器.Servlet和JSP能根据实时需要,产生动态网页内容.而对于Web服务器来说, Apache仅 ... 
- Intellij idea创建javaWeb:实现JSP/Servlet(转)
		转自:https://www.jianshu.com/p/9684e90cf7b5 Intellij idea创建javaWeb:实现JSP/Servlet by_love唯念 关注 2016.12. ... 
- javaweb学习之Servlet开发(二)
		javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ... 
- JavaWeb基础:Servlet Response
		ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ... 
- 在javaweb中通过servlet类和普通类读取资源文件
		javaweb有两种方式读取资源文件 在Servlet中读取,可以使用servletContext,servletContext可以拿到web所有的资源文件,然后随便读,但是这种方法不常用,尽量少在S ... 
- JavaWeb开发之Servlet
		1. Servlet有关概念和前置知识 1.1 什么是动态网页 如果浏览器在不同时刻或不同条件下访问web服务器上的某个页面,浏览器所获得的页面内容可以发生变化,那么这个页面就称之为动态页面. 动态网 ... 
随机推荐
- 买了本Delphi面向对象编程思想,正在看,产生些问题。
			1:第33页说,Delphi通过调用类的一个构造函数来建立一个对象的实例,对象至少有一个create()的构造函数,使用时候写MyObject:=TmyObject.create即可. 但是第37 ... 
- 嵌入式启动jetty
			由于jetty8以上版本已经抛弃JDK1.6,公司统一开发JDK又一直不升级,所以我们使用jetty8 pom.xml <project xmlns="http://maven.apa ... 
- ZOJ2836-Number Puzzle-容斥原理
			依次考虑一个数的倍数,两个数的倍数(lcm),三个数的倍数(lcm)... 会发现有这么一个规律,奇数个数时要加上情况数,偶数个数时要减去情况数. 一种只有10个数,用二进制枚举所有情况即可. #in ... 
- (转)poj算法做题顺序
			初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj329 ... 
- MT【56】2017联赛一试解答最后一题:一道复数题的几何意义
- HNOI2018滚粗记
			day 0 最近发现机房的人都有些焦虑(除了一些神犇)自己也被影响地紧张起来 唉,不知道是不是一种好的心态,紧张是必然的... 随便打了点板子(\(FFT,SA,LCT\)) 很棒一个都没考 day ... 
- idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器 原
			在使用idea开发时,直接docker-maven-plugin插件,把项目编译成docker镜像,然后通过docker:push推送到linux服务器,非常简单,快捷,也避免了手动打包,然后拷贝wa ... 
- 自学Linux Shell12.3-case命令
			点击返回 自学Linux命令行与Shell脚本之路 12.3-case命令 有了case命令,就不需要写出所有elif语句来不停的检查同一个变量的值了.case命令会采用列表格式来检查单个变量的多个值 ... 
- 【Luogu5108】仰望半月的夜空(后缀数组)
			[Luogu5108]仰望半月的夜空(后缀数组) 题面 洛谷 题解 实名举报这题在比赛之前还不是这个样子的,还被我用SAM给水过去了 很明显求出\(SA\)之后就是按照\(SA\)的顺序从前往后考虑每 ... 
- 洛谷 P1054 等价表达式 解题报告
			P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ... 
