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);
        }
    
    }
  • 相关阅读:
    sql 语句系列(加减乘除与平均)[八百章之第十四章]
    并发系列64章(并发概要)第一章
    redis 一百二十篇(简单介绍)之第一篇
    sql 语句系列(分割ip)[八百章之第十四章]
    sql 语句系列(字符串之裂开)[八百章之第十三章]
    sql 语句系列(字符串之父与子之间)[八百章之第十二章]
    sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]
    sql 语句系列(用魔法打败魔法)[八百章之第十章]
    sql 语句系列(列举非索引外键)[八百章之第九章]
    sql 语句系列(列举系列)[八百章之第八章]
  • 原文地址:https://www.cnblogs.com/jgjk/p/7441771.html
Copyright © 2011-2022 走看看