要查看 在线 人数..
使用 application 进行 用户UserId 进行存储.
1.需要自己实现 一个 SessionListener.
根据自己需要配置.
<session-config>
<session-timeout>3</session-timeout>
</session-config>
public interface HttpSessionListener
extends EventListener
{
public abstract void sessionCreated(HttpSessionEvent httpsessionevent);
public abstract void sessionDestroyed(HttpSessionEvent httpsessionevent);
}
当session失效 的时候 .将 application 里面的值 清除.
SessionSync implements HttpSessionListener
{
public void sessionDestroyed(HttpSessionEvent sessionEvent) {
//利用会话ID标示特定会话
System.out.println("Destroy a session:"
+ sessionEvent.getSession().getId());
ServletContext application = sessionEvent.getSession()
.getServletContext();
application.removeAttribute("sessionId_"+sessionEvent.getSession().getId());
}
......
}
格式是 "sessionId_" + session id
同样的代码也要添加到 注销的里面.
注销的时候页面清除 application 里面的存储.
application.removeAttribute("sessionId_"+request.getSession().getId());
2.登录的时候.
登录成功添加 application 里面的存储.
//登录成功.将sessionId和工号放到application里面.
application.setAttribute("sessionId_"+request.getSession().getId(),yourUserId);
response.sendRedirect("main.jsp");//
3.查看在线列表.
直接访问 application 里面的值. 因为前面添加了 sessionId 这样可以把其他 application 值过滤.
查看时候调用..
try {
Enumeration names = application.getAttributeNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
//判断.必须有一个前缀.sessionId_.以区分其他application变量.
if (null != name && name.indexOf("sessionId_") == 0) {
out.println("id:" + name + " == "
+ application.getAttribute(name));
}
}
} catch (Exception e) {
}
就可以看到在线列表了.
本地测试和想的是一样的.
分享到:
相关推荐
在Spring boot中通过HttpSessionListener监听器统计在线人数是一种常见的技术实现方式,适用于需要跟踪和管理用户会话状态的Web应用程序。以下是从给定文件中提炼的关键知识点。 首先,了解HttpSessionListener接口...
用户登录时,调用LoginServlet,将用户名写入application的在线用户列表中,用户退出时,调用LogoutServlet,调用session.invalidate(),交给HttpSessionListener的sessionDestroyed()方法,将用户从在线列表中删除。...
这个接口是Java Servlet API的一部分,通过实现它,开发者可以获取到Web应用中的在线用户数量以及历史访问量的信息。下面将详细介绍如何使用`HttpSessionListener`来实现这些功能。 首先,我们需要创建一个类并实现...
总之,通过使用`HttpSessionListener`和`ServletContext`,我们可以有效地实现J2EE应用程序中同一用户只能有一个在线会话的功能,确保系统的稳定性和安全性。这种方法可以防止资源浪费,提高用户体验,特别是在高...
在"jsp中监听器实现在线用户统计"这个场景下,我们需要关注的是如何利用监听器来跟踪和管理在线用户。 首先,我们要理解Servlet监听器的概念。Servlet监听器是实现了Java Servlet API中特定接口的Java类,这些接口...
5. **HttpSessionListener**:另一种实现方式是注册一个HttpSessionListener监听器,监听Session的创建和销毁事件,以此更新在线用户数量。这种方式更加精确,因为它能即时反映用户的登录和登出。 6. **数据持久化*...
- **统计在线用户**:通过监听Session创建和销毁,可以实时统计网站上的在线用户数量。 - **资源释放**:在Session销毁时,可以清理与之关联的数据库连接或其他资源。 - **安全控制**:检测长时间未活动的Session...
- 使用`HttpSessionListener`可以监控用户登录状态的变化,及时更新在线用户列表,从而确保各个子系统之间共享正确的用户状态信息。 - 通过`HttpSessionBindingListener`可以在用户登录时绑定必要的认证信息至会话中...
这两个示例可能分别演示了如何实现用户在线判断和在线人数统计的过程,通过代码实例让下载者更好地理解和应用这些技术。在实际项目中,可能还需要考虑并发控制、数据库持久化、分布式环境下的会话共享等问题,以保证...
例如,使用synchronized关键字来保护成员变量的方法实现,以及实现HttpSessionListener接口的监听器方法等。 文章的核心知识点包括: 1. 计数器在Web应用中的作用:用于追踪页面访问次数、用户活动等统计信息。 2...
总结起来,通过监听器实现在线人数统计的核心思路是监听用户登录和登出事件,动态更新一个全局计数器。在实际项目中,可能还需要考虑并发控制、异常处理、数据持久化等复杂情况,以确保统计的准确性和稳定性。
在这个关于"session统计在线人数.rar"的压缩包中,包含了Java编程语言的一个示例项目,主要用于演示如何通过session对象来跟踪和统计网站或应用程序中的在线用户数量。Java Session是服务器端为每个客户端会话分配的...
`HttpSessionBindingListener`接口提供了一种优雅的方式来跟踪用户的在线状态,从而实现统计在线用户数的功能。这篇文章将详细讲解如何利用`HttpSessionBindingListener`来获取在线用户数。 首先,我们需要理解`...
在Java Web开发中,统计在线用户数量是一项常见的需求,这通常涉及到监听器(Listeners)的使用。在这个课堂案例中,我们将学习如何利用`HttpSessionListener`接口来实现这一功能。`HttpSessionListener`是Java ...
在本主题“day18 监听器”中,我们将探讨如何利用监听器来统计在线人数、定时销毁超时session、实现session的钝化与活化,以及如何在系统中显示在线用户列表和实现踢人功能,从而防止用户自动登录。同时,还会涉及...
以上就是利用`HttpSessionListener`实现在线人数统计的基本步骤和原理,通过结合Java后端和JavaScript前端,可以实现动态、实时的在线用户统计功能。这种方法简单实用,但在高并发场景下可能需要优化,以避免频繁的...
**JSP 在线人数统计的实现** 在Web开发中,实时在线人数统计是一项常见的需求,它可以帮助网站管理员了解当前有多少用户正在访问网站,以便优化资源分配和服务质量。JSP(JavaServer Pages)作为Java Web开发的重要...
本项目通过实现`HttpSessionListener`接口,每隔一分钟动态更新在线人数,提供了高效且可靠的解决方案。以下是对这个话题的详细阐述: 1. **Java Servlet与HttpSessionListener** Java Servlet是Java EE平台中的...
在开发Java Web应用程序时,有时我们需要统计同时在线的用户人数,以便分析网站的活跃度或者进行资源优化。本文将深入探讨如何使用JSP(JavaServer Pages)和Servlet结合Java的session技术来实现这一功能。 首先,...
通过实现`HttpSessionListener`接口,我们可以监听Session的生命周期事件。下面是如何实现一个简单的Session监听器的步骤: 1. 创建一个类,实现`javax.servlet.http.HttpSessionListener`接口。例如: ```java ...