zoukankan      html  css  js  c++  java
  • Java判断当前用户数及当前登录用户数工具类-session原理

     JavaWeb开发中,有时会遇到统计或管理用户登录数或者当前在线多少用户,分别都是谁的情况。当然,实现途径多种多样。下面列举一下通过session实现的一种统计。

    public class MySessionListener implements HttpSessionListener {
     
       /**
        * 创建session
        */
       @SuppressWarnings({ "rawtypes", "unchecked" })
       public void sessionCreated(HttpSessionEvent event) {
          HttpSession session = event.getSession();
          ServletContext application = session.getServletContext();
          
          // 在application范围由一个HashSet集保存所有的session
          HashSet sessions = (HashSet) application.getAttribute("sessions");
          if (sessions == null) {
                 sessions = new HashSet();
                 application.setAttribute("sessions", sessions);
          }
          
          // 新创建的session均添加到HashSet集中
          sessions.add(session);
          // 可以在别处从application范围中取出sessions集合
          // 然后使用sessions.size()获取当前活动的session数,即为“在线人数”
       }
     
       /**
        * 销毁session
        */
       @SuppressWarnings("rawtypes")
       public void sessionDestroyed(HttpSessionEvent event) {
          HttpSession session = event.getSession();
          ServletContext application = session.getServletContext();
          HashSet sessions = (HashSet) application.getAttribute("sessions");
          
          // 销毁的session均从HashSet集中移除
          sessions.remove(session);
       }
       
       /**
        * 获取系统在线用户数及登录用户数
        * @param request 当前请求对象
        * @param flag=1当前在线用户数   flag=2当前登录用户数
        * @return
        */
       @SuppressWarnings("rawtypes")
       public static int getMaxUser(HttpServletRequest request,int flag){
            HttpSession session = request.getSession();
            ServletContext application = session.getServletContext();
            HashSet sessions=(HashSet)application.getAttribute("sessions");
            int countUser = sessions.size();
    //        System.out.println("###################当前在线人数:"+sessions.size());
    //        String onlineuser = "";
            int countOnlineUser = 0;
            for(Iterator it = (Iterator) sessions.iterator(); it.hasNext();){
                HttpSession se = (HttpSession) it.next();
                if(se!=null){
                    UserInfo ui = (UserInfo) se.getAttribute("USER_INFO");
                    if(ui!=null){
    //                    onlineuser += "___"+ui.getName();
                        countOnlineUser++;
                    }
                }
            }
    //        System.out.println("###################当前登录用户:"+onlineuser);
            return flag==1?countUser:countOnlineUser;
       }
     
  • 相关阅读:
    向量的基本运算
    tar 命令小解
    写一个块设备驱动11,12
    写一个块设备驱动9,10
    写一个块设备驱动7,8
    写一个块设备驱动5,6
    写一个块设备驱动1,2
    Linux驱动开发庖丁解牛系列
    Linux设备驱动程序(第三版)
    嵌入式系统移植基础三部曲 段彦青
  • 原文地址:https://www.cnblogs.com/dreamzhiya/p/5466831.html
Copyright © 2011-2022 走看看