`
daoshud1
  • 浏览: 550873 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java session统计在线人数

    博客分类:
  • java
 
阅读更多
首先创建监听器,监听器实现ServletContextAttributeListener, HttpSessionAttributeListener两个接口。
public class LoginUserListener implements ServletContextAttributeListener,
		HttpSessionAttributeListener {

	public void attributeAdded(ServletContextAttributeEvent event) {
	}

	public void attributeRemoved(ServletContextAttributeEvent event) {
	}

	public void attributeReplaced(ServletContextAttributeEvent event) {
	}

	/**
	 * session创建后触发该方法,将session信息添加到集合中
	 */
	public void attributeAdded(HttpSessionBindingEvent event) {
		if (event.getName().equals(IConstant.SESSION_TUSER)) {
			//获取session信息
			HttpSession session = event.getSession();
			if(session!=null){
				//获得用户信息
				TUser user=(TUser)event.getValue();
				//获得application信息
				ServletContext application = session.getServletContext();
				//从application中获得session列表
				HashSet<TUser> hashSet=(HashSet<TUser>)application.getAttribute(IConstant.APPLICATION_SESSION);
				//判断列表数据是否为空 如果为空 需要实例化sessionlist
				if(hashSet==null){
					hashSet=new HashSet<TUser>();
				}
				//判断用户的session是否已经存在,如果已经存在则不在添加
				hashSet.remove(user);//先删除,避免重复添加
				//将新增用户添加到list中
				hashSet.add(user);
				application.setAttribute(IConstant.APPLICATION_SESSION, hashSet);
			}
		}
	}

	/**
	 * session被清除里触发,一般用户用户退出时
	 */
	public void attributeRemoved(HttpSessionBindingEvent event) {
		if (event.getName().equals(IConstant.SESSION_TUSER)) {
			//获取session信息
			HttpSession session = event.getSession();
			//获得用户信息
			TUser user=(TUser)event.getValue();
			ServletContext application = session.getServletContext();
			//从application中获得session列表
			HashSet<TUser> hashSet=(HashSet<TUser>)application.getAttribute(IConstant.APPLICATION_SESSION);
			if(hashSet!=null){
				hashSet.remove(user);
				//将剩余的放置在application中
				application.setAttribute(IConstant.APPLICATION_SESSION, hashSet);
			}
		}
	}

	/**
	 * session被替换时触发
	 */
	public void attributeReplaced(HttpSessionBindingEvent event) {
		System.out.println("attributeReplaced");
	}

}

在web.xml中添加监听器
<listener> 
    	<listener-class>com.jz.sys.listener.LoginUserListener</listener-class> 
	</listener> 

在绑定session或清除session时会触发以上方法
分享到:
评论

相关推荐

    JavaWeb 用session统计在线人数

    JavaWeb 用session统计在线人数

    session统计在线人数.rar

    简单测试,session统计上线人数demo

    JAVA的SESSION精准统计

    JAVA的SESSION精准统计 消除了SESSION可以为负数的BUG... 更加精准

    java web在线人数统计/监听

    通过session监听在线人数,显示实时人数信息。

    java监听器学习 统计在线人数

    实现在线人的显示,通过实现ServletContenxListener,HttpSessionListener,HttpSessionAttributeListener来实现在线人的展示

    SessionManager:Java监听器实现在线人数统计Demo

    SessionManager Java监听器实现在线人数统计Demo

    javaweb开发在线人数统计

    当一个用户登录后,显示欢迎信息,同时显示出当前在线的总人数和用户名单。当一个用户退出登录或者Session超时值发生时,从在线用户名单中删除这个用户,同时将在线的总人数减1。

    记录同时在线人数 jsp

    记录 在线 session 记录 同时 在线 人数 jsp java web

    Java面试宝典-经典

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    Java面试宝典2010版

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    java面试题大全(2012版)

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-...

    原生jsp进行Web编程—作业3-JSP内置对象-Part2

    一、JSP内置对象练习 1、使用JSP中的session对象,实现用户登陆检验 (1)(1)web目录下的session-login目录中,新建login.jsp(允许用户输入用户名和密码), ...4、使用application对象的属性存储统计网站访问人数

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-...

    最新Java面试宝典pdf版

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    java面试宝典2012

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 133 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 133 11、iBatis与Hibernate有什么不同? 133 12、...

    Java面试笔试资料大全

    9、hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别。 122 10、简述 Hibernate 和 JDBC 的优缺点? 如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-...

Global site tag (gtag.js) - Google Analytics