内容导航:
- 前言
- 1、计数器的问题及优化
- 2、创建监听器类
- 3、配置监听器
- 4、运行效果
前言
–
1、计数器的问题及优化
上一章的计数器案例的问题:计数器直接存储在上下文对象中,所以容器重启,或应用重新部署后,上下文对象将重新创建,所以计数从1开始。
优化目标:使用文本文件存储计数器的数值,当容器关闭时,把当前的数值保存到文本文件中;当容器启动时,从文本文件中读取数值。
实现思路:
- 容器何时启动或关闭是不确定的,但是只要容器关闭或启动,都会自动触发ServletContextEvent事件,只要能处理这个事件即可。
- 处理该事件的接口已经定义,是ServletContextListener
- 因此只要编写上下文监听器,就可以实现。
2、创建监听器类
创建监听器类VisitCountListener,在该类的包目录下,创建文本文件visitcounts.txt,用来保存登录次数
注意:文本文件存在src目录下,运行时存在于WEB-INF/classes目录下。
VisitCountListener类实现接口ServletContextListener,其中有两个方法, contextInitialized方法在上下文初始化时自动调用, contextDestroyed方法在上下文被销毁时自动调用。
-
contextInitialized方法
读visitcounts.txt文件,把其中内容存储在上下文属性中。 -
contextDestroyed方法
读取上下文中的count属性,保存到visitcounts.txt文件中。
3、配置监听器
监听器创建后,必须配置方能生效。
<listener><listener-class>com.company.project.listener.VisitCountListener</listener-class>
</listener>
4、运行效果
登录多次,显示计数器为16。
关闭Tomcat,重新启动,可以见到计数从17开始,不再从1开始
好好学习,天天向上!继续下一章…👏👏👏👏👏👏