gpt4 book ai didi

java - 如何在 session 范围 spring mvc 3.0.3 的 pojo 类中维护数据

转载 作者:行者123 更新时间:2023-11-30 09:15:50 24 4
gpt4 key购买 nike

我已根据查询在论坛中进行了搜索,但找不到答案。我是 spring mvc 的新手,所以我有点困惑,如果有人能帮助我,那就太好了,

我有一个 spring mvc 应用程序,我从请求参数中获取了一些数据,我必须在整个 session 期间维护这些数据。我如何使用 Spring 3.0.3 实现此目的。

我有一些想法来实现这个

1> 创建一个 session 范围的pojo2> 然后在 Controller 中 Autowiring pojo 并填充 pojo。3> 因为它在 session 范围内,填充的值应该在整个 session 期间可用

请让我知道我是否在正确的轨道上。

谢谢。

最佳答案

您所说的想法是使用 session 作用域 bean 的一种方法。您可以定义 session 范围内的 POJO:

@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class YourSessionBean{
...
}

然后您可以将它注入(inject)到您的 Controller 类中:

@Controller
public class YourController {
@Autowired
private YourSessionBean yourSessionBean;
...
}

您还可以使用 @SessionAttributes将您的 POJO 存储到 session 中:

public class YourObject {
...
}

并且您可以在 Controller 中使用 @SessionAttributes 注释将 YourObject 的实例放入 session 中:

@Controller
@SessionAttributes("yourObj")
public class YourController {
...
@RequestMapping(value="/url")
public ModelAndView process(...) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("yourObj", new YourObject()); // this will put YourObj into session

return modelAndView;
}
}

但是,在使用 @SessionAttributes 时,您应该考虑以下语句 block (从 @SessionAttributes Doc 复制):

NOTE: Session attributes as indicated using this annotation correspond to a specific handler's model attributes, getting transparently stored in a conversational session. Those attributes will be removed once the handler indicates completion of its conversational session. Therefore, use this facility for such conversational attributes which are supposed to be stored in the session temporarily during the course of a specific handler's conversation.

For permanent session attributes, e.g. a user authentication object, use the traditional session.setAttribute method instead.

您还可以使用 HttpSession 作为您的 @RequestMapping 处理程序方法的方法参数,然后将您的 POJO 类添加到 session 中:

@Controller
public class YourController {
...
@RequestMapping(value="/url")
public ModelAndView process(HttpSession session,...) {
ModelAndView modelAndView = new ModelAndView();
session.setAttribute("yourObj", yourObj);
...
return modelAndView;
}
}

关于java - 如何在 session 范围 spring mvc 3.0.3 的 pojo 类中维护数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19699922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com