您说的想法是使用会话范围的Bean的一种方法。您可以定义会话范围的POJO:
@Component@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)public class YourSessionBean{...}然后可以将其注入到Controller类中:
@Controllerpublic 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类添加到会话中:
@Controllerpublic class YourController { ... @RequestMapping(value="/url") public ModelAndView process(HttpSession session,...) { ModelAndView modelAndView = new ModelAndView(); session.setAttribute("yourObj", yourObj); ... return modelAndView; } }


