关于listener

servlet api中提供了4个监听各种事件的监听器接口:

HttpSessionListener 用于监听session的创建和销毁

HttpSessionAttributeListener 用于监听向session中加入替换删除属性

HttpSessionBindingListener 用于监听session与某个属性绑定的事件

HttpSessionActivationListener 用于监听session 的激活与搁置(激活:就是把session从永久存储器中放入内存, 搁置:就是把session从内存放到永久存储器中)



其中HttpSessionListener 和HttpSessionAttributeListener 需要向servlet注册,也就是要到xml中加入<listener></listener>这个东西,而其他两个不用


刚刚做了统计在线人数的问题,用了两种不同的方法:

1:HttpSessionListener

让一个servlet实现这个接口,并在这个接口的两个方法sessionCreated(。。。) sessionDestroyed(。。。)中添加代码,使得每次新建一个session都会让在线人数加1。

2::HttpSessionBindingListener

让User这个类实现这个接口,在他的两个方法valueBound(。。。) 和valueUnbound(。。。)中添加代码,使得每次只要执行session.setAttribute(“user”,user);就使得在线人数加上一。



但是这两种方法的运行过程中遇到一个问题:有的用户可能不会正常退出,就是点击退出页面退出(这个页面有session.invalidate()或者session.removeAttribute("user",uesr)方法),这就导致我们的在线人数不会正确的减少。这个问题我还不知道怎么解决
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值