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
分享到:
相关推荐
在这个场景中,我们关注的是一个名为"java代码统计工具"的应用,它专门用于统计.java文件中的代码行数和注释行数。这个工具包含了三个关键文件:`java代码统计工具.exe`是可执行程序,用户可以直接运行来执行统计;`...
Java Web在线人数统计是Web应用程序中常见的需求,用于获取当前网站活跃用户数量。这个功能的实现通常基于HTTP协议的工作机制,特别是对Session的管理和监听。本文将深入探讨如何使用Java Web技术来监听并统计在线...
在IT行业中,尤其是在Web开发领域,判断用户是否在线和实时统计在线人数是常见的需求,这有助于提供更好的用户体验和服务。这两个概念通常与Java Web和JSP技术密切相关,涉及到HTTP会话管理和数据结构的运用。 首先...
在Java编程中,监听器(Listener)是一种关键的机制,它允许程序对特定事件的发生做出反应。本主题将深入探讨如何使用...理解Java监听器的概念,并结合适当的工具和技术,能帮助你构建出稳定且高效的在线人数统计系统。
根据提供的文件信息,我们可以分析出该系统通过JSP、Servlet以及Java技术实现了一个简单的在线用户统计功能。下面将从以下几个方面进行详细解析: ### 一、项目架构与技术栈 本项目主要使用了JSP(Java Server ...
1. **会话管理**:Java中的HttpSession接口可以用来跟踪用户的在线状态。当用户打开网页时创建一个session,设置过期时间,如30分钟。如果在这段时间内用户有新的请求,就更新session的最后访问时间,否则视为离线。...
在Java Web开发中,统计在线人数是一项常见的...总结,统计Java Web在线人数是一个涉及用户状态管理、并发处理、数据持久化等多个技术领域的综合性问题。选择合适的实现方式取决于项目规模、性能需求以及团队的技术栈。
在Java JSP(JavaServer Pages)环境中,统计在线人数是一项常见的需求,这通常涉及到服务器端的会话管理、数据持久化以及实时性处理。这里我们将深入探讨如何利用JSP技术来实现这一功能。 首先,我们需要理解JSP的...
本教程将深入讲解如何利用Java的监听器机制来统计在线人数,具体涉及到ServletContextListener、HttpSessionListener以及HttpSessionAttributeListener。 首先,`ServletContextListener`是Java Servlet API中的一...
Java投票统计模块是一种用于实现在线投票功能的软件组件,它基于Java编程语言,提供了一整套解决方案来设计、实现和管理投票活动。该模块通常包括用户界面、后端逻辑、数据库交互以及安全控制等多个组成部分,使得...
以上就是实现一个基本的Java统计计数源代码类的步骤。这个类可以根据实际需求进行扩展,例如添加统计分类、时间窗口计数等功能。通过这样的设计,我们可以灵活地管理并统计各种数据,满足不同的业务场景需求。
【Java版SVN后台统计程序】是一个用于日常SVN(Subversion)版本控制系统管理的工具,它基于svnkit库开发。此程序的核心功能是每天自动收集关于代码变更、锁定和其他相关活动的信息,并将这些统计结果汇总成报告,...
在这个项目中,我们可以利用WebSocket来保持客户端与服务器之间的连接状态,从而实时统计在线人数。 **实现步骤** 1. **配置SpringBoot应用**:首先,我们需要创建一个SpringBoot项目,并添加相关的依赖,如Spring...
在IT领域,尤其是在Web开发中,用户在线状态管理和访问统计是关键的部分,它们对于提供良好的用户体验和服务至关重要。这里,我们主要关注"jsp用户在线,离线状态,在线统计与访问统计"这一主题。 首先,我们要理解...
在Java Web开发中,Session是服务器用来跟踪用户状态的一种机制。每个用户在访问网站时,服务器会为其创建一个唯一的Session ID,存储在客户端的Cookie中,每次请求时通过这个ID来识别用户。"JAVA的SESSION精准统计...
本示例中的代码是用于创建一个Java程序,该程序能够统计并处理图像的像素信息。程序的核心是`antiClock`类和`ImagePanel`类,它们分别实现了图像的显示和像素的抓取功能。 首先,`antiClock`类继承自`JFrame`,它是...
网络监控通常涉及网络接口的带宽使用、连接状态和错误统计。在Java中,`java.net`包提供了`Socket`和`ServerSocket`类用于创建网络连接,而`java.net.NetworkInterface`类则可以获取网络接口的信息,如IP地址、子网...
这个“Java实用组件-在线用户数统计”是《Java实用组件集》这本书的一个实践示例,它为我们展示了如何利用Java技术有效地进行用户在线状态的追踪和计数。 首先,我们要理解在线用户数统计的基本概念。在线用户通常...
《学生信息管理系统(成绩统计)Java》是一款基于Java编程语言开发的应用软件,旨在高效管理和统计学生的学习成绩。在教育管理领域,这样的系统极大地提升了工作效率,减少了人为错误,并为数据分析提供了便利。下面...
Java 8的Stream API体现了函数式编程的思想,它鼓励使用无状态和无副作用的函数,使得代码更易于测试和理解。在这个项目中,我们可能会定义一些Lambda表达式来实现过滤、映射等操作。 5. **收集器(Collectors)**...