《Oracle Java EE编程指南》11-02:使用Listener实现登录计数器

上一章计数器的问题及修改目标

上一章的计数器的问题:计数器直接存储在上下文对象中,所以容器重启,或应用重新部署后,上下文对象将重新创建,所以计数从1开始。

修改目标:使用文本文件存储计数器的数值,当容器关闭时,把当前的数值保存到文本文件中;当容器启动时,从文本文件中读取数值。

实现思路:

  • 容器何时启动或关闭是不确定的,但是只要容器关闭或启动,都会自动触发ServletContextEvent事件,只要能处理这个事件即可。
  • 处理该事件的接口已经定义,是ServletContextListener
  • 因此只要编写上下文监听器,就可以实现。

实现步骤1:创建监听器类

创建监听器类VisitCountsListener,在该类的包目录下,创建文本文件visitcounts.txt,用来保存登录次数
注意:文本文件存在src目录下,运行时存在于WEB-INF/classes目录下。
VisitCountsListener类实现接口ServletContextListener,其中有两个方法, contextInitialized方法在上下文初始化时自动调用, contextDestroyed方法在上下文被销毁时自动调用。
contextInitialized方法:读visitcounts.txt文件,把其中内容存储在上下文属性中。
contextDestroyed方法:读取上下文中的count属性,保存到visitcounts.txt文件中

实现步骤2:配置监听器

监听器创建后,必须配置方能生效。


<listener>

猜你喜欢

转载自blog.csdn.net/goldentec/article/details/105337321
今日推荐