`

根据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方法 获取 SessionID方法 获取 SessionID方法

    通过HttpURLConnection获取SESSIONID

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

    自己实现的spring-session

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

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

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

    javaweb监听session

    在javaweb项目中,通过监听session,实现根据sessionid获取session的方法

    cookie与session、sessionid

    本文档是我平时开发时利用业余时间编写,希望能与大家共勉,不足之处请见谅

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

    主要介绍了C#实现简单获取及设置Session类,涉及C#针对session的设置及获取的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    java中使用session模拟用户登陆

    java中使用session模拟用户登陆

    微信小程序sessionid不一致问题解决

    在登录时获取sessionid //第一次请求登录接口时保存到sessionid中 success: function (res) { wx.hideLoading(); wx.removeStorageSync('sessionid');//每次登录时清楚缓存 if (res.data.code == 0000) { if ...

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

    很多WEB开发语言为了防止浏览器禁止了cookie而无法识别用户,允许在URL中携带sessionid,这样虽然方便,但却有可能引起钓鱼的安全漏洞。

    php中session_id()函数详细介绍,会话id生成过程及session id长度

    php中session_id()函数原型及说明session_id()函数说明:stringsession_id([string$id])session_id() 可以用来获取/设置 当前会话 ID。为了能够将会话 ID 很方便的附加到 URL 之后, 你可以使用常量 SID 获取以字符串...

    问答《三十八》请求sessionid问题,获取带参二维码的参数

    问题:关于带参数二维码扫描的问题 微信官方说的扫描带参数的二维码可以直接访问任何一个页面。那么是直接用微信的扫一扫扫描就行,还是需要进入小程序后,通过小程序的二维码接口进行扫描? 答:天下雪 参考:htt ....

    用script跳转方式主动跨域获取cookie或session(并非网上铺天盖地的主动设置法)

    &lt;script src=\"http://a.com/openid.aspx?sessionid="+ sessionid +"\"&gt; sessionid 为每个用户登录到A域后生成的唯一标识。 B域根据这个标识来确定是否更新自己域的cookie,每次更新后都需刷新页面一次,这个刷新...

    Spring mvc 分步式session的实例详解

    服务器在创建session后,会把sessionid以cookie的形式回写给客户端。只要客户端的浏览器不关,每一次访问服务器都会带上这个sessionid。这样就可以在每次请求的时候获取到session的信息。 下面以spring MVC以例来...

    nginx反向代理导致session失效的问题解决

    一同事求援:后台系统的登录成功了,但不能成功登进系统,仍然跳转到登录页,但同一套代码另一个环境却没有问题。 背景 经了解,他对同一个项目使用tomcat部署了两个环境,一个在开发服务器上,一个在他本机,两个...

    websocket简单使用

    基于websocket开发的聊天室,加入聊天室的用户可以和当前在线的用户聊天

    对laravel的session获取与存取方法详解

    今天小编就为大家分享一篇对laravel的session获取与存取方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    php查看当前Session的ID实例

    有两种方法可以得到用户的session id,第一是使用session_id()函数,另外一种是使用内置的常量SID获得,SID包含了session id和session值 &lt;?php session_start(); print("&lt;html&gt;&lt;b&gt;"); $sid = session_...

    Cookie、Session、Token、JWT

    服务器使用 Session ID 来获取对应的用户信息。Session 可以存储敏感数据,且在服务器端存储,相对安全。 Token:Token 是一种无状态的身份验证机制。当用户登录成功后,服务器会生成一个 Token 并返回给客户端,...

    在Django的session中使用User对象的方法

    通过session,我们可以在多次浏览器请求中保持数据, 接下来的部分就是用session来处理用户登录了。 当然,不能仅凭用户的一面之词,我们就相信,所以我们需要认证。 当然了,Django 也提供了工具来处理这样的常见...

Global site tag (gtag.js) - Google Analytics