servlet遵循一定生命的周期,servlet的生命周期由servlet容器管理。生命周期包含下边这些步骤
1、加载servlet类
2、创建servlet的实例
3、调用servlet init()方法
4、调用servlet service()方法
5、调用servlet destory()方法。
当servlet初始化加载的时候,1、2、3步只执行一次。默认情况下,servlet在收到第一个请求的情况下加载,当然你也可以强制容器在启动的时候加载servlet,可以看一下web.xml servlet的配置获取更多的信息。第4步执行多次,每一个http请求都会执行一次,执行第5步的时候是卸载servlet的时候,下边这个图可以说明一下这个情况。
Java servlet的生命周期
加载servlet类
在servlet调用前servlet容器必须加载它的类定义,这就和其他的类的加载一样。
创建servlet的实例
当servlet类加载完之后,servlet容器创建servlet的实例,通常讲,只有servlet的一个单的实例被创建,到这个servlet的并发的请求会在同一个实例上执行。这是由servlet容器来决定的事情,但是,通常情况下只有一个实例。
调用servlet的init()方法
当servlet实例被创建的时候,init方法被调用,这个init方法允许servlet在请求到来之前初始换自己。你可以参考上边的链接获取更多的信息。
调用servlet的service方法
对于servlet收到的每一个请求,servlet的service方法会被调用,对于httpservlet的一些热子类,比如doget ,dopost等方法都会被调用。只要是servlet在容器中是激活状态的,service方法就可以被调用。因此,生命周期中的这个步骤可以被执行多次的。
调用servlet的destory方法
当servlet容器卸载servlet的时候,destory方法会被调用,这个步骤只会被执行一次,因为servlet只可以被卸载一次。如果容器关闭的时候,servlet由容器卸载,或者容器重新加载整个web应用的时候。