不是在这里加的,这写是购物车对象的业务逻辑
应该是在登录那个servlet上放入session的吧

解决方案 »

  1.   

    ShoppingCartItem scitem = (ShoppingCartItem) items.get(bookId);
    //这里的get方法是属于Hashmap类的吗?Hashmap的语法到底怎样的?有些哪些方法?
      

  2.   

    大致思路:
    一个购物车shopcart里有很多件商品shopcartitem,这个购物车维护商品的数量,取出商品,拿调商品。
    一个session是与一个用户的一次交互,因此一个session对应一个shopcart。在整个session中shopcart只有一个。在需要的时候对这个shopcart从session中取出,修改之后(添加商品、删除商品、更改商品数量等操作)再存入session。等到最后买单。
      

  3.   

    网页上点“加入购物车”会跳到如下jsp(部分代码):
    <jsp:useBean id="cart" scope="session" class="mypack.ShoppingCart"/><html>
    <head><title>BookCatalog</title></head>
     <%@ include file="banner.jsp" %><%
      // Additions to the shopping cart
      String bookId = request.getParameter("Add");
      if (bookId != null) {
        BookDetails book = bookDB.getBookDetails(bookId);
        cart.add(bookId, book);
    %>
    ----------
    这里<jsp:useBean id="cart" scope="session" class="mypack.ShoppingCart"/>
    是创建了一个ShoppingCart类的实例cart吧?!那为何同一客户端点不同次的“加入购物车”,都是同一个cart对象,而不是每次创建一个cart对象?不同的客户端又会新创建一个cart对象?
      

  4.   

    都是同一个cart对象??
    你的scope是session呀,在这个session中,<jsp:useBean id="cart" scope="session" class="mypack.ShoppingCart"/>
    如果没有没有定义mypack.ShoppingCart的cart对象,则new一个新的,如果已经有cart对象存在,就用以前的那个,所以你在同一个客户端的一个session期间,都是同一个对象的!不同的客户端是不同的session的,当然新创建了。