设置会话可变弹簧 mvc 3

2022-09-03 04:31:28

如何设置会话对象,然后通过使用或${variable}${requestScope.variable}

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


答案 1

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

${sessionScope.yourVariable} 

有关详细信息,请参阅使用作用域对象

如果设置,则 JSP 会将会话作用域和页面作用域合并到单个命名空间中。然后你可以做:<%@ page session="true">

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

每个控制器都有自己的模型映射,因此在控制器1中作为@SessionAttributes的东西在控制器2中不可用,反之亦然。为此,您必须自己手动将内容放在会话中。


答案 2

使用会话属性注释。在这里的春季文档中查看

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


推荐