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