如何在 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 中保持客户端会话处于活动状态