一、什么是Servlet对象的生命周期
Servlet对象是由谁来维护
(1)Servlet对象的创建,对象上方法的使用,对象最终的销毁,JavaWeb程序员是无权干预的。
(2)Servlet对象的生命周期是由Tomcat服务器(WEB Server)全权负责
(3)Tomcat服务器通常我们又称为:WEB容器(WEB Container)
(4)注意:自己new的Servlet对象是不受WEB容器管理的。
(5)WEB容器创建的Servlet对象,这些Servlet对象都会被放到一个集合中(HashMap),只有放到这个HashMap集合中的Servlet才能被WEB容器管理,自己new的Servlet对象不会被WEB容器管理。
服务器启动时,Servlet对象有没有被创建出来(默认情况下)
(1)默认情况下,服务器在启动时Servlet对象不会被创建。
(2)如何使Servlet对象在服务器启动时就被创建:在web.xml中的servlet标签中添加子标签load-on-startup,在该字标签中填写整数,缺省值就是不会创建对象,整数越小优先级越高,不能为负数。
Servlet的生命周期
(1)Servlet对象是单例的。【但是Servlet类并不符合单例模式,称为假单例。Tomcat只创建了一个Servlet对象,所以导致了单例。真正的单例,构造方法是私有化的。】
(2)无参构造方法、init方法只在第一次用户发送请求的时候执行。
(3)只要用户发送一次请求,service方法就被Tomcat调用一次。
(4)服务器关闭时,Servlet的destroy方法只被Tomcat调用一次,服务器在销毁对象之前,Tomcat服务器会自动调用对象的destroy方法。
(5)destroy方法执行的时候,Servlet对象还在,执行之后对象才被销毁。【因为destroy方法是实例方法】
二、Serlvet接口的五个方法
init()
1、通常在init()中做初始化操作,并且这个初始化操作只用执行一次。例如:初始化数据库连接池,初始化线程池....
2、init()方法用的较少
destroy()
1、通常在destroy()方法中,进行资源的关闭,或者资源的保存操作。
2、用的也较少