public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  HttpSession session = request.getSession(false); 
  RequestDispatcher dispatcher;
  // 如果session不存在,转向 /ch04/books.jsp
  if (session == null) {
   dispatcher = request.getRequestDispatcher("/ch04/books.jsp");
   dispatcher.forward(request, response);
  }
  // 取出购物车和添加的书籍
  Map cart = (Map) session.getAttribute("cart");
  BookBean book = (BookBean) session.getAttribute("bookToAdd");
  // 如果购物车不存在,创建购物车
  if (cart == null) {
   cart = new HashMap();
   // 将购物车存入session之中
   session.setAttribute("cart", cart);
  }
  // 判断书籍是否在购物车中
  CartItemBean cartItem = (CartItemBean) cart.get(book.getISBN());
  // 如果书籍在购物车中,更新其数量.
  // 否则,创建一个条目到Map中.
  if (cartItem != null)
   cartItem.setQuantity(cartItem.getQuantity() + 1);
  else
   cart.put(book.getISBN(), new CartItemBean(book, 1));
  // 转向viewCart.jsp显示购物车
  dispatcher = request.getRequestDispatcher("/ch04/viewCart.jsp");
  dispatcher.forward(request, response);  
 }上面的购物车使用hashMap,但是cart.put(book.getISBN(), new CartItemBean(book, 1));   在hashMap里面又放了一条数据,却没有在session中更新hashMap(我觉得应该有一句:session.setAttribute("cart", cart);  ,这里却没有),而session中的cart在输出的时候确实修改过的,为什么,请高人给解释一下