java Servlet(二)生命周期
来源:互联网 发布:大数据在传媒界的应用 编辑:程序博客网 时间:2024/05/01 01:30
一、定义
在你的应用加载并使用一个Servlet时,从初始化到销毁这个Servlet期间会发生一系列的事件。这些事件叫做Servlet的生命周期事件(或方法)。
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。Servlet生命周期的三个核心方法分别是 init() , service() 和 destroy()。每个Servlet都会实现这些方法,并且在特定的运行时间调用它们。以下是 Servlet 遵循的过程:
(1)Servlet 通过调用 init () 方法进行初始化。
(2)Servlet 调用 service() 方法来处理客户端的请求。
(3)Servlet 通过调用 destroy() 方法终止(结束)。
(4)最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
二、生命周期的方法
1 init() 方法
在Servlet生命周期的初始化阶段,web容器通过调用init()方法来初始化Servlet实例,并且可以传递一个实现 javax.servlet.ServletConfig 接口的对象给它。这个配置对象(configuration object)使Servlet能够读取在web应用的web.xml文件里定义的名值(name-value)初始参数。
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。
Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。
当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。
init方法定义如下:
public void init() throws ServletException { //初始化代码...}
2 service() 方法
初始化后,Servlet实例就可以处理客户端请求了。web容器调用Servlet的service()方法来处理每一个请求。service() 方法定义了能够处理的请求类型并且调用适当方法来处理这些请求。编写Servlet的开发者必须为这些方法提供实现。如果发出一个Servlet没实现的请求,那么父类的方法就会被调用并且通常会给请求方(requester)返回一个错误信息。
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
public void service(ServletRequest request,ServletResponse response) throws ServletException, IOException{}
service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重载 doGet() 或 doPost() 即可。
3 doGet() 方法
GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // Servlet 代码}
4 doPost() 方法
POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // Servlet 代码}
5 destroy() 方法
最后,web容器调用destroy()方法来终结Servlet。如果你想在Servlet的生命周期内关闭或者销毁一些文件系统或者网络资源,你可以调用这个方法来实现。destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。destroy 方法定义如下所示:
public void destroy() { // 终止化代码...}
参考文章
Servlet 生命周期|菜鸟教程
- java Servlet(二)生命周期
- Servlet初步(二) 生命周期
- Servlet基础(二) Servlet的生命周期
- Servlet学习(二)servlet生命周期
- 《Java Servlet编程》笔记(servlet生命周期)
- JavaWeb 学习笔记(二)Servlet生命周期
- Servlet的API和生命周期(二)
- 二、Servlet生命周期
- java web学习笔记(servlet生命周期)
- java servlet生命周期
- java servlet生命周期
- java servlet生命周期
- java(14)--servlet生命周期
- Java笔记--Servlet生命周期
- Java Servlet的生命周期
- Java多线程:(二)生命周期
- java-类生命周期(二)
- Servlet生命周期自学笔记二
- escape()、encodeURI()、encodeURIComponent()区别详解
- 安卓使用MediaPlayer和SurfaceView播放视频
- git学习笔记
- 搜索的的原理代码
- Loadrunner11的一些总结
- java Servlet(二)生命周期
- 最短路径(弗洛伊德算法)
- Output Un-compensite Point Feature to TEXT file/将未补偿测量点输出到文本文件的宏
- 自定义View-之Path类
- 第五届校内选拔javaC组-第五题位平方和
- STL中的迭代器学习
- ConcurrentHashMap,hashtable以及两者比较
- android监听手机解锁
- 分数的表示和四则运算