servlet生命周期深入理解
来源:互联网 发布:十三水配牌算法 编辑:程序博客网 时间:2024/05/17 08:57
什么是Servlet
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
实现与CGI相同的功能, 但是与CGI相比, 优点是:
- 性能明显更好。
- Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
- Servlet 是独立于平台的,因为它们是用 Java 编写的。
- 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
- Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
原因分析: (CGI创建进程, Servlet创建线程)
(1)CGI分析: 当用户浏览器发出一个Http/CGI的请求,或者说调用一个CGI程序的时候,服务器端就要新启用一个进程,调用CGI程序越多,就要消耗系统越多的处理时间。
(2)Servlet分析: Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁。
Serlvet架构
下图显示了Servlet在Web应用程序中的位置:
Serlvet的生命周期
Servlet的生命周期可以分为四个阶段,
- Servlet 通过调用 init () 方法进行初始化。
- Servlet 调用 service() 方法来处理客户端的请求。
- Servlet 通过调用 destroy() 方法终止(结束)。
- 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
Serlvet的生命周期方法
init()方法
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。
- 1
- 2
- 3
- 4
service()方法
service服务内容: service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
service方法和doGET, doPOST方法的联系:
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
doGet()方法
GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。
- 1
- 2
- 3
- 4
- 5
- 6
doPost()方法
POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。
- 1
- 2
- 3
- 4
- 5
- 6
destroy()方法
destroy() 方法只会被调用一次,**在 Servlet 生命周期结束时被调用。**destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。destroy 方法定义如下所示:
- 1
- 2
- 3
- 4
架构图:
下图显示了一个典型的 Servlet 生命周期方案。
- 第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。
- Servlet 容器在调用 service() 方法之前加载 Servlet。
- 然后 Servlet 容器处理由多个线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法。
参考: 菜鸟教程http://www.runoob.com/servlet/servlet-life-cycle.html
引用:http://blog.csdn.net/wu_cai_/article/details/51297549
- servlet生命周期深入理解
- servlet生命周期深入理解
- servlet生命周期的理解
- servlet 理解 - 生命周期 -
- activity生命周期深入理解
- 深入理解Activity 生命周期
- 深入理解Servlet
- 深入理解Servlet [转]
- servlet深入理解
- 深入理解Servlet原理
- 深入理解Servlet
- 简单理解Servlet的生命周期
- 深入理解Android Activity生命周期
- Activity生命周期深入理解2
- 深入理解Activity的生命周期
- 深入理解WP8的生命周期
- activity的生命周期深入理解
- 深入理解android view 生命周期
- centos7 gitlab安装
- 如何治疗腰间盘突出?
- NOIP 提高组 2010 关押罪犯
- kafka推送消息, producer没有对应记录
- 2017年浙江工业大学大学生程序设计迎新赛预赛-K:栗酱的连通图(最大生成树)
- servlet生命周期深入理解
- Elasticsearch 使用中文分词
- 【健康】全球公认最健康的作息时间表,你应该拥有~ 2017-12-18 人民日报 对于健康来说,年轻向来不是资本,如果你现在不好好管理你的身体,那么年纪越大,你会发现有越多的健康问题出现,下面是全球
- Android 沉浸式状态栏的实现
- HTML5全局属性汇总
- web前端-01:关于css居中的几种方法
- 23种设计模式
- Java集合知识点小结(面试)
- nodejs使用nginx端口转发,端口映射,反向代理,子域名映射到不同端口