如何在Spring MVC中存储会话

37

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

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

1个回答

37

使用scope="session"的会话作用域Bean是最干净的方法。这样可以避免手动与会话交互。

如果要在控制器中自动装配会话作用域的Bean,您需要将控制器本身设为会话作用域,或者使用代理将其连线到单例控制器中,正如此处所述。任何一种方法都是有效的。


谢谢,更简洁的方法正是我正在寻找的。 - dakull
1
感谢您的精彩回答,直到现在我一直在直接使用HttpSession。将控制器作用域设置为“请求作用域”(即旧的“一次性控制器”)也可以起作用,并可避免使用作用域代理的需要。这样做会有什么不利影响吗? - Dick Chesterwood
4
@Dick:请求范围的bean会带来性能损耗,但只要你的控制器没有昂贵的自定义初始化过程,或者你的流量不是太高,那就不会显著影响性能。 - skaffman
2
请问您能否提供一个在控制器中使用会话作用域Bean的示例? - vacuum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接