我们如何在http会话中的页面之间存储会话对象(重型对象),但不能跨不同的并发会话共享该会话对象(每个会话的新对象)?
答案 0 :(得分:1)
默认情况下,如果您在@ * Mapping方法(在Controller中)中将HttpSession作为参数传递,则您将自动获得对当前会话的访问权。
@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
作为值,您应该可以自由访问不同的会话。