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在输出的时候确实修改过的,为什么,请高人给解释一下
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在输出的时候确实修改过的,为什么,请高人给解释一下
解决方案 »
- java.lang.ClassNotFoundException
- hibernate修改对象问题
- jsf高手进来帮忙,跪谢!!!
- 在xml中加mime 附件的问题
- 这是为什么? if 的问题?
- 关于文本内容转化成网页内容后在text中再显示的乱码问题:)
- java.sql.SQLException: Before start of result set 是怎么造成的!!(在线)
- linux惹的祸???参与有分
- 各位帮帮忙,一个奇怪的问题,在线等!
- 高手请进,关于JSP解释引擎与Apache结合的问题?
- 请教个问题。搞了半天也不知道怎么解决 org.apache.catalina.core.StandardWrapperValve invoke
- 关于NetBeans上部署错误的问题
这一句 cart就指向了map.map对象在内存中就那一个,对吧.
session.setAttribute("cart", cart);
这句只是说给map加个作用域.