int id = Integer.parseInt(request.getParameter("id"));
HttpSession session = request.getSession();
List<BookInfoDto> bookList = (List<BookInfoDto>)session.getAttribute("bookList");
for(int i = 0; i < bookList.size();i++){
if(bookList.get(i).getId() == id){
session.removeAttribute("bookList");
}
}从页面获取id值,再对id所对应的信息进行删除。我这样是删除session里的全部信息了。请问该怎么改才能删除id所对应的信息。

解决方案 »

  1.   

    int id = Integer.parseInt(request.getParameter("id"));
    HttpSession session = request.getSession();
    List<BookInfoDto> bookList = (List<BookInfoDto>)session.getAttribute("bookList");
    for(int i = 0; i < bookList.size();i++){
    if(bookList.get(i).getId() == id){
    boolList.remove(i);
    session.setAttribute("bookList",bookList);
    break;
    }
    }
      

  2.   


    int id = Integer.parseInt(request.getParameter("id"));
    HttpSession session = request.getSession();
    List<BookInfoDto> bookList = (List<BookInfoDto>)session.getAttribute("bookList");
    for(int i = 0; i < bookList.size();i++){
    if(bookList.get(i).getId() == id){
    bookList.remove(bookList.get(i))
    }
    }用哪个好些
      

  3.   

    id是在bookList里面封装的,所以应该是对bookList对象进行操作才行int id = Integer.parseInt(request.getParameter("id"));
    HttpSession session = request.getSession();
    List<BookInfoDto> bookList = (List<BookInfoDto>)session.getAttribute("bookList");
    for(int i = 0; i < bookList.size();i++){
    if(bookList.get(i).getId() == id){
       bookList.remove(i);
    }
    }
      

  4.   

    楼上说的是,我上面写的貌似多此一举了,没有必要在往session中设置值了 ,直接移除集合中的就行了,他们指向的是同一个对象
    int id = Integer.parseInt(request.getParameter("id"));
    HttpSession session = request.getSession();
    List<BookInfoDto> bookList = (List<BookInfoDto>)session.getAttribute("bookList");
    for(int i = 0; i < bookList.size();i++){
    if(bookList.get(i).getId() == id){
    boolList.remove(i);
    //session.setAttribute("bookList",bookList);
    break;
    }
    }
      

  5.   

    我的id是在dto里的。。如果是那样的话应该用哪个好?是用bookList.remove(bookList.get(i))好还是boolList.remove(i);