通过HttpSessionListener 实现 在线用户 .

要查看 在线 人数..

 

使用 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) {
	}

 就可以看到在线列表了.

 

本地测试和想的是一样的.

 

时间: 2024-11-09 06:00:34

通过HttpSessionListener 实现 在线用户 .的相关文章

JavaWeb-网站在线用户信息、网站访问量以及管理踢出用户实例

转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 这个稍微比上个版本做得完善了一点,用了JavaBean来封装用户信息,添加了一个管理踢用户的功能. 上一个的用户访问量是通过监听request来统计的,在这个实例中,我们也可以通过过滤器来实现统计网站访问量. 直接看源码吧,感觉没多少要讲的,我习惯把解释写在代码中. 部分源码 index.jsp: <%@ page language="java" import=&

JavaWeb-Servlet技术的监听器-解析与实例-网站在线用户信息与网页点击量

转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 在Web项目中,我们对下面这几个监听器必须熟练的使用,它们的作用真的很大.熟练的使用后,可以使我们少绕弯路,少写很多代码. 事件源 监听对像的创建和销毁 监听对像上属性的添加和删除 HttpSession HttpSessionListener HttpSessionAttributeListener - HttpSessionEvent ServletRequest Servl

Dr.COM同时查看相同的登陆在线用户信息

  1.将[多网关Dr.COM在线用户接口.rar]和[模拟行为监控系统的接收程序.rar]解压到任意目录下; 2.阅读[多网关Dr.COM在线用户接口]中的readme.txt,设置[ac.properties]参数; 3.设置[NetCService.ini]参数; (当只想运行一个模拟行为监控系统的接收程序时,将[ActionFilterAgent1]改为[ActionFilterAgent2]或其他不连续的值,这样避免Dbgview.exe报错) 4.运行[service_config.

使用ASP记录在线用户的数量

在线 网络的访问量是每一个做网站的网友们都非常关心的问题.如何得知有多少个人正在访问你的网站呢?如何将每天的访问量记录下来? 下面就是一个解决方案. 当有用户开始访问网站时,服务器端的Global.asa将会被访问.将会给用户开启一个Session.可以给每一个用户设置自己的个人用户信息.这里就不多进行解释了.在Global.asa中有当Application启动和Session启动时的消息响应函数.可以敲入如下的代码: < SCRIPT LANGUAGE="VBScript"

ASP.NET中在线用户统计的简单实现及讨论

asp.net|统计|在线     统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率.现在,我们就介绍一个简单明了的方法来统计在线用户的多少,该方法的特点就是充分的利用了ASP.NET的特点,结合global.asax文件,用Application和Session巧妙的实现在线用户的统计,由于程序中只用到一个Application,所以,程序占用系统资源几乎可以忽略不及,当然,这也

JSP中基于Session的在线用户统计分析

JSP作为后起之秀能够在服务器编程环境中占据一定地位,是和它良好支持一系列业界标准密切相关的.Session就是它提供的基础设施之一.作为一个程序员,你可以不介意具体在客户端是如何实现,就方便的实现简单的基于session的用户管理.现在对于处理在线用户,有几种不同的处理方法. 一种是页面刷新由用户控制,服务器端控制一个超时时间比如30分钟,到了时间之后用户没有动作就被踢出.这种方法的优点是,如果用户忘了退出,可以防止别人恶意操作.缺点是,如果你在做一件很耗时间的事情,超过了这个时间限制,sub

一个统计当前在线用户的解决方案,可以在聊天室、论坛、网站中使用

解决|聊天室|统计|在线 在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数.游客人数.会员人数.在线用户列表,包括游客.会员和管理员(如果是游客,则自动生成游客的ID,如果是会员,则显示会员姓名).因为它要求有实时性,则首先我将用global.asa解决的想法pass掉. 问题的关键是如何判断用户已经离开,和当用户离开时如何执行一个文件或一个函数. 经过和网上一些朋友的探讨,终于解决了这个问题. 解决的原理为:编写一个通用页面,所谓的通用页

一个统计当前在线用户的解决方案

解决|统计|在线 在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数.游客人数.会员人数.在线用户列表,包括游客.会员和管理员(如果是游客,则自动生成游客的ID,如果是会员,则显示会员姓名).因为它要求有实时性,则首先我将用global.asa解决的想法pass掉. 问题的关键是如何判断用户已经离开,和当用户离开时如何执行一个文件或一个函数. 经过和网上一些朋友的探讨,终于解决了这个问题. 解决的原理为:编写一个通用页面,所谓的通用页面,就是

ASP技巧实例:使用ASP记录在线用户的数量

技巧|在线 网络的访问量是每一个做网站的网友们都非常关心的问题.如何得知有多少个人正在访问你的网站呢?如何将每天的访问量记录下来? 下面就是一个解决方案. 当有用户开始访问网站时,服务器端的Global.asa将会被访问.将会给用户开启一个Session.可以给每一个用户设置自己的个人用户信息.这里就不多进行解释了.在Global.asa中有当Application启动和Session启动时的消息响应函数.可以敲入如下的代码. < SCRIPT LANGUAGE="VBScript&quo