servlet研究之一 servlet生命周期概述

1.servlet的类架构及重要方法。
类架构主要分成三层
第一层是Servlet接口它里面有方法init(),service(),destroy()
第二层是抽象类GenercServlet它实现了第一层Servlet接口的init()和destroy()两个方法
第三层抽象类HtpServlet类它继承第二层GenercServlet实现Servlet接口,它还对不同的请求调用不同的do方法有doGet()和doPost()两种常用的
重要方法
init()初始化以及创建Servlet对像;
service()对请求进行响应;
destroy()销毁Servlet对像;

2.请用文字说明servlet的生命周期。
装载并实例化-->调用init()-->启动线程调用Servicec()-->销毁对像

3.servlet加载
servlet加载(实例化)由servlet容器控制。servlet可以在应用服务器启动时实例化,这些servlet会在web.xml中定义,并配置这个参数 <load-on-startup>n</load-on-startup>n的数字越小,优先级越高。如果不配置或者小于0则表示在客户端发出请求时才加载这个servlet。
如果没有事先在web.xml中定义服务器启动时装载,那么在服务运行中,第一次请求servlet时才被实例化。

4.servlet初始化
在初始化期间,Servlet实例可能通过抛出UnavailableException 或者 ServletException异常表明它不能进行有效服务。
如果一个Servlet抛出一个这样的异常,它将不会被置入有效服务并且应该被容器立即释放。在此情况下destroy方法不会被调用因为初始化没有成功完成。在失败的实例被释放后,容器可能在任何时候实例化一个新的实例,对这个规则的唯一例外是如果失败的Servlet抛出的异常是UnavailableException并且该异常指出了最小的无效时间,那么容器就会至少等待该时间指明的时限才会重新试图创建一个新的实例。

5.servlet销毁
容器没有被要求将一个加载的Servlet保存多长时间,因此一个Servlet实例可能只在容器中存活了几毫秒,当然也可能是其它更长的任意时间(但是肯定会短于容器的生存期)当容器决定将之移除时(原因可能是保存内存资源或者自己被关闭),那么它必须允许Servlet释放它正在使用的任何资源并保存任何永久状态(这个过程通过调用destroy方法达到)。容器在能够调用destroy方法前,它必须允许那些正在service方法中执行的线程执行完或者在服务器定义的一段时间内执行(这个时间段在容器调用destroy之前)。一旦destroy方法被调用,容器就不会再向该实例发送任何请求。如果容器需要再使用该Servlet,它必须创建新的实例。destroy方法完成后,容器必须释放Servlet实例以便它能够被垃圾回收。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值