如何在Spring-MVC中存储Session对象

时间:2018-05-13 03:03:11

标签: java spring spring-mvc spring-session

我们如何在http会话中的页面之间存储会话对象(重型对象),但不能跨不同的并发会话共享该会话对象(每个会话的新对象)?

1 个答案:

答案 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作为值,您应该可以自由访问不同的会话。