servlet的生命周期相信大家在书上都有介绍,我就不再抄录书上的内容了,下面我用写程序的方式让大家理解一下servlet的生命周期。
myeclipse中,在代码编辑区右键出现的菜单中有很多快捷工具,override/implements methods选项能够显示该类和所继承的父类、根父类的方法。
任何类都继承Object类,HttpServlet继承GenericServlet,在GenericServlet中,实现了servlet初始化和销毁的方法。
package org.csu.coderlee.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; public class ServletLife extends HttpServlet{ @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("servlet is processing"); } @Override public void destroy() { // TODO Auto-generated method stub System.out.println("sesrvlet destroy"); } @Override public void init() throws ServletException { // TODO Auto-generated method stub System.out.println("servlet inits"); } }
在上述类中,覆盖了GenericServlet的init()和destroy()两个方法,这样在打开tomcat服务器,浏览器中请求该servlet的时候,首先会调用init方法初始化servlet,然后调用service方法,实现该servlet的功能,在我们关闭tomcat服务器的时候,destroy方法会被调用销毁该servlet。
首先会打印 servlet init,接下来会打印servlet is processing,在浏览器再次输出该servlet请求的时候,会输出seevlet is processing,而不会再次出现servlet init,这里就提现出这样的一个知识,servlet只有第一次被请求的时候才会被初始化,接下来无论你多少次请求,该servlet都不会被初始化。
接下来我们关闭tomcat服务器,在console窗口中会出现servlet destroy,该servlet成功被销毁。