`
itace
  • 浏览: 180537 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

session唯一登录用户

 
阅读更多

 

页面跳转时才会退出,要主动退出,需要js的定时心跳包

 

	//userid=httpsession
	public static Map<Integer, HttpSession> USERID_SESSIONS = new ConcurrentHashMap<Integer, HttpSession>();
	

 

 

	public static void addLoginUser(HttpServletRequest request,Map<String, Object> user){
		//退出之前的session
		int id = StringUtil.toInt(user.get("id"));
		if (id>0) {
			HttpSession session_old = ChipmunkCache.USERID_SESSIONS.get(id);
			if (session_old!=null) {
				ChipmunkCache.USERID_SESSIONS.remove(id);
				System.out.println("old sessionid:"+session_old.getId());
				System.out.println(session_old.isNew());
				session_old.removeAttribute(SESSION_USER);
				session_old.invalidate();//销毁session,会调用HttpSessionListener的sessionDestroyed
			}
			HttpSession session_new = request.getSession();
			System.out.println("new sessionid:"+session_new.getId());
			session_new.setAttribute(SESSION_USER, user);
			ChipmunkCache.USERID_SESSIONS.put(id, session_new);
		}
		//add(request, SESSION_USER, user);
	}

	public static void removeLoginUser(HttpServletRequest request){
		HttpSession session = request.getSession();
		Map<String, Object> user = getLoginUser(session);
		if (user!=null) {
			int id = StringUtil.toInt(user.get("id")); 
			ChipmunkCache.USERID_SESSIONS.remove(id);
		}
		session.removeAttribute(SESSION_USER);
		//重置sessionid,防漏洞
		try {
			session.invalidate();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

 

public class MySessionListener implements HttpSessionListener{
	
	private static AtomicInteger online_count = new AtomicInteger(0);
	@Override
	public void sessionCreated(HttpSessionEvent event) {
		int count = online_count.incrementAndGet();
		System.out.println("online count:"+count);
		HttpSession session = event.getSession();
//		online_user_map.put(session.getId(), value)
	}
	@Override
	public void sessionDestroyed(HttpSessionEvent event) {
		HttpSession session = event.getSession();
		int count = online_count.decrementAndGet();
		System.out.println("online count:"+count);
		
	}
	
}

 

 

分享到:
评论

相关推荐

    .net C# 利用session控制用户重复登录及统计在线用户数解决方案

    对于`Session`有效期,开发者可以自定义设置,例如在用户登录时延长其`Session`的生命周期,以保持用户在线状态。而“times”可能是指记录用户的登录次数,这可以通过在`Session`中存储一个计数变量来实现,每次登录...

    session存用户名密码实现用户登录和退出

    特别是在用户登录和退出的过程中,Session扮演了关键角色。本篇文章将详细介绍如何利用Session存储用户名和密码,以实现用户登录和退出功能。 首先,我们需要理解Session的基本概念。Session是在服务器端存储的一种...

    javaWeb_Session(实现用户一段时间自动登录)

    JavaWeb中的Session技术是Web开发中的重要概念,主要用于在服务器端保持用户状态,尤其是在用户登录后,实现用户在一段时间内的自动登录功能。本篇将详细解释Session的工作原理、配置及其实现用户自动登录的机制。 ...

    .net C# 通过session控制重复登录及在线用户统计

    - `Session_Start`和`Session_End`事件处理程序,用于处理用户登录和登出时的状态变化。 - 可能还包括一个用于统计在线用户的类或方法,以及相关的定时任务或异步操作。 为了实现这样的系统,开发者需要理解`...

    javaweb用户验证码登录session例子

    在Java Web开发中,用户登录验证是不可或缺的一部分,而在这个"javaweb用户验证码登录session例子"中,我们将深入探讨如何结合验证码、用户密码以及Session技术来实现安全的登录过程。Session是Web应用中用于跟踪...

    java session判断用户登录时间和点击页面次数

    在Java Web开发中,Session是服务器用来跟踪用户状态的一种机制,尤其在用户登录验证和页面交互统计方面。本文将深入探讨如何使用Servlet和Session来实现用户登录时间和点击页面次数的记录。 首先,让我们理解...

    session实验

    Session的工作原理是:当用户访问网站并登录后,服务器会为该用户创建一个唯一的Session ID,并将其存储在服务器端。这个Session ID随后会被发送到客户端(通常是通过Cookie),客户端在后续的每次请求时都会携带这...

    Session实现用户存储

    "Session实现用户存储"这个主题主要涉及到用户登录、购物车存储以及页面显示等关键环节。接下来,我们将详细探讨Session的工作原理,如何利用Session实现用户登录,以及在购物车场景中的应用。 1. Session的工作...

    session模拟数据库实现用户登录功能

    这里我们关注的是如何使用session来模拟数据库实现用户登录功能。session是一种服务器端存储用户状态的技术,它可以帮助我们在用户浏览器关闭或刷新后仍然保持某些信息,例如用户的登录状态。下面将详细阐述session...

    java中使用session模拟用户登陆

    当用户登录时,服务器会生成一个唯一的Session ID,并将其通过Cookie返回给客户端。客户端在后续的每次请求中都会携带这个Session ID,服务器根据ID找到对应的Session,从而获取或更新用户的登录状态。 以下是一个...

    php session登录

    例如,设置用户登录状态可以写为`$_SESSION['logged_in'] = true;`,而要检查登录状态,可以使用`if(isset($_SESSION['logged_in']))`。 4. **登录过程**: - 用户提交登录表单,通常包含用户名和密码。 - PHP接收...

    session实现登录工程

    当用户在网站上进行登录等需要验证身份的操作时,服务器会为该用户创建一个唯一的session ID,并将其保存在服务器的内存中。这个ID随后会发送给客户端(通常是通过cookie),客户端在后续的请求中携带这个ID,使得...

    Session登录在线人

    首先,Session的基本原理是:当用户通过用户名和密码成功登录后,服务器会为该用户创建一个唯一的Session ID,并将其保存在服务器端。同时,这个Session ID会通过Cookie发送回客户端(通常是浏览器),浏览器会在...

    c#实现cookie和session的登陆实例

    本实例将探讨如何在C#环境下利用Cookie和Session来处理用户登录状态。 首先,我们要理解Cookie和Session的基本概念。Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并存储在本地。每次用户访问同一网站时...

    session失效重新登录后,返回之前页面,并保留表单数据

    如果用户已经填写了表单数据,登录逻辑需要考虑如何在用户登录后恢复这些数据。 3. 页面跳转: 用户成功登录后,服务器可以使用HTTP的`Location`响应头来重定向用户到之前的页面。这通常通过在登录表单中包含一个...

    基于Session的在线用户统计实现

    每当用户登录或者新Session开始时,这个计数器加一;当用户离开页面或者Session过期,计数器减一。这通常需要监听Session的开始和结束事件。 3. **事件监听** ASP.NET提供了`Session_Start`和`Session_End`事件,...

    session保证两用户不能同时登陆一个账号

    - **`sessionCreated`**:当新用户登录时,为该用户创建一个新的`User`对象,并将其`session` ID设置进去。同时将这个`User`对象存入`session`中。 - **`sessionDestroyed`**:当`session`销毁时(例如,用户关闭...

    session session session szsessdifn

    1. 存储登录信息:用户登录后,可以将用户名、权限等信息存入Session,这样在用户浏览其他页面时,服务器仍然能识别其身份。 2. 购物车功能:在用户添加商品到购物车后,可以将商品信息存储在Session中,直到用户...

    JavaWeb使用Session和Cookie实现登录认证

    当用户访问服务器时,服务器会为用户创建一个唯一的 Session ID,并将其存储在服务器端。用户在访问服务器时,服务器会根据 Session ID 来判断用户的登录状态。 什么是 Cookie? Cookie 是一种客户端技术,用于...

    使用session实现用户登录共4页.pdf.zip

    在Web开发中,Session是一种非常重要的机制,用于在服务器端保持用户的状态,特别是在用户登录之后。这个"使用session实现用户登录共4页.pdf.zip"文件很可能是关于如何在Web应用程序中利用Session技术来管理用户的...

Global site tag (gtag.js) - Google Analytics