如何在 Spring MVC 中存储会话

Posted

技术标签:

【中文标题】如何在 Spring MVC 中存储会话【英文标题】:How to store session in Spring MVC 【发布时间】:2010-11-24 22:57:08 【问题描述】:

在 Spring MVC (2.5) Web 应用程序中存储用户会话相关数据(例如用户最近执行的操作的日志)的最佳方式是什么?

使用经典的 javax.servlet.http.HttpSession 或通过在控制器 bean 中指定 scope="session",并将数据存储在会话对象中?

【问题讨论】:

【参考方案1】:

会话范围的bean(使用scope="session")是最干净的方法。这消除了您自己与会话交互的需要。

如果你想将一个会话范围的 bean 自动连接到控制器中,你要么需要使控制器本身具有会话范围,要么使用一个范围代理将它连接到一个单例控制器中,如 described here。两种方法都有效。

【讨论】:

谢谢,我正在寻找一种更简洁的方法 感谢您的出色回答,到目前为止,我一直在直接使用 HttpSession。使控制器请求具有范围(即旧的 Throwaway 控制器)也可以工作并避免对范围代理的需要。这有什么缺点吗? @Dick:请求范围的 bean 会带来性能损失,但只要您的控制器没有昂贵的自定义初始化进程,或者您的流量不是太高,就不应该意义重大。 您能否提供一个在控制器中使用会话范围 bean 的示例?

以上是关于如何在 Spring MVC 中存储会话的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring MVC-Spring Security 应用程序中处理 GWT RPC 调用的会话过期异常

服务器断开连接后如何在 Spring MVC 中保持客户端会话处于活动状态

如何在 Spring MVC 应用程序中实现 Spring 安全性?

在 Rails 和 Spring MVC 之间共享会话

如何在 Spring-mvc 中使用 Session 属性

如何防止 Spring Security 在会话中存储我的自定义 UserDetails 对象