我已经从我的查询中搜索了论坛,但找不到答案。我是春季 mvc 的新手,所以我有点困惑,如果有人帮助我,那就太好了,
我有一个 spring mvc 应用程序,我从请求参数中获取一些数据,我必须在整个会话中维护该数据。 我如何使用 Spring 3.0.3 实现这一目标。
我想了一些实现这个的想法
1> 创建具有会话范围的 pojo2>然后在控制器中自动连接pojo并填充pojo。3> 由于它位于会话范围内,因此填充的值应在整个会话中可用
请让我知道我是否走在正确的轨道上。
谢谢。
你说的想法是使用会话范围 bean 的一种方法。您可以定义会话范围的 POJO:
@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class YourSessionBean{
...
}
然后你可以把它注入到你的控制器类中:
@Controller
public class YourController {
@Autowired
private YourSessionBean yourSessionBean;
...
}
您还可以使用@SessionAttributes将 POJO 存储到会话中:
public class YourObject {
...
}
您可以在控制器中使用@SessionAttributes
注释将YourObject
实例放入会话中:
@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
时,您应该考虑以下语句块(从 @SessionAttributes Doc 复制):
注意:使用此注释指示的会话属性对应于 到特定处理程序的模型属性,透明地存储 在会话中。一旦 处理程序指示其会话的完成。因此 将此工具用于此类会话属性,这些属性是 应该在会话中临时存储在会话中 特定处理程序的对话。
对于永久会话属性,例如用户身份验证对象, 请改用传统的 session.setAttribute 方法。
还可以使用 HttpSession
作为@RequestMapping
处理程序方法的方法参数,然后将 POJO 类添加到会话中:
@Controller
public class YourController {
...
@RequestMapping(value="/url")
public ModelAndView process(HttpSession session,...) {
ModelAndView modelAndView = new ModelAndView();
session.setAttribute("yourObj", yourObj);
...
return modelAndView;
}
}