public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener { public static List onLineUserList=new ArrayList(); public final static String LISTENER_NAME="user"; // 返回客户登录session的集合. public static List getSessions() { return sessions; } public void sessionCreated(HttpSessionEvent event) { // session创建时执行 ServletContext sc = event.getSession().getServletContext(); Integer countNum = (Integer) sc.getAttribute("userNum"); if(countNum == null) { countNum = new Integer(1); } else { countNum = new Integer(countNum.intValue() + 1); } sc.setAttribute("userNum", countNum); } public void sessionDestroyed(HttpSessionEvent event) { HttpSession session = event.getSession(); ServletContext application = session.getServletContext(); // 取得登录的用户信息 User user = (User) session.getAttribute("user"); if(!("").equals(user)&&null!=user){ onLineUserList=getSessions(); // 从在线列表中删除用户ID onLineUserList.remove(user.getId()); } } // 加入session增加属性的监听方法. public void attributeAdded(HttpSessionBindingEvent sbe) { // 判断存入的对象是否包含在list中,如果已包含则不添加 if (LISTENER_NAME.equals(sbe.getName())) { User user = (User)sbe.getValue(); if(!getSessions().contains(user)){ onLineUserList.add(user.getId()); } if(getSessions().size() == 0 ){ onLineUserList.add(user.getId()); }else{ // 判断存入的对象是否包含在list中,如果已包含则不添加 boolean bl = true; for (int i = 0; i < getSessions().size(); i++) { if(getSessions().getId().equals(user.getId())){ bl = false; break; } } if(bl){ onLineUserList.add(user.getId()); } } } } // session失效时的监听方法 public void attributeRemoved(HttpSessionBindingEvent sbe) { if (LISTENER_NAME.equals(sbe.getName())) { onLineUserList.remove(sbe.getValue()); } } // session覆盖时的监听方法. public void attributeReplaced(HttpSessionBindingEvent sbe) { } }
HttpSessionListener监听器,实现在线用户统计
最新推荐文章于 2021-02-25 03:35:58 发布