原文地址:
http://www.zhongming.name/index.php/archives/89
import java.util.HashSet;
import java.util.Set;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import com.qy.pro.entity.system.User;
import com.qy.pro.util.Constant;
public class SessionListener implements ServletContextAttributeListener, HttpSessionAttributeListener {
private static Set<User> onLineUsers = new HashSet<User>();//用于保存在线用户
public static Set<User> getOnLineUsers() {
return onLineUsers;
}
//session创建后触发 ,将用户信息添加到静态的集合中
public void attributeAdded(HttpSessionBindingEvent arg0) {
if(arg0.getName().equals(Constant.USER_KEY)){
onLineUsers.add((User)arg0.getValue());
}
}
//清除session时触发
public void attributeRemoved(HttpSessionBindingEvent arg0) {
if(arg0.getName().equals(Constant.USER_KEY)){
onLineUsers.remove((User)arg0.getValue());
}
}
//session被替换时触发
public void attributeReplaced(HttpSessionBindingEvent arg0) {
if(arg0.getName().equals(Constant.USER_KEY)){
onLineUsers.add((User)arg0.getValue());
}
}
public void attributeAdded(ServletContextAttributeEvent arg0) {
}
public void attributeRemoved(ServletContextAttributeEvent arg0) {
}
public void attributeReplaced(ServletContextAttributeEvent arg0) {
}
}
然后在web.xml配置文件中添加以下内容:
<listener>
<listener-class>com.qy.pro.web.listener.SessionListener</listener-class>
</listener>
分享到:
相关推荐
在实际开发中,还可以结合`HttpSessionAttributeListener`来监听特定Session属性的变化,例如用户信息、购物车数据等,这在实现用户行为跟踪、购物车更新等功能时非常有用。 总的来说,Java Session监听器是Web应用...
总结起来,"SessionManager:Java监听器实现在线人数统计Demo"是一个基于Java Servlet技术的实例,它利用HttpSessionListener监听器来跟踪用户会话的创建和销毁,进而统计在线用户数量。这个过程涉及了Servlet API、...
在Java中,事件监听器的实现可以通过接口和类来实现。例如,我们可以定义一个事件监听器接口,包含事件处理方法,然后在事件源中注册事件监听器。当事件源触发事件时,事件监听器将被回调,执行相应的事件处理方法。...
通过以上这些方法,我们可以构建一个精确且稳定的Java Session统计系统,避免"SESSION可以为负数的BUG",确保服务的稳定性和用户体验。在实践中,根据具体的应用场景和需求,可能还需要考虑更多的细节和优化措施,如...
在这个场景下,监听器用于追踪用户的连接状态,从而提供实时的在线用户数量。 首先,我们要理解Java中的监听器接口。Java AWT和Swing库提供了多种事件监听器接口,如ActionListener、MouseListener等,但这里我们...
在"jsp中监听器实现在线用户统计"这个场景下,我们需要关注的是如何利用监听器来跟踪和管理在线用户。 首先,我们要理解Servlet监听器的概念。Servlet监听器是实现了Java Servlet API中特定接口的Java类,这些接口...
用户登录时,调用LoginServlet,将用户名写入application的在线用户列表中,用户退出时,调用LogoutServlet,调用session.invalidate(),交给HttpSessionListener的sessionDestroyed()方法,将用户从在线列表中删除。...
在本主题“day18 监听器”中,我们将探讨如何利用监听器来统计在线人数、定时销毁超时session、实现session的钝化与活化,以及如何在系统中显示在线用户列表和实现踢人功能,从而防止用户自动登录。同时,还会涉及...
1. 统计在线用户:通过监听Session的创建和销毁,可以统计网站的实时在线用户数量。 2. 用户行为分析:记录用户Session的活跃时间、访问路径等,用于分析用户行为。 3. 资源管理:在Session销毁时释放占用的资源,...
在Java中,我们可以使用`java.util.Timer`类、`java.util.TimerTask`类以及Java 8引入的`java.time`包中的接口来实现时间监听功能。下面将详细介绍这些方法。 1. **使用Timer和TimerTask** `java.util.Timer`类...
2. **在线用户统计**: 统计在线用户数量通常涉及到以下几个步骤: - **记录登录状态**:每当用户成功登录时,增加在线用户计数器,并将用户添加到在线用户列表中。可以创建一个全局变量或使用数据库来记录这个...
【Java Web 监听器统计在线用户及人数详解】 在Java Web开发中,实时统计在线用户数量是一项重要的功能,这通常涉及到对用户会话(Session)的管理。本篇文章将详细解析如何使用Java Web监听器来实现这一目标。 ...
总结,Java Web在线人数统计通过监听Session生命周期,结合适当的存储和显示机制,可以实现高效且实时的在线用户数量统计。理解这一机制对于提升Web应用的用户体验和优化服务器资源管理至关重要。
在Java编程中,监听数据库的变化是一项重要的任务,特别是在实时...通过以上分析,我们了解了Java实现数据库监听的多种方式,以及需要注意的关键点。具体实现时,应根据项目需求、数据库类型和性能要求选择合适的方法。
这可以通过访问一个全局维护的在线用户计数器或者查询数据库中的统计信息来实现。 6. **优化与注意事项**:为了防止因用户关闭浏览器而未正确注销导致的在线人数计算错误,可以设置一个心跳机制,定期发送请求以...
在JavaWeb开发中,"用session统计在线人数"是一个常见的需求,主要应用于网站或应用的实时用户活动监控。本文将详细解析如何利用session这一核心技术来实现这个功能。 首先,理解session的基本概念。在Web开发中,...
Java监听键盘事件可以通过使用Windows Hook机制来实现。通过设置键盘Hook,可以捕捉键盘按键事件,并将其传递给Java应用程序。Java应用程序可以通过JNI调用native方法来处理键盘事件。 四、Java监听鼠标事件 Java...
综上所述,实现基于Session的在线用户统计涉及多个方面,包括Session管理、事件监听、配置文件设置、页面交互和数据处理。通过合理利用这些技术和文件,可以有效地统计并展示网站的在线用户情况。
- **统计在线用户**:通过监听Session创建和销毁,可以实时统计网站上的在线用户数量。 - **资源释放**:在Session销毁时,可以清理与之关联的数据库连接或其他资源。 - **安全控制**:检测长时间未活动的Session...
根据提供的文件信息,我们可以分析出该系统通过JSP、Servlet以及Java技术实现了一个简单的在线用户统计功能。下面将从以下几个方面进行详细解析: ### 一、项目架构与技术栈 本项目主要使用了JSP(Java Server ...