`

J2EE HttpSessionAttributeListener实现登录用户在线记录

 
阅读更多

 

web.xml配置

 

 <listener><listener-class>com.interceptor.UserListener1</listener-class></listener>



 

 

代码,实现HttpSessionAttributeListener接口,在httpsession中添加/移除用户信息时实现登录人数统计

 

 

package com.interceptor;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


public class UserListener1 implements HttpSessionListener,HttpSessionActivationListener,HttpSessionAttributeListener {
	
	private static int acivateusercount=0;

	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub		
		
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	
	public  static synchronized int getactivated (){
		
		return acivateusercount;
		
	}

	@Override
	public void sessionDidActivate(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub	}

	@Override
	public void sessionWillPassivate(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub
	}

	@Override
	public void attributeAdded(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
	//	acivateusercount++;
		Object ob = arg0.getName();
		if(ob!=null && "user".equals(ob.toString())){
			acivateusercount++;
			System.out.println("attributeAdded user: "+ ((User)arg0.getValue()).getUserId());
			System.out.println("online count: " + getactivated() );
		}
	//	
	}

	@Override
	public void attributeRemoved(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		Object ob = arg0.getName();
		if(ob!=null && "user".equals(ob.toString())){
			if(acivateusercount>0)acivateusercount--;
			System.out.println("attributeRemoved user: "+ ((User

)arg0.getValue()).getUserId());System.out.println("online count: " + getactivated() );}}@Overridepublic void attributeReplaced(HttpSessionBindingEvent arg0) {// TODO Auto-generated method stub}}




 

 

 

分享到:
评论

相关推荐

    监听器显示登陆用户列表,并实现踢人功能

    // 用户登录,记录用户 String username = (String) event.getValue(); // 添加到用户列表 addUserToList(username); } } @Override public void attributeRemoved(HttpSessionBindingEvent event) { if ...

    HttpSessionBindingListener实现在线人员查看即人数统计

    在这个类中,你需要重写上述两个方法来记录用户在线状态。 2. **用户登录**:当用户成功登录时,将用户信息(如用户名或用户ID)作为一个对象存储到session中,并将该对象注册为`HttpSessionBindingListener`。 3....

    j2ee 5.0 api 帮助文档

    在J2EE 5.0中,`javax.jms`包提供了MessageProducer、MessageConsumer、Topic和Queue等接口,使得开发者可以方便地实现消息队列和主题功能。 **6. Java Transaction API (JTA)** JTA定义了一套标准的接口,用于管理...

    JAVA J2EE 类库文档

    J2EE 类库文档 All Classes Cookie Filter FilterChain FilterConfig GenericServlet HttpServlet HttpServletRequest HttpServletRequestWrapper HttpServletResponse HttpServletResponseWrapper ...

    day18 监听器 统计在线人数,定时销毁超时session,钝化活化session,在线列表显示和踢人功能防止用户自动登录,在线支付

    每当用户登录时,将其添加到列表,退出时移除。列表可以实时更新并在页面上展示,供管理员查看。 6. **踢人功能防止自动登录**: 当发现某个用户不应再保持登录状态(例如,用户在其他设备上登录或管理员手动操作...

    利用session监听器实现一个客户不能再两个客户端登录。

    // 用户登录,记录Session信息 } @Override public void valueUnbound(HttpSessionBindingEvent event) { // 用户登出,清理Session信息 } } ``` 2. 在`valueBound`方法中,我们检查当前Session是否已经存在...

    JSP开发中在spring mvc项目中实现登录账号单浏览器登录.docx

    通过这种方式,每次用户登录时,`LoginListenner`都会检查当前登录的账号是否已经在其他session中存在,从而实现“单浏览器登录”的效果。当用户尝试在第二个浏览器中登录时,第一个浏览器的session会被销毁,用户...

    用户重复登录问题

    本节将详细介绍如何利用这些技术点来实现用户重复登录的控制。 ##### 3.1 保存在线用户信息 - 在`HttpSessionListener`中定义一个全局的`Map`对象,用来保存当前已登录的用户。 - 当用户登录成功时,将用户名保存到...

    jsp在线聊天设计文档

    本设计文档将探讨一种基于JSP的在线答疑功能模块,重点在于如何实现用户在线状态的准确跟踪。 **一、在线用户统计原理** 1. **基于页面刷新的机制** - 用户在30分钟内无动作会被视为离线,这是通过服务器端设置...

    Java 多用户登录限制的实现方法

    1. 数据库中标识在线用户:每次用户登录时,更新数据库中的在线状态。然而,这种方法可能会面临用户异常退出导致的状态无法及时更新,以及频繁的数据库读写可能影响性能的问题。 2. 存储到application中:将在线...

    seeeion 监听用户,控制同一个用户不能同时登陆

    由于HTTP协议本身是无状态的,为了跟踪用户的状态,服务器会在用户登录后创建一个Session对象,并将其关联到特定的用户。这个Session对象通常包含用户信息,如用户名、权限等。当用户在其他地方再次尝试登录时,...

    JSP中的在线人数统计

    为了实现在线人数统计,我们首先需要创建一个监听器类`OnLineDemo.java`,该类实现了`ServletContextListener`、`HttpSessionListener`和`HttpSessionAttributeListener`接口。 1. **监听器类`OnLineDemo.java`**:...

    S2SH用户重复登录问题[文].pdf

    实现这一功能的关键在于,当新用户登录时,我们需要检查是否已有相同用户ID的session存在。如果有,我们需要销毁旧session并通知用户已被踢出。这可以通过遍历`loginUser`映射并在其中查找对应用户ID的session来完成...

    JavaWeb实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)

    - **记录session信息**:当用户成功登录并保存session信息时,将session与用户信息封装为一个对象(如`SessionAndUser`),并将其添加到全局的session列表中。在此过程中,需要先遍历列表检查当前用户是否已存在于...

    JavaWeb 用session统计在线人数

    通常,我们可以定义一个全局变量(如`onlineCount`)来记录在线人数,并在用户登录时增加这个计数,在用户注销或session超时时减少计数。 以下是一个简单的步骤来实现这个功能: 1. **初始化session管理**:在...

    ListenerDemo01.rar

    本项目"ListenerDemo01"演示了如何结合JSP、Servlet以及Listener来实现用户登录、退出和注册功能,并通过监听器来追踪在线用户数量和列表。 首先,我们要理解什么是`Servlet Listener`。Servlet监听器是实现了...

    JSP开发中在spring mvc项目中实现登录账号单浏览器登录

    当用户登录成功后,可以在session中存入一些信息(如用户ID或用户对象),以此标识用户当前已登录状态。当用户的请求到达服务器时,可以通过检查session是否存在以及其中的信息来验证用户是否登录。 #### 2. ...

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

    在这个例子中,我们可以创建一个名为`HttpSessionBinding`的类,当Session中的"user"属性被添加(即用户登录)时,将Session对象添加到全局的活跃Session列表中。这个列表可以存储在`ServletContext`中,以便在整个...

    servlet监听器实现踢人小案例

    例如,我们可以记录用户的登录状态,或者在会话超时时自动注销用户。以下是一个简单的`HttpSessionListener`实现: ```java import javax.servlet.http.HttpSessionEvent; import javax.servlet....

Global site tag (gtag.js) - Google Analytics