给你的session加个监听器

    技术2022-05-11  61

    今天一个学生问我怎么实现在网页里显示在线用户的名称——他已经使用了session,但是无法处理用户离开的情况,然后导致在线用户列表的无限增大。跟他说了自己在application中进行超时检查,更新application的时候就比较当前所有列表中的session是否超过自己指定的时间间隔。后来想了想,又给他提了使用给session加监听器的方法。但是提的时候自己也没有做过,所以只是说这种方式很复杂,建议他还是自己进行超时检查。刚才又看了看资料,发现实际上给session加监听器的方式很简单,不禁觉得自己有点误人子弟了,现在将方法写在这,借以告诫自己以后要严谨。 首先写一个SessionBinder类,它实现了HttpSessionBindingListener接口的valueBound方法和valueUnbound方法,示例代码如下: public class SessionBinder implements HttpSessionBindingListener {     public void valueBound(HttpSessionBindingEvent event){         //you can do anything you want!this method will be called when this binder is bind with any session.     }       public void valueUnbound(HttpSessionBindingEvent event) {         //you can do something while this session is invalidate     } } 现在写好了SessionBinder,我们现在选择在一个servlet中向session中加入这个监听器——在jsp中的代码书写与此相同 //省略前面的代码,此操作可能发生在servlet的doGet方法中,也可能是doPost方法中     HttpSession session = req.getSession(true);//首先获得需要加入监听器的session对象,req是HttpRequest对象     SessionBinder sb = new SessionBinder();//建立一个监听器对象     session.putValue("BinderObject",sb);//将监听器加入此session中,从此时开始执行sb的valueBound方法 //省略后面的代码 随后,如果整个session超时或者被用户中止之后,sb的valueUnbound自动执行

    最新回复(0)