Servlet的生命周期是一种非常简的面向对象的设计.servlet首先被创建并进行初始化,然后开始对零人或多个请求提供服务,直至关闭为止.此时,servlet停止运行,所有的垃圾被收集起来.这种设计解释了为什么servlet是比CGI好的换代技术:servlet只须加载一次,它驻留内存中,并对请求提供服务
javax.servlet.Servlet接口说明了这个框架结构.Servlet接口定义了生命周期方法,这些方法是init()、service()、destroy()方法。
1.init()方法
Init()方法是servlet生命的起点。一旦加载了某个servlet,服务器将立即调用它的init()方法。在init()方法中,servlet创建和初始化它在处理请求时需要用到的资源。init()方法的语法定义如下:
public void init(ServletConfig config) throws ServletException;
init()方法使用ServletConfig对象作为参数.用户应当保存这个对象,以便在后面引用。实现这一点最通用的方法是让init()方法调用super.init(),并把ServletConfig对象传送给它
如果servlet不能对处理请求所需要的资源进行初始化,init()方法将抛出ServletException异常
2。Servlet()方法
Servlet()方法处理客户机发出的所有请求。在init()方法执行之前,它无法开始对请求提供服务,通常,我们不能直接实现这个方法,除非对GenerieServlet抽象类进行扩展。
实现service()方法最通用的办法是在HttpServlet类中实现。HttpServlet类通过扩展GenericServlet实现Servlet接口,而service()方法通过确定请求类型和调用适当的方法,支持标准的HTTP/1.1请求。service()方法的语法定义如下:
Public void service(ServletRequest req,ServletResponse res)
Throws ServletException,IOException;
service()方法实现了请求各响应过程,ServletRequest对象包含服务请求信息,并对客户机提供的信息进行封装。ServletResponse对象包含返回给客户机的信息。
3。destroy()方法
destroy()方法标志servlet生命周期的结束。当服务需要关闭时,它调用servlet的destroy()方法。此时,在init()方法中创建的任何资源都应该被清除和释放。如果有打开的数据库连接,应当在此处保存任何在下一次加载时需要用到的永久性信息。destroy()方法的语法定义非常简单,但我们还是在下列了出来:
public void destroy();
本文转自kenty博客园博客,原文链接http://www.cnblogs.com/kentyshang/archive/2007/01/24/629201.html如需转载请自行联系原作者
kenty