设置会话变量 spring mvc 3

发布于 2024-11-06 03:34:07 字数 167 浏览 0 评论 0原文

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

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

How can I set a session object which I can use then in any of my views by using ${variable} or ${requestScope.variable}

To be able to use sessions do I need to set <%@ page session="true" %> ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白馒头 2024-11-13 03:34:07

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

${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 的工作原理是
与 sessionForm 的方式相同
简单表单控制器。它把
命令(或@SessionAttributes
会话中的任何对象)
第一个和第二个之间的持续时间
最后一个请求(大多数时候
初始 GET 和最终 POST)。后
这些东西已被删除。

每个控制器都有自己的ModelMap
所以把一些东西作为
控制器1中的@SessionAttributes
在controller2中不可用并且
反之亦然。为了让它发挥作用,你会
必须在会话中添加内容
自己手动。

If you want to access a session variable in your view the easiest way to do it is :

${sessionScope.yourVariable} 

See the Using Scope Objects for more info.

If you set <%@ page session="true"> then the JSP will merge the session scope and at the page scope into a single namespace. Then you can do:

${yourVariable}

You can put something into the session in a mvc controller like this:

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

Finally, the @SessionAttribute is meant for a specifc use case, and doesn't put variables into the session so that anyone can access them:

Here is how the spring folks describe the functionality of @SessionAttribute:

The @SessionAttributes works in the
same way as the sessionForm of the
SimpleFormController. It puts the
command (or for the @SessionAttributes
any object) in the session for the
duration between the first and the
last request (most of the time the
initial GET and the final POST). After
that the stuff is removed.

Each Controller has it's own ModelMap
so something put as a
@SessionAttributes in controller1
isn't available in controller2 and
vice versa. For that to work you will
have to put stuff on the session
manually yourself.

命硬 2024-11-13 03:34:07

使用 SessionAttributes 注释。查看 Spring 文档 此处

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

Use the SessionAttributes Annotation. Check it out at the spring documentation here

You can also manually add and remove variables from session with the DefaultSessionAttributeStore api

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文