初学Servlet学习笔记之Listener

来源:互联网 发布:天才抢手 知乎 编辑:程序博客网 时间:2024/06/14 16:22

(作者是初学者,写博文纯粹为了做学习笔记,方便日后回顾,不当言论请见谅)

今天读到HttpSessionListener,get到一种显示当前在线登陆人数的方法,通过实现HttpSessionListener接口,可以通过sessionCreated()实现当登陆页面用户登陆成功session创建时人数自增1,如

    public void sessionCreated(HttpSessionEvent arg0)  {
         //当session被创建的时候自动加一
         OnlineUserCounter.counter++;
    }

通过sessionDestroyed()实现当session被销毁时人数自减1,即

 public void sessionDestroyed(HttpSessionEvent arg0)  {
         // TODO Auto-generated method stub
        OnlineUserCounter.counter--;
    }


另外,有时为了防止用户在不同浏览器重复登录,在用户登录成功时,会同时修改数据库中关于用户成功登录的字段信息,但是该做法会带来一个问题,比如当用户未选择注销而不小心关闭了浏览器时,session已被销毁而数据库中字段并未改变,这会导致用户无法再次登录,而HttpSessionListener可以实现在session创建时修改字段信息(例如为’已登录‘),在session被销毁时修改字段信息(例如’已注销‘),解决这一问题。如

public void sessoinDestroyed(HttpSessionEvent se) {

  HttpSession session = se.getSession();

 String user = session.getAttribute("login");

//修改数据库中字段为'注销'..........

}


接下来说一下HttpSessionBindingListener, 当用户登录成功时,在把某对象(例如用户名等)加入HttpSession中作为属性时,让该对象所属类实现HttpSessionBindingListener接口可以收到HttpSession的通知而实现在用户登录成功管理者想要做的功能。

public void valueBound(HttpSessionBindingEvent event){

   HttpSession session = event.getSession();

   // ...........................如从数据库中加载用户的各种数据

}

public void valueUnbound(HttpSessionBindingEvent event){

//................................

}


关于HttpSession还有很多知识,这里就做部分记录


0 0
原创粉丝点击