package chatroom;
import java.util.HashMap;
import javax.servlet.http.*;public class testCartBean
{
   private HashMap cart;   public testCartBean()
   {
    cart= new HashMap();
   }
   /**将Request对象中的数据输入到JAVABean中
    *@patrm clientRequest  从客户端传送来的数据
    */
   public void processRequest(HttpServletRequest clientRequest)
   {
    String itemName,strItemNumber,submit;
    int itemNumber=0;
    //获得客户端数据
    submit= clientRequest.getParameter("submit");
    //点击clear按钮的情况
    if(submit!=null)
      if(submit.equals("clear"))
      {
          clear();
          return ;
      }
   itemName= clientRequest.getParameter("itemName");
   strItemNumber=clientRequest.getParameter("itemNumber");   if(itemName!=null)
   {
    try{
      itemNumber= Integer.parseInt(clientRequest.getParameter("itemNumber"));
     }
    catch(NumberFormatException e)
    { itemNumber= 1;}
    }
   //当用户使用回车,而不是点击提交按钮的情况
    if(submit==null)
    {
     addItem(itemName,itemNumber);
     return;
    }
    //点击add按钮的情况
    if(submit.equals("add"))
    {
     addItem(itemName,itemNumber);
     return;
    }
    //点击remove按钮的情况
    if(submit.equals("remove"))
    {
     removeItem(itemName);
    }
    //点击update按钮的情况
    if(submit.equals("update"))
    {
     updateItem(itemName,itemNumber);
    }
    } /**向购物车添加商品
   *@param itemName 商品名
   */
   public void addItem(String itemName)
   {
    if(cart.get(itemName)==null)
    {
     cart.put(itemName,new Integer(1));
   // System.out.println(cart.get(itemName));
    // System.out.println(cart.get(itemName).toString());
    }
    else
      {
        int oldNumber= ((Integer)(cart.get(itemName))).intValue();
        cart.remove(itemName);
        cart.put(itemName,new Integer(oldNumber+1));
      }
   }
   /**
    *向购物车添加商品
    *@param itemName 商品名
    *@param itemNumber  商品数量
   */
   public void addItem(String itemName,int itemNumber)
   {
     int oldNumber=0;
     try
     {
      oldNumber= ((Integer)(cart.get(itemName))).intValue();
     }
     catch(NullPointerException e){}
     cart.put(itemName,new Integer(itemNumber+oldNumber));
   }   //清除购物车中的商品
   public void clear()
   {
     cart.clear();
   }
   /**
    *更新购物车中某一项商品的数量
    *@param itemName 商品名
    *@param itemNumber  商品数量
   */
   public void updateItem(String itemName,int itemNumber)
   {
     cart.remove(itemName);
     cart.put(itemName,new Integer(itemNumber));
   }
   public void removeItem(String itemName)
   {
    cart.remove(itemName);
   }
   /**
    *返回一个包含有购物车数据的HashMap对象
    *@return 一个包含有购物车数据的HashMap对象
    */
   public HashMap getCart()
   {
    HashMap returnCart= new HashMap(cart);
    return returnCart;
   }
   public int getGoodsNumber(String goodsName)
   {
     int goodsNumber=0;
     try{
       goodsNumber= ((Integer)(cart.get(goodsName))).intValue();
      }
     catch(NullPointerException e)
     { return 0;}
      return goodsNumber;
     }
}

解决方案 »

  1.   

    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.util.*"%><html>
    <head>
    <title>
    testCart
    </title>
    </head>
    <jsp:useBean id="cart" scope="session" class="chatroom.testCartBean"/>
    <body>
    <center>
    <p>请选择商品:</p>
    <form name="testCart" method="post" action="testCart.jsp">
      <select name="itemName" size=10>
       <option value="a">a dsaf
       <option value="s">s sadf
       <option value="d">d dfdsf
       <option value="f">f dsafdsa
       <option value="g">g sdfdsafsdaf
       <option value="h">h sdfdfdf sdf
       <option value="j">j dasfsadfsadf
       <option value="k">k sdaf
       <option value="l">l sdfs
       <option value="r">r afdsafsdf
      </select>
      <br>  <br>
      请填入所需要的数量:
      <input name="itemNumber" type="text" size="4" maxlength="4">
        <br>  <br>  <br>
      <input type="submit" name="submit" value="add">
      <input type="submit" name="submit" value="remove">
    </form>
    目前您的购物车中的商品有:
    <a href="testCart.jsp?submit=clear">清除购物车</a>
    </center>
    <table border=1 height=20 valign="center">
    <%
      cart.processRequest(request);
      //从购物车HashMap中得到一个包含所有商品名称的迭代器
      HashMap myCart= cart.getCart();
      Set cartKeySet= myCart.keySet();
      Iterator ci= cartKeySet.iterator();  while(ci.hasNext())
      {
        String itemName,strOut;
        Integer itemNumber;    itemName=(String)ci.next();    if(itemName!=null)
        {
          itemNumber= (Integer)myCart.get(itemName);       strOut= new String("");
           strOut+= "<tr><td>"+itemName;
           strOut+= "High Programming 共"+itemNumber+"本";
           strOut+= "</td><td align=center>";
           strOut+= "<a href=testCart.jsp?itemName=";
           strOut+= itemName;
           strOut+= "&submit=remove>删除</a>";
           strOut+= "</td><td aling=center>修改为:</td>";
           strOut+= "<td align=center><form action=testCart.jsp method=post>";
           strOut+= "<input type=hidden name=itemName value=";
           strOut+= itemName;
           strOut+= "><input type=text name=itemNumber maxlength=4 size=4 value=";
           strOut+= itemNumber.intValue();
           strOut+= "><input type=submit value=update name=submit></form></td></tr>";
           out.println(strOut);
        }
      }
      Enumeration a= request.getParameterNames();
    while(a.hasMoreElements())
    {
      System.out.println(a.nextElement());
    }
    %>
    </table>
    </body>
    </html>
      

  2.   

    建议用数据库来做,可以保存订单的信息,而vector就只能暂时保存
      

  3.   

    zhuimeng313(逍遥云飞) 
    谢谢,有事先走,回来结帐
     owenyang(阿炳) 
    这样是不是太耗资源了,
      

  4.   

    你的数据库中应该有关于书的各种信息:类别,价格,库存等等。
    还要有关于订单的各种信息:书名,订单号,数量,付款方式,订购人员等等
    在实现购物车时,可以通过session存储当前用户所要购买书的信息;定义一个shoppingCart类,这个类中包含各种下订单时所要用到的信息的私有变量,然后将一个包含订单信息的shoppingCart类型的变量存储到session中。当用户真正的下订单时,再将这些信息从session中取出提交给数据库,将库存,订单等信息存入数据库中。
      

  5.   

    为什么我电击管理结帐后他只是说你结帐用了多少分,但回答我的问题的朋友的分怎么没有加上呀,我不进行faq管理就不给结吗,搞不懂,告诉一下,ok