监听器完成 - 统计在线人数

本文介绍了一个简单的在线人数统计实现方案,通过监听HttpSession对象来记录用户的在线状态,并使用List集合来保存在线用户的sessionId,从而实现了基本的用户在线数量统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.List;
import java.util.Vector;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


/**
*
* @author db2admin
*
* 监听HttpSession对象,统计在线人数
*/
public class HttpSessionListenerHandle implements HttpSessionListener,
HttpSessionAttributeListener
{
private String AttributeName;

private Object AttributeValue;

private List OnlineNumber=new Vector(10);// 保存sessionId的List

private static HttpSessionListenerHandle HttpSessionListenerInstence = new HttpSessionListenerHandle();

public static HttpSessionListenerHandle getInstence()
{
return HttpSessionListenerInstence;
}

public List getSessionIdList()
{
return this.OnlineNumber;
}

public Integer getOnlineNumber()
{
return this.OnlineNumber.size();
}

public void attributeAdded(HttpSessionBindingEvent se)
{
AttributeName = se.getName();
AttributeValue = se.getValue();
System.out.println("####Session增加一个属性:");
System.out.println("AttributeName:" + AttributeName);
System.out.println("AttributeValue:" + AttributeValue);

}

public void attributeRemoved(HttpSessionBindingEvent se)
{
AttributeName = se.getName();
AttributeValue = se.getValue();
System.out.println("####Session删除一个属性:");
System.out.println("AttributeName:" + AttributeName);
System.out.println("AttributeValue:" + AttributeValue);

}

public void attributeReplaced(HttpSessionBindingEvent se)
{
AttributeName = se.getName();
AttributeValue = se.getValue();
System.out.println("####Session替换一个属性:");
System.out.println("AttributeName:" + AttributeName);
System.out.println("AttributeValue:" + AttributeValue);

}

public void sessionCreated(HttpSessionEvent se)
{
OnlineNumber.add(se.getSession().getId());
System.out.println("####创建一个Session");
System.out.println("Session Id:" + se.getSession().getId());
System.out.println("当前在线人数:" + getOnlineNumber());

}

/**
* 可以用于统计用户在线数
*/
public void sessionDestroyed(HttpSessionEvent se)
{
OnlineNumber.remove(se.getSession().getId());
System.out.println("####销毁一个Session");
System.out.println("Session id:" + se.getSession().getId());
System.out.println("当前在线人数:" + getOnlineNumber());
}

}

在web.xml中配置如下:

.............

<listener>
<listener-class>
com.cq.web.listener.HttpSessionListenerHandle
</listener-class>
</listener>

.........................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值