Servlet的生命周期从Web服务器开始运行时开始,以后会不断地处理来自浏览器的访问请求,并将响应结果通过Web服务器返回给客户端,直到Web服务器停止运行,Servlet才会被清除。
(1)加载阶段
当Web服务器启动时,Servlet容器加载一个Java Servlet类,这个过程也有可能推迟到Web客户端请求Servlet服务器时发生。通常情况下,Servlet容器使用Java类加载容器加载一个Servlet,可以加载本地的Servlet,也可以加载远程的Servlet。注意:Servlet只需要被加载一次,然后将会实例化该类的一个实例或者多个实例
(2)初始化阶段
Servlet容器调用Servlet的初始化方法init()进行Servlet初始化。在初始化时,将会读取配置信息,完成数据连接等工作。在这个阶段,要给init()方法传入一个ServletConfig()对象,ServletConfig()对象包含了初始化参数和容器环境的信息,并负责向Servlet传递信息,如果传递失败,则会发生ServletException,Servlet将不能正常工作。在这种情况下,该Servlet将会被容器清除掉,但是不会调用destroy()方法释放资源,因为初始化尚未完成。清除该Servlet后,容器将重新初始化这个Servlet。但是如果抛出的是UnavailableException异常,并且该异常指定了最小的初始化间隔时间,那么至少需要等待该指定时间之后,才会进行新的Servlet的初始化
(3)Servlet运行阶段
当Web‘服务器接受到浏览器的访问请求后,将把该请求传递给Servlet容器。Servlet容器将请求包装成HttpServletRequest和HttpServletResponse对象,封装从Web客户端接收到HTTP请求和由Servlet生成的响应。并且用这两个对象作为参数,调用service()方法。在service()方法中,可以从HttpServletRequest类中提取来自HttpSession、request或cookies等对象的状态信息,进行特定应用的处理,并且用HttpServletResponse对象生成HTTP响应数据。容器在有些情况下会将多个Web‘请求发送给同一个Servlet实例进行处理。在这种情况下必须采取一定的手段处理多线程问题。一个简单的方法针对Servlet实现SingleThreadModel接口。这样就可以保证一次只会有一个线程访问service()方法。容器可以通过维护一个请求队列或者维护一个Servlet实例池实现这样的功能。
(4)Servlet结束时期
Servlet将一直运行到被服务器卸载,或者当Web服务器和容器关闭时。这种情况下将回收init()方法中使用的资源,如关闭数据库连接等。这些都是通过调用destrory()方法来实现的。容器在调用destrory()方法之前,他必须等待那些正在service()方法中执行的线程执行完毕或者在服务器定义的一段时间内执行(这个时间段在调用destroy()方法之前)。一旦destroy()方法被调用,容器就不会再向该实例发送任何请求。如果容器需要再使用该Servlet,它必须创建新的实例。destroy()方法完成后,容器必须释放Servlet实例以便它能够被垃圾回收机制回收。
分享到:
相关推荐
### Servlet生命周期详解 #### 一、引言 在Java Web开发中,Servlet作为一种重要的技术,被广泛应用于构建动态网页和处理客户端请求。了解Servlet的生命周期对于深入理解和掌握Servlet的工作机制至关重要。本文将...
初始化阶段是整个Servlet生命周期的第一个关键步骤,它标志着Servlet的开始。此阶段主要由以下步骤组成: 1. **Servlet容器加载Servlet类**:Servlet容器负责加载Servlet类,并将.Class文件的数据读入内存。这一...
### Servlet 生命周期演示代码详解 #### 一、Servlet 生命周期概述 在深入分析代码之前,我们先来了解一下 Servlet 的生命周期。Servlet 的生命周期主要包括三个阶段:初始化 (`init` 方法)、请求处理 (`service` ...
### SERVLET生命周期与JSP生命周期比较 #### 一、引言 在现代Web开发中,Servlet和JSP是两种非常重要的技术,它们都属于Java EE平台的一部分,主要用于构建动态Web应用程序。这两种技术各有特点,但又紧密相关,...
**Servlet生命周期** Servlet的生命周期可以分为三个主要阶段:初始化、服务和销毁。 1. **初始化阶段**: - 当Servlet首次被请求或者在web应用启动时,容器(如Tomcat)会加载Servlet类,并调用`init()`方法进行...
#### 三、Servlet生命周期详解 ##### 实例化 - **按需创建**:默认情况下,当第一次HTTP请求到达时,容器会创建Servlet的实例。 - **预加载**:通过在`web.xml`中配置`<load-on-startup>`标签,可以在应用启动时...
Servlet生命周期是Java Web开发中一个关键的概念,它描述了Servlet从创建到销毁的整个过程,这个过程由Servlet容器(如Tomcat)进行管理。Servlet生命周期主要分为三个阶段:初始化阶段、运行阶段和销毁阶段。 1. ...
Servlet生命周期和模板设计模式是Java Web开发中的两个关键概念,它们在构建动态Web应用程序时起着至关重要的作用。 首先,让我们深入理解Servlet的生命周期。Servlet是Java编程语言中的一种接口,用于扩展服务器的...
在Servlet生命周期中,init()方法只会被调用一次,service()方法会在每次用户请求时被调用,destroy()方法只会被调用一次,在Servlet生命周期结束时被调用。Servlet生命周期的正确实现是保证Servlet正确运行的关键。
java servlet生命周期 java servlet生命周期
servlet生命周期详细图解,矢量图。 详细的解释请参考本人博客:http://blog.csdn.net/dwyers/article/details/38435949
关于对Servlet声明周期的图例示意!
Servlet生命周期主要包括三个阶段:加载、初始化和销毁。当Web容器启动或者第一次接收到对Servlet的请求时,Servlet会被加载并实例化。然后,调用`init()`方法进行初始化,这个方法可以用来设置Servlet的初始状态...
Java WEB 篇七 Servlet 生命周期