如何在Spring MVC 3中获取会话信息

时间:2011-09-08 03:52:38

标签: java spring-mvc

我是Spring MVC的新手,我正在尝试在控制器类中获取会话信息

现在我正在使用

  

HttpSession objHttpSession = request.getSession(true);

如果我想获得会话创建时间和会话ID我正在使用

  

objHttpSession.getCreationTime();   objHttpSession.getId();

我想知道是否有任何Spring MVC特定方式来获取会话详细信息?

提前致谢

2 个答案:

答案 0 :(得分:35)

当我需要访问会话详细信息时,我通常在Spring MVC控制器方法中声明一个HttpSession类型的参数。

例如:

@RequestMapping("/myrequest")
public void handleMyRequest(HttpSession session, ...) {
   ...
}

我认为这是最简单的方法,但不知道它是否符合您的需求。

答案 1 :(得分:21)

您可以像这样在Spring MVC中获取会话:

ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession session = attr.getRequest().getSession();

currentRequestAttributes方法返回当前绑定到当前请求的线程的RequestAttributes,并且从该请求中您可以获得会话。当您需要在非spring类中获取会话时,这非常有用。否则你可以使用:

@RequestMapping(...)
public void myMethod(HttpSession session) {   
}

Spring会将HttpSession实例注入到控制器的方法中。