【发布时间】:2013-06-11 18:12:51
【问题描述】:
我正在使用 Spring 3 MVC(我对它很陌生...),我需要在用户登录后加载一些数据库信息并保持可用直到用户注销或关闭网页(我可以每次需要时都查询数据库,但效率不高)。 据我所知,这应该通过会话的管理来完成。我找到了以下管理会话数据的教程:
http://richardchesterwood.blogspot.com.es/2011/03/using-sessions-in-spring-mvc-including.html
您认为这是一个好的起点吗?提到的第三个选项是我需要的最佳方法吗? 我应该何时填充需要保留在用户会话中的对象?用户登录的时候可以这样做吗?
我还想知道是否可以保留一些所有用户都应该共有的信息(例如对每个用户都有效的会话)。
非常感谢!!
【问题讨论】:
-
你也可以在你的控制器上使用@SessionAttributes注解来指明某些模型属性应该被放入Session中。我发现这样做更容易,因为我只需要担心在 Model 中放入一些东西,其余的由 Spring 处理。为了清理事情,我在我的处理程序方法上使用 SessionStatus,并对其执行 .setComplete() ,这会使会话无效。这是一个带有示例的博客文章:fruzenshtein.com/spring-mvc-session
-
这是一种管理一些会话数据的有趣方式,但是如果您需要管理重量级的类怎么办?我需要知道的是管理重量级课程作为会话数据的最(或几乎)有效的方法。谢谢!!
-
我不认为该链接是一个好的起点。
-
当我有一个需要在会话中的类时,我使用上面加上@ModelAttribute。当放置在处理程序方法的属性上时,此注解告诉 Spring 将传入的 HTTP 参数反序列化为适当的对象实例。但是,还有另一个技巧:将 (at)ModelAttribute 放在返回对象实例且不带参数的方法上。在这种情况下,Spring 所做的是调用此方法来创建对象的实例,而模型中不存在对象实例(以及扩展的 Session)。
-
这是一篇关于如何一起使用提到的两个注释的博客文章:vmustafayev4en.blogspot.com/2012/10/…
标签: java session spring-mvc