Servlet的生命周期
来源:互联网 发布:mac上怎么编辑文档 编辑:程序博客网 时间:2024/06/05 05:35
Servlet生命周期
一、Servlet的生命周期分为四个阶段:
1、创建servlet实例
2、初始化阶段,调用init()方法
3、响应客户请求阶段,调用service()方法
4、终止阶段,调用destroy()方法
二、下面就分别来介绍这四个阶段:
1、创建servlet实例
在默认情况下Servlet实例是在第一个请求到来的时候创建,以后复用。如果有的Servlet需要复杂的操作需要载初始化时完成,比如打开文件、初始化网络连接等,可以通知服务器在启动的时候创建该Servlet的实例。具体配置例如(web.xml):
<servlet> <servlet-name>TimeServlet</servlet-name> <servlet-class>com.test.servlet.TimeServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet>
附:servlet创建实例方法
Class cla = Class.ForName(“com.exam.servlet”);
Object servlet = cla.newInstance();
Servlet实例是通过tomcat容器创建的,像这种通过newInstance创建的实例,需要一个无参的构造方法,所以servlet的构造方法是无参的。
2、初始化
一旦Servlet实例被创建,Web服务器会自动调用init(ServletConfig config)方法来初始化该Servlet。其中方法参数config中包含了Servlet的配置信息,比如初始化参数,该对象由服务器创建。
(1)如何配置Servlet的初始化参数?
在web.xml中该Servlet的定义标记中,比如:
<servlet> <servlet-name>TimeServlet</servlet-name> <servlet-class>com.test.servlet.TimeServlet</servlet-class> <init-param> <param-name>user</param-name> <param-value>eff666</param-value> </init-param> <init-param> <param-name>blog</param-name> <param-value>http://blog.csdn.net/eff666/</param-value> </init-param></servlet>
配置了两个初始化参数user和blog它们的值分别为eff666和http://blog.csdn.net/eff666/, 这样以后要修改用户名和博客的地址不需要修改Servlet代码,只需修改配置文件即可。
(2)如何读取Servlet的初始化参数
ServletConfig中定义了如下的方法用来读取初始化参数的信息:
public String getInitParameter(String name)
参数:初始化参数的名称。
返回:初始化参数的值,如果没有配置,返回null。
(3)init(ServletConfig)方法执行次数
在Servlet的生命周期中,该方仅且执行一次。
(4)init(ServletConfig)方法与线程
该方法执行在单线程的环境下,因此开发者不用考虑线程安全的问题。
(5))init(ServletConfig)方法与异常
该方法在执行过程中可以抛出ServletException来通知Web服务器Servlet实例初始化失败。一旦ServletException抛出,Web服务器不会将客户端请求交给该Servlet实例来处理,而是报告初始化失败异常信息给客户端,该Servlet实例将被从内存中销毁。如果在来新的请求,Web服务器会创建新的Servlet实例,并执行新实例的初始化操作。
3、响应客户端请求
(1)service() 方法:
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()方法被调用时调用doGet,doPost方法,doPut,doDelete等适当的方法。所以,service()方法什么都不用做,但你需要重写doGet()或doPost()方法,但取决于你是什么类型的请求从客户端接收。doGet()和doPost()方法是最常用的方法,在每一个服务请求。下面是这两种方式中的签名。
1)doGet() 方法:处理GET请求的结果。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet code}
(2)doPost() 方法:处理POST请求的结果。
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet code}
4、终止阶段
(1)destroy() 方法:
一个servlet的生命周期结束时,destroy()方法只会被调用一次。这个方法可以让你的servlet关闭数据库连接,停止后台线程,释放servlet所占用的资源,并执行其他类似的清理活动的机会。
Servlet对象的destroy()方法被调用后,被标记为垃圾回收。 destroy方法通常被这样定义:
public void destroy() {// Finalization code...Super.destory(); }
到此就介绍完了,不正之处,请指正,谢谢!
- [Servlet]Servlet的生命周期
- 【Servlet】Servlet的生命周期
- Servlet详解---Servlet的生命周期
- Servlet入门----Servlet的生命周期
- Servlet的生命周期
- Servlet 的生命周期
- Servlet的生命周期
- 关于Servlet的生命周期
- [转]servlet的生命周期
- servlet的生命周期
- servlet的生命周期
- Servlet的生命周期
- Servlet的生命周期
- servlet的生命周期
- Servlet的生命周期
- servlet 的生命周期
- Servlet的生命周期
- Servlet的生命周期【转】
- 如何使用Intellij idea 创建web项目
- 在freeRTOS中一直fatfs文件系统遇到的问题
- 枚举
- jQuery Ajax
- iOS8视频硬编码-压缩率关键参数设置
- Servlet的生命周期
- jQuery Ajax2
- Number (Standard IO)
- mac 下安装tomcat
- JQuery(1)
- Y2K Accounting Bug
- Qt4过渡至Qt5
- 网上不能买烟,你知道吗?
- python byte code 的生成以投放到虚拟机的过程