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

时间:2013-10-31 06:39:09

标签: java spring-mvc

我在论坛中搜索了我的查询但找不到答案。 我是初学mvc的新手,所以我有点困惑,如果有人帮助我,那将是很好的,

我有一个spring mvc应用程序,我从请求参数中获取一些数据,我必须通过会话维护该数据。我怎么能用Spring 3.0.3实现这个目的。

我有一些想法来实现这个

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

如果我走在正确的轨道上,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:2)

您所说的想法是使用会话范围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的实例放入会话中:

@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复制):

  

注意:使用此注释指示的会话属性对应   到特定处理程序的模型属性,获得透明存储   在会话中。这些属性将被删除一次   handler表示其会话会话已完成。因此,   将此工具用于此类会话属性   应该在课程期间暂时存储在会话中   特定处理程序的对话。

     

对于永久会话属性,例如用户身份验证对象,   改为使用传统的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;  
}  
}