设置会话变量spring mvc 3


问题内容

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

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


问题答案:

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

${sessionScope.yourVariable}

有关更多信息,请参见使用作用域对象

如果设置,<%@ 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用于特定的用例,并且不会将变量放入会话中,以便任何人都可以访问它们:

这是spring人们如何描述@SessionAttribute的功能:

@SessionAttributes的工作方式与SimpleFormController的sessionForm相同。它将命令(或@SessionAttributes任何对象)放在会话中的第一个请求和最后一个请求之间的持续时间内(大多数情况下是初始GET和最终POST)。之后,将这些东西删除。

每个Controller都有其自己的ModelMap,因此在controller2中不能将某些内容作为@SessionAttributes放置在controller1中,反之亦然。为此,您必须自己手动将内容放入会话中。