【问题标题】:Set session variable spring mvc 3设置会话变量spring mvc 3
【发布时间】:2011-05-09 15:19:21
【问题描述】:

我如何设置一个会话对象,然后我可以使用${variable}${requestScope.variable} 在我的任何视图中使用它

为了能够使用会话,我需要设置<%@ page session="true" %> 吗?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    如果您想在视图中访问会话变量,最简单的方法是:

    ${sessionScope.yourVariable} 
    

    请参阅Using Scope Objects 了解更多信息。

    如果您设置<%@ page session="true">,那么JSP 会将会话范围和页面范围合并到一个命名空间中。然后你可以这样做:

    ${yourVariable}
    

    你可以像这样在 mvc 控制器的会话中加入一些东西:

    @RequestMapping("/test")
    @Controller
    public class TestController {
        @RequestMapping(method = RequestMethod.GET)
        public String testMestod(HttpServletRequest request)
        {
            request.getSession().setAttribute("testVariable", "Test Values!!");
            return "testJsp";
        }
    }
    

    最后,@SessionAttribute 用于特定用例,不会将变量放入会话中,以便任何人都可以访问它们:

    春天的人们是这样描述@SessionAttribute 的功能的:

    @SessionAttributes 在 与 sessionForm 的方式相同 简单表单控制器。它把 命令(或用于 @SessionAttributes 任何对象)在会话中 第一个和第一个之间的持续时间 最后一个请求(大部分时间 初始 GET 和最终 POST)。后 东西被移除了。

    每个 Controller 都有自己的 ModelMap 所以一些东西作为 控制器 1 中的 @SessionAttributes 在控制器 2 中不可用,并且 反之亦然。为此,您将 必须在会议上放东西 自己手动。

    【讨论】:

      【解决方案2】:

      使用 SessionAttributes 注解。查看 spring 文档here

      您还可以使用 DefaultSessionAttributeStore api 在会话中手动添加和删除变量

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-11
        • 2021-04-09
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多