java - 如何在 Spring-MVC 中存储 Session 对象
问题描述
我们如何在 http 会话中跨页面存储会话对象(重对象),而不是在不同的并发会话之间共享该会话对象(每个会话的新对象)?
解决方案
默认情况下,如果您将 HttpSession 作为参数传递给 @*Mapping 方法(在控制器中),您将自动获得对当前会话的访问权限。
@RequestMapping(...)
public String someMethod(HttpSession session) {
// you have access to the session here
}
您可以使用HttpSession.setAttribute(String, Object)在会话中存储对象
但是如果你想访问所有会话,因为每个会话都会自动创建一个线程,你必须将它存储在一个静态变量中。在这种情况下,我假设您正在寻找地图,以便您可以通过会话 ID 识别会话:
static Map<String, HttpSession> connectedUsers;
使用会话 id ( HttpSession.getId()
) 作为键和HttpSession
值,您应该能够自由访问不同的会话。
推荐阅读
- datastage - 在 Datastage 的分层阶段生成 OAuth2 令牌的步骤
- python - Python:计算动态行
- struts2 - Struts 1.x 到 Struts 2.5.16
- javascript - 使用 Javascript 将动态对象转换为基于 Key Substring 的多级 JSON 数组
- c# - 如何在 Selenium+C# 中为单个登录页面测试用例创建多个函数
- botframework - Ngrok 中的 SSL 错误
- hyperledger-composer - 身份, 'admin' 尚未注册",
- node.js - Node.js - 超出最大调用堆栈大小 - vm.runInNewContext
- cordova - 构建应用程序时发生 Ionic java 构建错误
- azure - 使用 spark 进行时间序列分析