1. 建立一個自己的SessionContext:
程序代碼:
package cn.org.jshuwei.session.core;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
public class MySessionContext {
private static MySessionContext instance;
private HashMap mymap;
private MySessionContext() {
mymap = new HashMap();
}
public static MySessionContext getInstance() {
if (instance == null) {
instance = new MySessionContext();
}
return instance;
}
public synchronized void AddSession(HttpSession session) {
if (session != null) {
mymap.put(session.getId(), session);
}
}
public synchronized void DelSession(HttpSession session) {
if (session != null) {
mymap.remove(session.getId());
}
}
public synchronized HttpSession getSession(String session_id) {
if (session_id == null) return null;
return (HttpSession) mymap.get(session_id);
}
}
2.新建一個Session監聽
程序代碼
package cn.org.jshuwei.session.core;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
public class SessionListener implements HttpSessionListener {
public static Map userMap = new HashMap();
private MySessionContext myc=MySessionContext.getInstance();
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
myc.AddSession(httpSessionEvent.getSession());
}
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
HttpSession session = httpSessionEvent.getSession();
myc.DelSession(session);
}
}
3.在web.xml中配置
程序代碼
<listener>
<listener-class>cn.org.jshuwei.session.core.SessionListener</listener-class>
</listener>
4.使用
程序代碼
MySessionContext myc= MySessionContext.getInstance();
HttpSession sess = myc.getSession(sessionId);
分享到:
相关推荐
tomcat修改sessionId,同一台服务器部署多个tomcat需要修改sessionId,否则会出现session冲突的问题
//得到Cookie的所有内容,包括SESSIONID,在进行下次提交的时候 直接把这个Cookie的值设到头里头就行了 //淡然只得到SESSIONID也很简单的 ,但是有时候Set-Cookie的值有几个的 List<String> list = (List) ...
### 关于.NET中C# Session丢失与SessionID变化问题解析 #### 一、问题背景及概述 在.NET框架中,特别是在使用C#进行Web开发时,Session管理是至关重要的一个环节。Session对象允许服务器存储有关用户会话的信息,...
### 获取SessionID方法详解 在Web开发中,Session是一种常用的技术,用于跟踪用户的会话状态。SessionID则是服务器为每个用户会话分配的一个唯一标识符,对于实现用户身份验证、个性化服务等功能至关重要。本文将...
### Cookie与Session、SessionID详解 #### 一、引言 在现代Web开发中,保持用户的会话状态是一项基本需求。传统的HTTP协议是无状态的,这意味着每一次客户端发起的请求都是独立的,服务器无法直接识别出请求来自...
这个实例“tomcat+nginx+redis 实现sessionId共享”旨在教你如何在使用Tomcat作为应用服务器、Nginx作为反向代理服务器的环境中,利用Redis来实现跨服务器的会话(sessionId)共享。这对于在分布式系统中保持用户...
tomcat+nginx+redis 实现sessionId共享!里面有文档自己看就可以了很详细了很详细了很详细了
如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId...
ASP.NET中的SessionId是Web应用程序用来跟踪用户会话的关键组件。在ASP.NET中,当一个用户访问网站并开始与服务器交互时,系统会为该用户分配一个唯一的SessionId。这个标识符是通过加密生成的,并存储在用户的...
这个ID存储在用户的Cookie中,每次客户端发起请求时,都会将Session ID一并发送回服务器,服务器通过这个ID来识别和跟踪用户的会话状态。然而,这种基于Session ID的会话恢复存在一定的安全风险,比如Session ID可能...
标题中的"pushlet 扩充,sessionid 采用userid"涉及到的是一个实时通信技术的应用,Pushlet 是一种基于服务器推送(Server-Sent Events, SSE)的技术,它允许服务器主动向客户端(通常是Web浏览器)发送数据,而不是...
URL中携带sessionid是一种常见的技术手段,主要用于在浏览器禁用cookie时,依然能够维持用户的会话状态。然而,这种做法虽然在某些场景下方便实用,却带来了显著的安全隐患。具体来说,它可能导致的一种安全漏洞就是...
在使用ASP.NET WebService时,有时会遇到与ASP.NET_SessionId相关的问题,尤其是在涉及会话状态管理的情况下。 ASP.NET_SessionId是一个由ASP.NET生成的唯一标识符,用于跟踪用户的会话状态。在用户首次访问网站或...
在微信小程序开发中,经常会遇到由于`sessionID`不一致导致的登录状态丢失问题,这主要是因为微信小程序的网络请求机制以及服务器端的会话管理方式。本文将深入解析这个问题,并提供解决方案。 首先,理解`session...
客户端在后续的每次请求中都会携带这个Session ID,服务器根据ID找到对应的Session,从而获取或更新用户的登录状态。 以下是一个简单的使用Session实现用户登录的步骤: 1. **创建登录页面**:创建一个HTML或JSP...
IP相同的两个session对应的cookie是一样的,而不幸的是sessionID就保存在cookie中,这样先访问A,再访问B的时候,B的sessionid会覆盖A的sessionid。这个事情没办法解决,所以你不要搞两个端口,最好是搞两个IP。原来...
普通的Web开发,都是把sessionid保存在cookie中传递的。 不管是java还是php,服务端的会在response的header中加上Set-Cookie Response Headers Content-Type:application/json;charset=UTF-8 Date:Mon, 02 Apr ...
PHP禁用cookie如何使用url传递session id
在给定的代码中,`create_sess_id()` 函数用于生成这种Session ID。 首先,该函数通过`microtime()`获取当前时间的微秒数,然后与一个随机生成的6位数字相加,以增加复杂性和随机性。接着,利用`md5()`函数对时间戳...