`

根据sessionId获取session

阅读更多
其实一开始,我想要获取session,是因为rest风格的api,要锁定客户端请求,但是无法做到,才想到此招。后来搞清楚了,rest风格的请求应该是一次请求就处理掉所有业务的,不需要做这些事情。但是既然研究了,就说说怎么来通过请求里带的参数sessionId来获取session吧。
1.实现session的监听器,主要有2个override方法,session生成和删除。

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class EgoSessionListener implements HttpSessionListener {
	private EgoSessionContext context = EgoSessionContext.getInstance();

	@Override
	public void sessionCreated(HttpSessionEvent sessionEvent) {
		System.out.println("session创建了 " + sessionEvent.getSession().getId());
		context.addSession(sessionEvent.getSession());
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent sessionEvent) {
		HttpSession session = sessionEvent.getSession();
		System.out.println("session被删除了 " + sessionEvent.getSession().getId());
		context.delSession(session);
	}

}


2.写个类来保存所有的session,并提供查sessionId的方法。

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;

public class EgoSessionContext {
	private static EgoSessionContext instance = new EgoSessionContext();
	private Map<String, HttpSession> sessionMap;

	private EgoSessionContext() {
		sessionMap = new HashMap<String, HttpSession>();
	}

	public static EgoSessionContext getInstance() {
		return instance;
	}

	public synchronized void addSession(HttpSession session) {
		if (session != null) {
			sessionMap.put(session.getId(), session);
		}
	}

	public synchronized void delSession(HttpSession session) {
		if (session != null) {
			sessionMap.remove(session.getId());
		}
	}

	public synchronized HttpSession getSession(String sessionId) {
		if (sessionId == null)
			return null;
		return sessionMap.get(sessionId);
	}
}

分享到:
评论

相关推荐

    获取SessionID

    ### 获取SessionID方法详解 在Web开发中,Session是一种常用的技术,...在实际开发中,开发者应根据项目需求选择合适的获取SessionID的方式,同时注意Session的安全性和有效性管理,确保用户数据的安全和隐私保护。

    通过HttpURLConnection获取SESSIONID

    //得到Cookie的所有内容,包括SESSIONID,在进行下次提交的时候 直接把这个Cookie的值设到头里头就行了 //淡然只得到SESSIONID也很简单的 ,但是有时候Set-Cookie的值有几个的 List&lt;String&gt; list = (List) ...

    javaweb监听session

    本文将详细介绍如何在Java Web项目中设置和使用Session监听器,以及如何根据Session ID获取Session。 首先,为了实现Session监听,我们需要创建一个实现了`javax.servlet.http.HttpSessionListener`接口的类。这个...

    cookie与session、sessionid

    ### Cookie与Session、SessionID详解 #### 一、引言 在现代Web开发中,保持用户的会话状态是一项基本需求。传统的HTTP协议是无状态的,这意味着每一次客户端发起的请求都是独立的,服务器无法直接识别出请求来自...

    android获取web服务器端session并验证登陆

    后续的每次请求,客户端都会携带这个Session ID,服务器根据ID找到对应的状态信息,从而识别用户身份。 二、Android与服务器交互 在Android应用中,我们可以使用HttpURLConnection或第三方库如OkHttp来与Web服务器...

    自己实现的spring-session

    自己实现httpSession,在getSession中获取cookie,从cookie中读取sessionId, 如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建...

    微信小程序实现Session功能及无法获取session问题的解决方法

    因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...

    C#实现简单获取及设置Session类

    1. `GetSession(string name)`方法:这个方法用于根据传入的session名称(`name`)获取对应的Session对象。它通过调用`HttpContext.Current.Session[name]`来实现。`HttpContext.Current`是当前HTTP上下文的静态属性...

    java中使用session模拟用户登陆

    客户端在后续的每次请求中都会携带这个Session ID,服务器根据ID找到对应的Session,从而获取或更新用户的登录状态。 以下是一个简单的使用Session实现用户登录的步骤: 1. **创建登录页面**:创建一个HTML或JSP...

    ASP.NET SessionId.rar

    3. **会话保持**:在后续的请求中,客户端通过cookie或URL将SessionId返回给服务器,服务器根据SessionId找到对应的会话数据。 4. **会话数据存储**:ASP.NET默认使用内存中的InProc模式存储会话数据,但也可以配置...

    URL中允许携带sessionid带来的安全隐患分析

    URL中携带sessionid是一种常见的技术手段,主要用于在浏览器禁用cookie时,依然能够维持用户的会话状态。然而,这种做法虽然在某些场景下方便实用,却带来了显著的安全隐患。具体来说,它可能导致的一种安全漏洞就是...

    session session session szsessdifn

    每次客户端请求服务器时,都会携带这个Session ID,服务器据此识别出是哪个用户的请求,并获取到与之关联的Session数据。 Session的应用场景非常广泛,包括但不限于: 1. 存储登录信息:用户登录后,可以将用户名...

    JAVA的hibernate手动获取session的方法

    本篇将详细讲解如何在Hibernate中手动获取Session,以及涉及到的相关配置和连接管理。 首先,理解Hibernate的核心组件——Session。Session是Hibernate中的工作单元,它是与数据库交互的主要接口,负责保存、更新和...

    javascript 利用ajax获取验证码内容和session值

    本话题主要探讨如何使用JavaScript和AJAX来获取验证码内容以及服务器端的Session值。 验证码(CAPTCHA)是一种安全机制,用于防止机器自动操作,如防止恶意注册或登录尝试。通常,验证码会生成一串随机字符图像,...

    httpclient如何保持session会话模拟登录后的操作

    6. **设置Cookie处理器**: 创建CookieStore和CookieSpecRegistry,将获取到的session ID设置到CookieStore中,并将CookieSpecRegistry设置到HttpClient中。 ```java CookieStore cookieStore = new ...

    iframe 跨域访问session

    `session`通常用于存储用户登录状态等临时信息,而`cookie`则作为`session` ID的载体在客户端和服务器之间传递。当用户访问网站并登录后,服务器会设置一个`session`,并将对应的`session ID`保存在客户端的`cookie`...

    spring session redis分布式session

    在某些情况下,我们可能需要自定义Session的行为,例如改变Session ID的生成逻辑、设置Session超时时间等。Spring Session提供了丰富的API供我们扩展。以下是一个自定义SessionRepository的例子: ```java @...

    数据操作session获取的一个简单实例

    例如,我们可以使用`session.getAttribute()`来获取Session中的属性,`session.setAttribute()`来设置属性,以及`session.invalidate()`来结束当前Session。 **案例描述分析** 在这个实例中,首先,用户通过一个JSP...

    session实验

    服务器通过检查这个ID来识别出特定的用户,从而获取并维护用户的会话信息,如登录状态、购物车内容等。 实验"session实验"可能涵盖了以下几个关键知识点: 1. **Session的创建与销毁**:实验可能涉及到如何在...

    验证码的session问题

    当客户端发起新的请求时,会将Cookie中的Session ID一起发送回服务器,服务器根据这个ID找到对应的Session数据,从而获取用户的状态信息。 然而,在验证码的Session问题中,可能会遇到以下几种常见问题: 1. **...

Global site tag (gtag.js) - Google Analytics