其实一开始,我想要获取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方法详解 在Web开发中,Session是一种常用的技术,...在实际开发中,开发者应根据项目需求选择合适的获取SessionID的方式,同时注意Session的安全性和有效性管理,确保用户数据的安全和隐私保护。
//得到Cookie的所有内容,包括SESSIONID,在进行下次提交的时候 直接把这个Cookie的值设到头里头就行了 //淡然只得到SESSIONID也很简单的 ,但是有时候Set-Cookie的值有几个的 List<String> list = (List) ...
本文将详细介绍如何在Java Web项目中设置和使用Session监听器,以及如何根据Session ID获取Session。 首先,为了实现Session监听,我们需要创建一个实现了`javax.servlet.http.HttpSessionListener`接口的类。这个...
### Cookie与Session、SessionID详解 #### 一、引言 在现代Web开发中,保持用户的会话状态是一项基本需求。传统的HTTP协议是无状态的,这意味着每一次客户端发起的请求都是独立的,服务器无法直接识别出请求来自...
后续的每次请求,客户端都会携带这个Session ID,服务器根据ID找到对应的状态信息,从而识别用户身份。 二、Android与服务器交互 在Android应用中,我们可以使用HttpURLConnection或第三方库如OkHttp来与Web服务器...
自己实现httpSession,在getSession中获取cookie,从cookie中读取sessionId, 如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建...
因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...
1. `GetSession(string name)`方法:这个方法用于根据传入的session名称(`name`)获取对应的Session对象。它通过调用`HttpContext.Current.Session[name]`来实现。`HttpContext.Current`是当前HTTP上下文的静态属性...
客户端在后续的每次请求中都会携带这个Session ID,服务器根据ID找到对应的Session,从而获取或更新用户的登录状态。 以下是一个简单的使用Session实现用户登录的步骤: 1. **创建登录页面**:创建一个HTML或JSP...
3. **会话保持**:在后续的请求中,客户端通过cookie或URL将SessionId返回给服务器,服务器根据SessionId找到对应的会话数据。 4. **会话数据存储**:ASP.NET默认使用内存中的InProc模式存储会话数据,但也可以配置...
URL中携带sessionid是一种常见的技术手段,主要用于在浏览器禁用cookie时,依然能够维持用户的会话状态。然而,这种做法虽然在某些场景下方便实用,却带来了显著的安全隐患。具体来说,它可能导致的一种安全漏洞就是...
每次客户端请求服务器时,都会携带这个Session ID,服务器据此识别出是哪个用户的请求,并获取到与之关联的Session数据。 Session的应用场景非常广泛,包括但不限于: 1. 存储登录信息:用户登录后,可以将用户名...
本篇将详细讲解如何在Hibernate中手动获取Session,以及涉及到的相关配置和连接管理。 首先,理解Hibernate的核心组件——Session。Session是Hibernate中的工作单元,它是与数据库交互的主要接口,负责保存、更新和...
本话题主要探讨如何使用JavaScript和AJAX来获取验证码内容以及服务器端的Session值。 验证码(CAPTCHA)是一种安全机制,用于防止机器自动操作,如防止恶意注册或登录尝试。通常,验证码会生成一串随机字符图像,...
6. **设置Cookie处理器**: 创建CookieStore和CookieSpecRegistry,将获取到的session ID设置到CookieStore中,并将CookieSpecRegistry设置到HttpClient中。 ```java CookieStore cookieStore = new ...
`session`通常用于存储用户登录状态等临时信息,而`cookie`则作为`session` ID的载体在客户端和服务器之间传递。当用户访问网站并登录后,服务器会设置一个`session`,并将对应的`session ID`保存在客户端的`cookie`...
在某些情况下,我们可能需要自定义Session的行为,例如改变Session ID的生成逻辑、设置Session超时时间等。Spring Session提供了丰富的API供我们扩展。以下是一个自定义SessionRepository的例子: ```java @...
例如,我们可以使用`session.getAttribute()`来获取Session中的属性,`session.setAttribute()`来设置属性,以及`session.invalidate()`来结束当前Session。 **案例描述分析** 在这个实例中,首先,用户通过一个JSP...
服务器通过检查这个ID来识别出特定的用户,从而获取并维护用户的会话信息,如登录状态、购物车内容等。 实验"session实验"可能涵盖了以下几个关键知识点: 1. **Session的创建与销毁**:实验可能涉及到如何在...
当客户端发起新的请求时,会将Cookie中的Session ID一起发送回服务器,服务器根据这个ID找到对应的Session数据,从而获取用户的状态信息。 然而,在验证码的Session问题中,可能会遇到以下几种常见问题: 1. **...