package list;
import javax.servlet.http.*;
import javax.servlet.*;
import java.util.*;
public class onLineUser implements HttpSessionBindingListener {
public onLineUser(){
}
private Vector users=new Vector();
public int getCount(){
users.trimToSize();
return users.capacity();
}
public boolean existUser(String userName){
users.trimToSize();
boolean existUser=false;
for (int i=0;i<users.capacity();i++ )
{
if (userName.equals((String)users.get(i)))
{
existUser=true;
break;
}
}
return existUser;
}
public boolean deleteUser(String userName) {
users.trimToSize();
if(existUser(userName)){
int currUserIndex=-1;
for(int i=0;i<users.capacity();i++){
if(userName.equals((String)users.get(i))){
currUserIndex=i;
break;
}
}
if (currUserIndex!=-1){
users.remove(currUserIndex);
users.trimToSize();
return true;
}
}
return false;
}
public Vector getOnLineUser()
{
return users;
}
public void valueBound(HttpSessionBindingEvent e) {
users.trimToSize();
if(!existUser(e.getName())){
users.add(e.getName());
System.out.print(e.getName()+"\t 登入到系统\t"+(new Date()));
System.out.println(" 在线用户数为:"+getCount());
}else
System.out.println(e.getName()+"已经存在");
}
public void valueUnbound(HttpSessionBindingEvent e) {
users.trimToSize();
String userName=e.getName();
deleteUser(userName);
System.out.print(userName+"\t 退出系统\t"+(new Date()));
System.out.println(" 在线用户数为:"+getCount());
}
}
jsp里
<jsp:useBean id="onlineuser" class="list.onLineUser" scope="application"/>
<% session = request.getSession(false); %>
<%
String username=(String)session.getAttribute("ID");
if (onlineuser.existUser(username)){
}else{
session.setMaxInactiveInterval(1200); //file://Sesion有效时长,以秒为单位
session.setAttribute(username,onlineuser);
}
out.println("在线人数:"+onlineuser.getCount()+"<br/>");
Vector vt=onlineuser.getOnLineUser();
Enumeration e = vt.elements();
out.println("在线用户列表");
while(e.hasMoreElements()){
out.println((String)e.nextElement());
}
%>
在被直接关闭的页面中
<body onunload="if(window.screenLeft>=10000&&window.screenTop>=10000){window.open('./userexit.jsp','','width=50,height=30')}">
userexit.jsp页面处理将session失效
分享到:
相关推荐
它允许开发者在用户浏览器会话期间保持特定数据,这对于处理用户登录、防止重复登录以及统计在线用户数等场景非常有用。本解决方案的核心就是巧妙地利用了`Session`对象的功能。 首先,我们来理解`Session`的基本...
### JSP实现在线人数及在线用户统计 #### 知识点概述 在现代Web开发中,统计在线人数和在线用户是十分重要的功能之一,尤其是在构建社区、论坛等交互性强的网站时。通过JSP(JavaServer Pages)可以方便地实现这一...
在本文中,我们将深入探讨OpenFire系统及其所有在线用户的管理。 首先,让我们理解"OpenFire所有在线用户"这个标题。这指的是OpenFire服务器上的功能,它能够追踪并显示当前处于在线状态的用户。通过服务器的插件...
统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率。现在,我们就介绍一个简单明了的方法...
在"jsp中监听器实现在线用户统计"这个场景下,我们需要关注的是如何利用监听器来跟踪和管理在线用户。 首先,我们要理解Servlet监听器的概念。Servlet监听器是实现了Java Servlet API中特定接口的Java类,这些接口...
在JAVA Web开发中,实现在线用户统计是一项关键功能,它能够帮助网站或应用程序的管理员实时了解当前有多少用户正在访问和使用系统。这个“JAVA Web在线用户统计”解决方案显然是强大、好用且简单的,这意味着它可能...
"TPS在线用户和并发的关系" 在进行压力测试和性能优化时,了解TPS在线用户和并发的关系非常重要。本文将详细解释TPS在线用户和并发的关系,包括在线用户数和压力线程之间的关系、并发用户数的计算、并发度的计算等...
1. **服务接口定义**: 首先,我们需要定义一个WCF服务接口,其中包含方法如`GetOnlineUsers`(获取在线用户列表)和`SendMessage`(发送消息)。这些方法使用数据合同(Data Contracts)来定义输入和输出数据格式。 ...
10套论坛超炫在线用户图标10套论坛超炫在线用户图标
lotus domino 命令显示在线用户
用户登录时,调用LoginServlet,将用户名写入application的在线用户列表中,用户退出时,调用LogoutServlet,调用session.invalidate(),交给HttpSessionListener的sessionDestroyed()方法,将用户从在线列表中删除。...
在IT行业中,尤其是在Web开发领域,判断用户是否在线和实时统计在线人数是...对于大型的Web应用,可以使用更高级的解决方案,如Redis缓存来存储在线用户,或者使用消息队列来异步处理用户状态更新,提高系统的性能。
自己写的获取所有在线用户的openfire插件,直接上传到openfire服务器即可使用,访问路径为host:port/plugins/onlines/listall
在讨论用户并发数和在线数的关系之前,我们首先需要了解什么是“系统用户数”、“同时在线用户数”和“并发用户数”。 系统用户数是指可能使用该系统的用户总数。在我们的例子中,该系统有2000个使用用户,这就是...
在这个场景中,我们关注的是如何利用`Session`来控制用户的重复登录以及统计在线用户数量。下面将详细介绍这两个核心知识点。 1. **重复登录控制**: 当用户成功登录后,通常会将用户的一些关键信息(如ID、用户名...
在Java编程领域,开发一个在线用户数统计组件是一项常见的任务,尤其对于构建实时Web应用程序和服务至关重要。这个组件的目的是提供一种高效、准确的方式来追踪和显示系统当前活跃的在线用户数量。下面将详细介绍...
最近所做的一个项目需要用到的在线用户列表,上网搜索了一下发现现有的解决方案对用户意外退出的处理均不是太理想。一般来说,用户离开系统的方式有三种:主动注销、会话超时、直接关闭浏览器,对于前两种,我们很...
【ASP.NET在线用户】是指在ASP.NET应用程序中实时跟踪并管理当前活跃的用户会话的技术。这涉及到Web应用程序的设计、用户认证、会话管理以及服务器性能优化等多个方面。以下是对这个主题的详细解释: 1. **ASP.NET...
# 基于Java Web的在线用户管理系统 ## 项目简介 本项目是一个基于Java Web的在线用户管理系统,旨在提供一个简单而有效的平台来管理用户会话和在线用户统计。通过使用Servlet、JSP、Filter、Listener等技术,实现...