设置会话变量spring mvc 3

时间:2011-05-09 15:19:21

标签: java spring spring-mvc

如何使用${variable}${requestScope.variable}

设置我可以在任何视图中使用的会话对象

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

2 个答案:

答案 0 :(得分:31)

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

${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相同的方式   SimpleFormController。它提出了   命令(或@SessionAttributes   会话中的任何对象)   第一和第二之间的持续时间   最后一次请求(大部分时间是   最初的GET和最后的POST)。后   这些东西被删除了。

     

每个Controller都有自己的ModelMap   所以有点像   controller1中的@SessionAttributes   在控制器2和。中不可用   反之亦然。为了那个工作,你会   必须把东西放在会议上   手动自己。

答案 1 :(得分:0)

使用SessionAttributes Annotation。请在弹簧文档here

中查看

您还可以使用DefaultSessionAttributeStore api

手动添加和删除会话中的变量