分享

Java 统计用户是否在线状态 | 程序员的资料库

 dwlinux 2014-04-11

  Java 统计用户是否在线状态

统计登录用户是否在线,访问某个人的空间时,如果空间主人在线,就可以看到他在线的状态,适合多用户互动型网站。

监听器代码:

import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

/**
 * Java 统计用户是否在线状态
*/
public class OnLineUserListener implements HttpSessionAttributeListener {
       
        /**
         * 存放在线用户列表
         */
        public static List onLineUserList = new LinkedList();

        /**
         * 根据用户ID,查询用户是否在线
         * @param userId  用户ID
         * @return  true:表示用户在线   false:表示用户离线
         */
        public static boolean findUserOnLine(Integer userId){
                return onLineUserList.contains(userId);
        }
       

        /**
         * 用户登录时候,把用户的信息存到userSession里
     * UserSession类的结构很简单,只有userId,userName两个属性
         */
        @Override
        public void attributeAdded(HttpSessionBindingEvent se) {
                if ("userSession".equals(se.getName())){
                        /**
                         * 用户上线的话,把用户的ID,添加到onLineUserList里
                         */
                        Integer userId = ((UserSession)se.getValue()).getUserId();
                        onLineUserList.add(userId);
                        System.out.println("用户ID:"+userId + " 上线了");
                }
        }

        @Override
        public void attributeRemoved(HttpSessionBindingEvent se) {
                if ("userSession".equals(se.getName())){
                        /**
                         * 用户下线的话,把用户的ID,从onLineUserList中移除
                         */
                        Integer userId = ((UserSession)se.getValue()).getUserId();
                        onLineUserList.remove(userId);
                        System.out.println("用户ID:"+userId + " 下线了");
                }
        }

        @Override
        public void attributeReplaced(HttpSessionBindingEvent se) {
                // TODO Auto-generated method stub
        }
       
}

往 web.xml 文件添加监听器

<!– 监听用户状态   在线或离线 –>
<listener>
        <listener-class>com.xxx.util.OnLineUserListener</listener-class>                        
   </listener>
   <!–设置会话过期时间为5分钟   如果不设置,默认是30分钟–>
<session-config>
     <session-timeout>5</session-timeout>
</session-config>



转载请注明来源:程序员的资料库Java 统计用户是否在线状态

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多