如何维护会话范围的pojo类中的数据 spring mvc 3.0.3

2024-01-19

我已经从论坛中搜索了我的问题,但找不到答案。 我是 spring mvc 的新手,所以我有点困惑,如果有人帮助我,那就太好了,

我有一个 spring mvc 应用程序,我从请求参数中获取一些数据,我必须在整个会话中维护该数据。我怎样才能使用 Spring 3.0.3 实现这一目标。

我有一些想法来实现这个

1> 创建一个具有会话范围的pojo 2> 然后在控制器中自动装配pojo并填充pojo。 3> 由于它在会话范围内,因此填充的值应该在整个会话中可用

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

Thanks.


您所说的想法是使用会话范围 bean 的一种方法。您可以定义会话范围的 POJO:

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

然后你可以将它注入到你的控制器类中:

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

您还可以使用@SessionAttributes http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-sessionattrib将 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 文档 http://docs.spring.io/spring/docs/3.1.4.RELEASE/javadoc-api/org/springframework/web/bind/annotation/SessionAttributes.html):

注意:使用此注释指示的会话属性对应 到特定处理程序的模型属性,透明地存储 在对话会话中。一旦这些属性将被删除 处理程序指示其会话会话完成。所以, 使用此工具来处理以下会话属性 应该在过程中临时存储在会话中 特定处理程序的对话。

对于永久会话属性,例如用户认证对象, 请改用传统的 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;  
}  
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何维护会话范围的pojo类中的数据 spring mvc 3.0.3 的相关文章

随机推荐