Servlet2.1之后不支持SessionContext里面getSession(String id)方法。
但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一个SessionContext。
MySessionContext.java:
public class MySessionContext {
private static HashMap mymap = new HashMap();
public static synchronized void AddSession(HttpSession session) {
if (session != null) {
mymap.put(session.getId(), session);
}
}
public static synchronized void DelSession(HttpSession session) {
if (session != null) {
mymap.remove(session.getId());
}
}
public static synchronized HttpSession getSession(String session_id) {
if (session_id == null)
return null;
return (HttpSession) mymap.get(session_id);
}
}
MySessionListener.java:
public class MySessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
MySessionContext.AddSession(httpSessionEvent.getSession());
}
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
HttpSession session = httpSessionEvent.getSession();
MySessionContext.DelSession(session);
}
}
web.xml添加一个监听器:
<listener>
<listener-class>listener.MySessionListener</listener-class>
</listener>
根据sessionId获取Session对象:
String sessionId = request.getParameter("sessionId");
HttpSession session = MySessionContext.getSession(sessionId);
分享到:
相关推荐
1. **获取Session对象**: - `request.getSession()`:此方法返回当前请求的`HttpSession`对象。如果当前请求没有对应的Session,则创建一个新的Session对象并返回。 - `getSession`方法通常在用户首次访问网站时...
1. 服务器上通过 Session 来分别不同的用户-->sessionID: 任何连接到服务器上的用户,服务器都会为之分配唯一一个不会重复的 sessionID。 2. 判断是不是新的 Session: `public boolean isNew()`, 判断当前的 Session...
每个会话在服务器端都存在一个唯一的标示 SessionID,Session 对象发送到浏览器的唯一数据就是 SessionID,它一般存储在 Cookie 中。 6. public void setMaxInactiveInterval(int interval):设置会话的最大持续...
- **检索Session**:服务器通过Session ID查找对应的Session对象,从而获取用户的会话信息。 ##### 4.3 Session的优势 - **安全性**:由于Session数据存储在服务器端,相比Cookie更安全。 - **灵活性**:服务器...
后续的每次请求,客户端都会携带这个Session ID,服务器根据ID找到对应的状态信息,从而识别用户身份。 二、Android与服务器交互 在Android应用中,我们可以使用HttpURLConnection或第三方库如OkHttp来与Web服务器...
之后,每当该浏览器发送请求时,都会携带这个cookie,服务器通过解析cookie获取session ID,从而找到对应的session数据。 **三、如何在JSP中使用session** 在JSP中,可以直接通过内置的`session`对象进行操作,无需...
- 浏览器在后续的请求中携带这个Session ID,服务器根据ID找到对应的Session对象。 - 服务器在Session对象中存储用户的相关信息,如登录状态、购物车等。 - 当用户关闭浏览器或Session过期,Session对象会被...
客户端在后续的每次请求中都会携带这个Session ID,服务器根据ID找到对应的Session,从而获取或更新用户的登录状态。 以下是一个简单的使用Session实现用户登录的步骤: 1. **创建登录页面**:创建一个HTML或JSP...
### 6_session对象 #### 知识点概览 在Web开发中,`session`对象是一种用于维护用户会话状态的重要工具。它允许服务器存储并跟踪每个用户的信息,即使用户在多个页面之间导航也能保持一致的数据。本篇内容将深入...
2. `getAttribute(String name)`:根据键获取会话中的对象。 3. `removeAttribute(String name)`:从会话中移除指定键对应的对象。 4. `getId()`:返回会话的唯一标识符。 在JSP中,我们可以直接使用内置的 `...
本篇将详细探讨如何在JSP(Java Server Pages)环境中利用session对象来存储与用户相关数据。 首先,我们需要理解什么是Session。在Web应用中,每当用户打开一个网站并进行交互时,服务器都会为这个用户创建一个...
setAttribute函数用于将对象存储在Session对象中,getAttribute函数用于从Session对象中获取对象。这些函数的使用可以实现不同页面之间变量的保存和获取。 为了更好地理解Session对象的机理和使用,我们可以通过...
1. `GetSession(string name)`方法:这个方法用于根据传入的session名称(`name`)获取对应的Session对象。它通过调用`HttpContext.Current.Session[name]`来实现。`HttpContext.Current`是当前HTTP上下文的静态属性...
在ASP.NET的早期版本和2.0中,Session对象是由.NET Framework中的类实现的,它会在用户首次访问网站时自动创建,分配一个唯一的SessionID。这个ID是一个24个字符的字符串,由服务器随机生成,用于标识用户的身份。...
这个过程通常是透明的,开发者可以通过`request.getSession()`方法获取到Session对象。Session对象的生命周期从创建时开始,直到服务器判断其达到最大无活动时间(默认通常为30分钟)或者调用`invalidate()`方法时...
至于如何根据Session ID获取Session,通常在Servlet或Filter中,我们可以直接从HttpServletRequest对象中获取Session。假设我们有一个请求方法,可以这样做: ```java import javax.servlet.http.HttpSession; ...
本篇将详细讲解如何在Hibernate中手动获取Session,以及涉及到的相关配置和连接管理。 首先,理解Hibernate的核心组件——Session。Session是Hibernate中的工作单元,它是与数据库交互的主要接口,负责保存、更新和...
当用户访问网站时,服务器为该用户创建一个唯一的SessionID,并将该ID通过Cookie发送到客户端,客户端在每次请求时都会附带这个SessionID。 - **应用场景**: - 登录状态的维护; - 用户个性化设置,如语言选择等...
之后,客户端每次请求时都会带上这个Session ID,服务器根据ID找到对应的Session数据,从而识别出用户。 在WebStorm这样的集成开发环境中,我们可以创建一个简单的Web应用来实现用户登录和退出功能。以下是一些关键...
Session的基本工作原理是,当用户第一次访问服务器时,服务器会为该用户创建一个新的session对象,然后通过一个唯一的ID(通常是一个cookie)来标识这个session,将其存储在用户的浏览器中。只要用户不关闭浏览器,...