Spring-mvc 3.0应用程序会话范围

使用左侧菜单时,我没有重定向到其他页面,而是使用href链接其他页面。 但在执行此操作时,我的会话范围仅限于请求不再存在。 所以这是我的控制器代码:

设置会话:

request.getSession(true).setAttribute("application", application); 

在其他控制器中获取会话对象:

 HttpSession session = request.getSession(); session.getAttribute("application"); //application null in href; redirect works fine 

那么有什么方法可以在Spring MVC 3中使用“应用程序”会话范围。这样我就可以通过我的应用程序访问会话。

我在application-servlet.xml中尝试了这段代码

      

我正在注入对象来设置和检索简单bean,如下所示:

 @Autowired private ApplicationVO applicationVO; 

我在这做错了什么?

我还在控制器@SessionAttributes("applicationVO")上尝试了@SessionAttribute ,但似乎问题仍然存在。

如果有人能为我提供一个带有两个控制器的小例子,我将深表感谢。

阅读已定义的bean范围的参考 。 他们来了:

bean范围

所以你通常要做的是定义一个bean并在范围session注册它。 现在您可以将它注入任何您需要的地方。 请参阅此处的说明 ,但请注意此问题 (具有非单例依赖关系的单例对象)。


或者,您可以使用@SessionAttributes机制来存储和检索控制器中的任意会话数据。 请参阅此处的参考 。

参考:

  • Bean范围>会话范围
  • 使用@SessionAttributes指定要存储在会话中的属性

@Session属性不会在会话范围中存储数据。 它将数据存储在会话范围内,该范围是大于请求但小于会话的范围。 此范围由Spring进行内部管理以进行对话(跨越多个请求),并在对话完成后删除

要将bean存储在会话范围中,您必须在spring-context.xml中声明requestContextListner,这会将请求公开给当前线程