在学习Servlet生命周期之前我们应该回顾一下两个问题:
1、什么是Servlet?
答:Servlet是一种独立于平台和协议的服务器端的Java技术,可以用来生成动态的Web界面。(Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,他不能独立运行,他的运行完全由Servlet引擎控制盒调度。)
2、Servlet的作用?
答:Servlet主要用于处理客户端传来的http请求,并返回一个响应。
理解上面两个问题后,让我们具体分析一下Servlet的生命周期。
第一阶段:
①、加载并创建Servlet的实例对象; ②、调用Servlet的init()方法。
之所以把第一阶段分为两个小阶段,是因为这个两个小阶段在逻辑上是独立的,但是实际上当触发事件发生时又是依次(没有中断)执行的。
触发事件:一共有两种情况可以触发第一阶段的发生。
①:Web应用程序启动时,但是需要在web.xml文件中进行如下配置
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>mypackage.TestServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
这里的1代表优先级,可以为1~5任意整数,数字越小优先级越高。
②:客户端首次向Servlet发送请求时。
第二阶段:
处理http请求,调用Servlet的service()方法。
触发事件:客户端向Servlet发送请求时。
第三阶段:
终止服务,调用destroy()方法,释放所有使用资源。
触发事件:Web应用程序停止时。
以上便是Servlet的生命周期,在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service()方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service()方法再根据请求方式分别调用doXXX()方法。