(作者是初学者,写博文纯粹为了做学习笔记,方便日后回顾,不当言论请见谅)
今天读到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还有很多知识,这里就做部分记录