Servlet的生命周期
1.新建一个java类HelloServlet,并通过注解的方式
2.体验Servlet的生命周期
在Servlet接口中有五个方法;
(a)init()方法
(b)getServletConfig()方法
(c)service()方法
(d)getServletInfo()方法
(e)destroy()方法
(1)在上面五个方法中,(a)©(e)是属于Servlet生命周期的方法,分别是初始化Servlet、执行Servlet的业务方法以及销毁Servlet。
我们分别重写(a)©(e)方法:
(2)编译运行,并在打开的浏览器页面地址内输入我们自定义的地址,回车,观察IDEA控制台的输出信息;
再次刷新浏览器页面,观察IDEA控制台的输出信息:
我们发现,在浏览器(客户端)发出请求后,后端会在Servlet容器中查找是否含有我们的目标对象(HelloServlet对象),没有的话就会创建该对象,同时调用init()方法来完成初始化操作,然后再执行service()方法
在浏览器再次发出请求后,后端同样会在Servlet容器中查找是否含有我们的目标对象(HelloServlet对象),若有,就不需要再次创建对象并初始化,直接调用已有对象的service方法即可
(3)关闭
点击关闭当前运行的程序
控制台输出信息;
此时Servlet的生命周期结束
对象的创建
在浏览器(客户端)首次发出请求后,后端会在Servlet容器中创建HelloServlet对象,但是我们并没有在程序中使用new关键字去创建对象,那么这个对象是怎么创建的呢?
是通过Tomcat创建的,使用的是反射原理
我们在使用基于XML的方法时,在添加的标签1中的第二行代码中,详细的写出了当前类的全类名,Tomcat正式通过这个拿到了当前类的构造函数
(1)我们在类HelloServlet中创建一个无参的构造函数
重新编译运行,在浏览器中发起请求,观察IDEA控制台输出信息
刷新浏览器,多次发出请求
可以看到,HelloServlet对象的创建只有一次
总结
(1)当浏览器访问Servlet的时候,Tomcat会查询当前Servlet的实例化对象是否存在,如果不存在,则通过反射机制动态创建对象,如果存在就直接执行第(3)步
(2)调用init方法完成初始化操作
(3)调用service方法完成业务逻辑操作
(4)当关闭Tomcat时,会调用destory方法,释放当前对象所占用的资源
Servlet的生命周期方法
包括四个:无参构造方法、init、service、destory
(1)无参构造器:只调用一次,创建对象
(2)init只调用一次,初始化对象
(3)service调用n次,执行业务方法
(4)destory只调用一次,卸载对象