博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
The Life Cycle of a Servlet
阅读量:6983 次
发布时间:2019-06-27

本文共 1354 字,大约阅读时间需要 4 分钟。

  hot3.png

Servlet的生命周期由Servlet容器管理,包含如下几个步骤:
1. 装载Servlet类;
2. 创建Servlet的实例;
3. 调用Servlet的init()方法;
4. 调用Servlet的service()方法;
5. 调用Servlet的destroy()方法;
第1, 2, 3步属于servlet初始化过程,在Servlet的生命周期中,只会执行一次。
在哪些情形下Servlet会被初始化呢?
1). 在web.xml里配置了<load-on-startup>时,会在容器启动时初始化Servlet; 
 
test
com.code.servlets.TestServlet
1

2). 在第一次请求到Servlet时;
3). 服务器管理员可以直接向容器发出初始化Servlet的请求。
第4步会在每次HTTP请求到Servlet时执行。
第5步在容器卸载Servlet时执行。
下图说明了这5个步骤:
 
装载Servlet类
在调用一个Servlet前,容器必须先装载Servlet的类定义。这个过程和装载其它的类一样。
 
创建Servlet的实例
装载Servlet类定义后,容器会创建Servlet实例。
通常,Servlet类只有一个实例,并发地处理请求。但如果在web.xml里这样配置,会有多个类的实例:
  
 
test
com.code.servlets.TestServlet
test1
com.code.servlets.TestServlet

 
 
调用Servlet的init()方法
创建Servlet实例后,容器会调用实例的init()方法进行初始化。init()方法允许Servlet实例在处理请求前先初始化自身。
可以在web.xml里给Servlet指定初始化参数。
 
调用Servlet的service()方法
每次Servlet接收到请求时,会调用service() 方法。对于 HttpServlet 的子类来说,通常调用doGet(), doPost() 方法。
Servlet一旦被初始化后, service() 在Servlet的生命周期中会被多次调用。
 
调用Servlet的destroy()方法
当容器关闭或者重新装载整个web application 时,容器会卸载Servlet,调用它的destroy()方法。这一步骤只执行一次。
destroy()方法一般用于释放不能被垃圾回收机制回收的资源,如数据库的连接。
 
 
see also :

转载于:https://my.oschina.net/coda/blog/76855

你可能感兴趣的文章
微信小程序学习笔记 事件冒泡
查看>>
到底啥是JavaScript Mock
查看>>
深入理解Java虚拟机(一)之内存布局和对象的创建
查看>>
关于JavaScript对象,你所不知道的事(一)- 先谈对象
查看>>
如何用Python网络爬虫爬取网易云音乐歌曲
查看>>
MaxCompute/DataWorks权限问题排查建议
查看>>
一文读懂一个URL请求的过程是怎样的
查看>>
Java新手入门必须掌握的30个基本概念
查看>>
Android UI进阶之旅8 Material Design之TabLayout
查看>>
快速实现地图迁移数据可视化
查看>>
学习OpenGL ES之渲染到纹理
查看>>
zookeeper学习04 zookeeper收尾+dubbo前瞻
查看>>
Android 7.0 SystemUI 之启动和状态栏和导航栏简介
查看>>
《讲个故事》为什么IP地址与Mac地址 缺一不可
查看>>
华山论剑之浅谈iOS的生产线 工厂模式
查看>>
浅谈javascript异步发展历程
查看>>
在vscode使用editorconfig的正确姿势
查看>>
当心!你的密码正在被手机中的声音泄露!
查看>>
你用过 PropTypes 的这些类型检查么?
查看>>
回顾2016,展望2017!
查看>>