分为启动(加载web应用的有关数据,创建ServletContext对象,对Filter和一些Servlet初始化)、运行时(主要是Servlet容器调用service(方法))和终止(释放资源)三个阶段。
该过程可通过Tomcat的管理应用来控制应用的生命周期:
《Tomcat与javaweb开发技术详解》
Reload操作: 相当于先stop当前web应用,再start。
Undeploy操作: 从Tomcat卸除,web文件被删除。
## Servlet生命周期
就是Servlet容器控制的Servlet接口提供的init、service、destroy三个方法。
在Servlet的生命周期中,初始化和销毁只会发生一次,即init()和destroy()方法只会被Servlet容器调用一次。service()取决于客户端请求的次数。
实践验证:写一个继承于GenericServlet类的xxxservlet,设置三个全局变量分别在三个方法中打印,看结果,即可。
并且,可以有多个xxxservlet对象对应同一个xxxServlet类,尽管类代码一模一样,但属于不同的servlet,互相没有关系!!
《Tomcat与javaweb开发技术详解》
——————
## ServletContext与Web应用范围
Servlet容器在启动一个web应用时,会为它创建唯一的ServletContext对象,终止时销毁。
因此,ServletContext对象与web应用具有同样的生命周期。而且,ServletContext对象可以被web应用中的所有web组件共享。因此,可以利用该对象来存取web应用范围内的共享数据(可以是任意类型)。
《Tomcat与javaweb开发技术详解》
实践验证: 实现web统计访问次数的功能。先写一个Counter类,将其放入servletContext对象。(这里有一种技巧,就是怎么放??你总不能每次请求都放一次吧!所以,先从servletContext获取该对象,如果为null则将其放入,所以第二次以后都只是取,不会再执行放入的逻辑了,if不符合了啊,当且仅当第一次才符合)。