我想每次请求后台时,保存一笔数据到一个集合,最后一次一起保存到数据库

前台分页显示数据,翻第二页的时候,第一页的数据保存到集合listAll,翻第三页的时候,保存第二页数据到listAll...最后点提交的时候,一起把listAll中的数据保存到数据库。这样怎么做?

private Set<ResourceAuthority> listAll;

private RoleController() {
    log.info("log4j constructor RoleController");
    if(null==listAll){
        listAll=new HashSet<ResourceAuthority>();
    }
}

public ModelAndView showRole(HttpServletRequest req,
        HttpServletResponse res,Role role) throws Exception {
    log.info("log4j showRole init");
    //
    ModelAndView mav = new ModelAndView("role_manager");
    log.info("log4j showRole end");
    return mav;
    }

我是这样写的,不知道这样对不。如果有多个人请求呢?会不会出错?

[quote]用session的话,我不是直接保存到session。首先我要从session里面得到集合listAll,把从前台传过来有相同数据先删除,再添加。添加之后再保存到session。 [/quote]

用Map啊,不要用List,Map不允许重复Key的。添加完了再把当前Session中的这个Map清空

存在Session里面! :wink:

存放到session会影响效率的,但是是一种解决办法

你使用的SpringMVC吧。
首先这个方案要使用到Session,你的程序里面Set listAll并不在Session中
第2,SpringmVC中的实例变量是不可以共享的,当然你最好测试一遍