初学Servlet学习笔记之Listener

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

今天读到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还有很多知识,这里就做部分记录


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值