java统计在线状态

import java.util.LinkedList;
import java.util.List;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;


/**
 * java统计用户在线状态
 * @author sunlightcs
 * 2011-6-26
 * http://hi.juziku.com/sunlightcs/
*/
public class OnLineUserListener implements HttpSessionAttributeListener {
	
	/**
	 * 存放在线用户列表
	 */
	public static List<Integer> onLineUserList = new LinkedList<Integer>();

	
	/**
	 * 根据用户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文件里,这样才可以达到监听的作用。
web.xml里,加入的代码如下:

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

 

来源:http://www.juziku.com/wiki/2399.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值