zoukankan      html  css  js  c++  java
  • 监听器在线用户列表

    index.jsp

    在线用户列表:<br>
    <%
    List<User> userList = (List<User>)application.getAttribute("userList");
    if(userList!=null) {
        for(User u : userList) {
            out.print(u+"<br>");
        }
    }
    %>

    User.java

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class User {
        private String sessionid;
        private Date firstTime;
    
        public String getSessionid() {
            return sessionid;
        }
    
        public void setSessionid(String sessionid) {
            this.sessionid = sessionid;
        }
    
        public Date getFirstTime() {
            return firstTime;
        }
    
        public void setFirstTime(Date firstTime) {
            this.firstTime = firstTime;
        }
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((firstTime == null) ? 0 : firstTime.hashCode());
            result = prime * result + ((sessionid == null) ? 0 : sessionid.hashCode());
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            User other = (User) obj;
            if (firstTime == null) {
                if (other.firstTime != null)
                    return false;
            } else if (!firstTime.equals(other.firstTime))
                return false;
            if (sessionid == null) {
                if (other.sessionid != null)
                    return false;
            } else if (!sessionid.equals(other.sessionid))
                return false;
            return true;
        }
    
        @Override
        public String toString() {
            return "User [sessionid=" + sessionid + ", 最近登录时间="
                    + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(firstTime) + "]";
        }
    
    }

    TestSessionlistener.java

    public void sessionCreated(HttpSessionEvent sessionEvent) {
            userCount++;
            if(userList==null) {
                userList = new ArrayList<User>();
            }
            HttpSession session = sessionEvent.getSession();
            
            String sessionid = session.getId();
            long stime = session.getCreationTime();
            
            if(!checkUsersSession(sessionid, userList)) {
                User u = new User();
                u.setFirstTime(new Date(stime));
                u.setSessionid(sessionid);
                userList.add(u);
            }
            
            session.getServletContext().setAttribute("userCount", userCount);
            session.getServletContext().setAttribute("userList", userList);
        }
    
        private boolean checkUsersSession(String sessionid, ArrayList<User> userList2) {
            for(User u : userList2) {
                if(u.getSessionid().equals(sessionid)) {
                    return true;
                }
            }
            return false;
        }
    
        /**
         * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
         */
        public void sessionDestroyed(HttpSessionEvent sessionEvent) {
            userCount--;    
            HttpSession session = sessionEvent.getSession();    
    
            String sessionid = session.getId();
            System.out.println(sessionid + "的用户下线");
            
            if(checkUsersSession(sessionid, userList)) {
    //            for(User u : userList) {
    //                if(sessionid.equals(u.getSessionid())) {
    //                    userList.remove(u);
    //                }
    //            }
                Iterator<User> iter = userList.iterator();
                while(iter.hasNext()) {
                    User u = iter.next();
                    if(u.getSessionid().equals(sessionid)) {
                        iter.remove();
                    }
                }
            }
            session.getServletContext().setAttribute("userCount", userCount);
            session.getServletContext().setAttribute("userList", userList);
        }
    
    }
  • 相关阅读:
    颜色代码 #000~#FFF & DML案例设计
    SQLScript DML 创建 & 查询 & 序列(条件查询 日起查询 关联查询 子查询 分组查询 查询内容拼接 模糊查询)
    Java JDBC 连接数据库 Demo
    document的JavaScript一些用法
    dxSpreadSheet的报表demo-关于设计报表模板问题
    dxSpreadSheet的报表demo-关于设计报表模板的Datagroup问题
    TJSON的烦人的泄漏
    dxSpreadSheet的报表
    TDXSpreadSheet中自定义公式函数三大步骤
    SVN项目监视器的配置文件
  • 原文地址:https://www.cnblogs.com/jgjk/p/7441771.html
Copyright © 2011-2022 走看看