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>
.........................
分享到:
相关推荐
在这个场景下,我们关注的是如何利用监听器来实现在线人数的统计。在线人数统计是一项重要的功能,特别是在构建实时交互的Web应用或者聊天室时,能够提供实时的用户活跃度信息。 首先,我们需要理解业务需求。当...
【标题】"留言本--用DAO模式设计,servlet,监听器统计在线人数"涉及到的是在Java Web开发中实现一个用户交互系统的核心技术。在这个项目中,DAO(Data Access Object)模式、Servlet以及监听器(Listener)是三个...
这里 我上传一个 关于监听器的一个小小案例,练手的监听器例子(统计在线用户人数和信息) ——————————————————————————————从不同浏览器等,访问我的网页时,统计的用户人数和用户...
当用户注销或会话超时时,监听器则会触发会话解除绑定事件,更新在线用户列表。 ```java public class onLineUser implements HttpSessionBindingListener { // ... } ``` ##### 2. 使用`Vector`集合存储在线用户...
为了实现在线人数统计,我们首先需要创建一个监听器类`OnLineDemo.java`,该类实现了`ServletContextListener`、`HttpSessionListener`和`HttpSessionAttributeListener`接口。 1. **监听器类`OnLineDemo.java`**:...
Java监听器实现在线人数统计的知识点主要包括以下几个方面: 1. Java监听器概念:在Java Web应用程序中,监听器是一种特殊的Java类,它可以监听Web应用中的特定事件。这些事件包括:上下文初始化事件、会话创建和...
在"监听器访问计数"的场景下,我们通常会使用HttpSessionListener或者HttpSessionAttributeListener来实现在线人数的统计。例如,当一个用户打开一个Web页面时,创建一个新的会话,监听器会接收到这个事件并增加在线...
- **在线用户数量管理**:通过监听器自动跟踪在线用户数量的变化,例如每当一个新的`HttpSession`被创建时,即可自动将在线人数计数器加一。 #### 三、监听器的实现方式 - **接口实现**:为了编写监听器,开发者...
5. **事件监听**:如果需要在特定事件(如页面加载完成)后启动动画,插件会使用`.on()`方法绑定事件监听器。 6. **兼容性检查**:由于不支持IE6、7、8,插件内部可能会有针对这些老版本浏览器的检测和处理代码,...
这可以通过监听HTTP请求,在Struts2的拦截器(Interceptor)中完成。拦截器在Action执行前后运行,可以对请求进行额外的处理,如增加点击次数计数。 5. **实现细节**: - 创建一个专门的统计拦截器,该拦截器检查...
在JavaWeb中,可以通过实现ServletContextListener、HttpSessionListener等接口来创建监听器,例如监听应用程序启动、关闭或会话创建、销毁等事件。 #### 2.3 实现方式 在示例代码中提到“FilterAndListener”,这...
【资源说明】 1、基于springboot+MyBatis实现的某房产平台系统源码+项目说明(毕设).zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机...HttpSessionListener监听器统计系统当前在线人数
程序的逻辑是先通过循环累加所有成绩求和,然后除以学生人数得到平均分,再通过`do-while`循环遍历数组,判断每个元素是否低于平均分,统计低于平均分的学生人数。 二、简单应用题 2. 第2题: - 此题涉及Java图形...
攀枝花学院课程设计 javaweb的图书管理系统 采用idea编写 技术: maven+jstl+el+jsp +servlet+mvc三层控制结构 完成书籍的增删查改操作,用户...具有前端验证 采用过滤器监听器 能统计总共历史在线人数和当然在线人数
- **监听器** 监听特定事件,如session状态变化,用于统计在线人数等。 - **执行顺序** 过滤器按web.xml配置顺序执行,拦截器在Action请求中按顺序调用,监听器响应特定事件。 6. **Filter工作原理** - 当请求...
- 监听器可以监听ServletContext、HttpSession和ServletRequest等对象的生命周期,如创建、销毁,以及属性修改,帮助实现高级功能,如会话管理、统计在线人数等。 6. **JDBC操作** - JDBC(Java Database ...
- **在线人数统计**:记录并展示当前在线用户数量。 - **断开连接**:在服务关闭时,断开所有客户端连接。 3. **客户端功能**: - **连接服务器**:客户端可以指定服务器的IP地址和端口号进行连接。 - **配置...
- **在线人数统计**:实时统计当前连接到服务器的用户数量。 - **断开连接**:在服务关闭时,主动断开所有客户端的连接。 **2. 客户端功能:** - **连接服务器**:客户端需要能够连接到运行聊天服务的服务器。 - **...
在Java Web开发中,`...通过实例代码,我们可以看到它如何帮助实现登录功能和统计登录人数,同时也展示了其在监听器中的应用。在实际开发中,掌握`ServletContext`的使用将有助于提升Web应用的灵活性和可扩展性。
- 监听器可以监听Web应用程序中的特定事件,如用户登录、注销等,可用于统计在线人数或实现自动登录功能。 7. **Spring框架**: - 虽然标签没有明确提及Spring,但在现代JavaWeb开发中,Spring框架经常用于依赖...