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)方法),这就导致我们的在线人数不会正确的减少。这个问题我还不知道怎么解决
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)方法),这就导致我们的在线人数不会正确的减少。这个问题我还不知道怎么解决