<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 188,comments - 176,trackbacks - 0

     

    最近做畢設(shè),將自己以前寫(xiě)的一個(gè)購(gòu)物車(chē)的模塊重構(gòu)了一遍,將一些bug進(jìn)行了修復(fù)。實(shí)現(xiàn)了對(duì)hashmap容器的基本CRUD功能。在這里和大家一起分享下,希望大家提出更好意見(jiàn)和想法。

    原理:利用session會(huì)話保持用戶(hù)一次購(gòu)物操作的購(gòu)買(mǎi)記錄,當(dāng)用戶(hù)點(diǎn)擊“結(jié)帳”后將保存在session中的hashmap容器中的信息insert到DB中,完成一次購(gòu)物操作。

    模塊所需要配置文件:hibernate.cfg.xml  ,TableGoods.hbm.xml  ,struts-config.xml 

    模塊對(duì)應(yīng)的jsp有:index.jsp(商品信息一覽頁(yè)面),buy.jsp(購(gòu)買(mǎi)操作后的商品清單頁(yè)面)

    模塊對(duì)應(yīng)的action有:IndexAction (實(shí)現(xiàn)對(duì)DB中的商品表信息結(jié)果集的遍歷,并轉(zhuǎn)向?qū)?yīng)的index.jsp) 
                                         ListAction (將JSP上的商品信息存入hashmap容器,并轉(zhuǎn)向?qū)?yīng)的buy.jsp)
                                         UpdateAction (對(duì)buy.jsp頁(yè)面上的商品數(shù)量修改的業(yè)務(wù)邏輯處理)
                                         DeleteAction (對(duì)buy.jsp頁(yè)面上的商品列表信息的業(yè)務(wù)邏輯處理)

    模塊所需的相關(guān)Java容器選擇:存儲(chǔ)商品id,sum,price,name,allprices信息用hashmap,主要是考慮到其key重復(fù)后可以覆蓋上次的value記錄。存儲(chǔ)點(diǎn)擊商品后的商品id用list容器,主要考慮到list是有序并可以重復(fù)的特點(diǎn),用其可以跟蹤用戶(hù)多次點(diǎn)擊相同商品的操作,并對(duì)商品的數(shù)量進(jìn)行相應(yīng)的增加。

    模塊主要Action類(lèi)如下:

     /** 
      * 陳列商品
      
    */


    IndexAction:

    public class IndexAction extends Action {

     
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
      
      
    //查找商品表中的所有商品信息
         GoodsDAO dao = new GoodsDAO();
      List list 
    = dao.find();
      request.setAttribute(
    "lister",list);
      
      
    return mapping.findForward("a");
     }

    }



    /** 
      * 點(diǎn)擊購(gòu)買(mǎi)信息
      
    */


    ListAction:

    public class ListAction extends Action {

     
    // 將hashmap中value轉(zhuǎn)到list中
     public static List getList(HashMap hs) {
      List list 
    = new ArrayList();
      Iterator itr 
    = hs.keySet().iterator();
      
    while (itr.hasNext()) {
       list.add(hs.get(itr.next()));
       }

      
    return list;
     }

    //優(yōu)化后的getList方法
     public static List getList(HashMap hs) {
      
    return new ArrayList(hs.values());
     }



     
    // 將點(diǎn)擊的商品id和已經(jīng)點(diǎn)擊過(guò)的商品id數(shù)組中去比較,看是否有重復(fù),真為有重復(fù)
     public static boolean isCheck_on(int[] ids, int _id) {
      
    boolean flag = false;
      
    for (int i = 0; i < ids.length; i++{
       
    if (ids[i] == _id) {
        flag 
    = true;
       }

      }

      
    return flag;
     }


     
    // 將新點(diǎn)擊商品的id和list(存放在session中的allIdSumList容器)中元素的id屬性比較
     public static void test_ListCheck(List list, int check_id, float _p,String _n) {
      
    for (int i = 0; i < list.size(); i++{
       
    int j = ((IdSumPriceNameDTO) list.get(i)).getId();
       
    // 將list_sumId的第i個(gè)元素++
       int k = ((IdSumPriceNameDTO) list.get(i)).getSum();
       
    if (j == check_id) {
       
    //相等條件則將k(商品數(shù)量)++
        k++;
       
    //session中的"allIdSumList"也隨之更新,引用傳參原理
        ((IdSumPriceNameDTO) list.get(i)).setSum(k);
        
    //list.remove(i);
        
    //IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO(j, k, _p,_n);
        
    //將更新后的idSumDTO重新add到list中,session中的"allIdSumList"也隨之更新,引用傳參原理
        
    //list.add(i, idSumDTO);
       }

      }

     }

     
     
    // 將點(diǎn)擊商品id和allIdSumList(session中)比較,并返回比較后的list_sumId
     public static List getCounter_List(List _list_check, int id, HttpSession sess,
       
    float price,String _name) {

      List list_sumId 
    = null;
      String flag 
    = (String) sess.getAttribute("flags");
      
    // 執(zhí)行了修改操作的條件
      if (flag != null{
       
    // 從session中獲得已經(jīng)修改過(guò)商品的id的數(shù)組
       int[] ider = (int[]) sess.getAttribute("ider");
       
    // 在修改操作后,在已修改商品上繼續(xù)購(gòu)物操作
       if (isCheck_on(ider, id)) {
         list_sumId 
    = (List) sess.getAttribute("allIdSumList");
       
    // 調(diào)用test_ListCheck方法
         test_ListCheck(list_sumId,id,price,_name);
        }
     
       
    // 修改操作后,點(diǎn)擊沒(méi)有被修改數(shù)量過(guò)的商品
       else {
       
    // 標(biāo)志位
        boolean flag_c = true;
        
    // 新點(diǎn)擊商品id和list中歷史點(diǎn)擊記錄比較
        for (int i = 0; i < _list_check.size() - 1; i++{
         
    if (_list_check.get(i).equals(id)) {
          flag_c 
    = false;
         }

        }

         
    // session中獲得"allIdSumList"
        list_sumId = (List) sess.getAttribute("allIdSumList");
         
    // 新點(diǎn)擊操作
        if(flag_c){
         IdSumPriceNameDTO idSumDTO 
    = new IdSumPriceNameDTO(id, 1, price,_name);
        
    // session中的"allIdSumList"也隨之更新,引用copy
         list_sumId.add(idSumDTO);
         }

         
    // 重復(fù)點(diǎn)擊操作
        else{
         
    // 調(diào)用test_ListCheck方法
         test_ListCheck(list_sumId,id,price,_name);
        }

       }

      }

         
    // 未點(diǎn)擊修改的操作條件
      else {
       
    // session中獲得"allIdSumList"
       list_sumId = (List) sess.getAttribute("allIdSumList");
       
    // 標(biāo)志位
       boolean flag_c = true;
       
    // 新點(diǎn)擊商品id和list中歷史點(diǎn)擊記錄比較
       for (int i = 0; i < _list_check.size() - 1; i++{
        
    if (_list_check.get(i).equals(id)) {
         flag_c 
    = false;
        }

       }

       
    // 新點(diǎn)擊操作
       if (flag_c) {
        IdSumPriceNameDTO idSumDTO 
    = new IdSumPriceNameDTO(id, 1, price,_name);
       
    // session中的"allIdSumList"也隨之更新,引用copy
        list_sumId.add(idSumDTO);
       }

       
    // 重復(fù)點(diǎn)擊操作
       else {
         
    // 調(diào)用test_ListCheck方法
         test_ListCheck(list_sumId,id,price,_name);
       }

      }

      
    return list_sumId;
     }



     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       
    throws Exception {
      
    // 商品編號(hào)
      int id = Integer.parseInt(request.getParameter("id"));
      GoodsDAO dao 
    = new GoodsDAO();
      
    int goodsid = dao.findbyId(id).getId();
      String goodsName 
    = dao.findbyId(id).getGoodsName();
      
    float goodsPrice = (float) dao.findbyId(id).getGoodsPrice();
      
    //set進(jìn)idSumDTO 
      IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO();
      idSumDTO.setId(goodsid);
      idSumDTO.setGoodsName(goodsName);
      idSumDTO.setGoodsPrice(goodsPrice);
      
    // idSumDTO中的sum屬性缺省為1
      idSumDTO.setAllPrices(goodsPrice);
      System.out.println(idSumDTO.getAllPrices());
      
      
    // hid做為hashmap中的key
      Integer hid = Integer.valueOf(idSumDTO.getId());
      
      HttpSession sess 
    = request.getSession();
      HashMap hs 
    = (HashMap) sess.getAttribute("shops");

      
    /** *//**
       * 客戶(hù)第一次訪問(wèn)
       
    */

      
    if (hs == null{
       
    //將商品id放入list中
       List list = new ArrayList();
       list.add(hid);
       hs 
    = new HashMap();
       hs.put(hid, idSumDTO);
       
    // jsp顯示
       sess.setAttribute("shop", getList(hs));
       
    // 將hs放到session中,刪除修改用
       sess.setAttribute("shops", hs);
       
    // 將list(商品id)放入session中
       sess.setAttribute("ids_go", list);
       
    // 將商品id,sum,price,name放入idSumDTO_1并置于idSum_list中
       IdSumPriceNameDTO idSumDTO_1 = new IdSumPriceNameDTO(idSumDTO.getId(), idSumDTO
         .getSum(), idSumDTO.getGoodsPrice(),idSumDTO.getGoodsName());
       List idSum_list 
    = new ArrayList();
       idSum_list.add(idSumDTO_1);
       
    // 將idSum_list對(duì)象至于sess中,和updateAction中的"allIdSumList"對(duì)應(yīng)
       sess.setAttribute("allIdSumList", idSum_list);
      }

      
    /** *//**
       * 客戶(hù)第二次以后的訪問(wèn)
       
    */

      
    else {
       List list_check 
    = (List) sess.getAttribute("ids_go");
       list_check.add(hid);
       
    // list_sumId包含id,sum,price,name
        List list_sumId = getCounter_List(list_check, hid, sess, goodsPrice,goodsName);
       
    for (int i = 0; i < list_sumId.size(); i++{
        IdSumPriceNameDTO isp 
    = new IdSumPriceNameDTO();
        
    int a = ((IdSumPriceNameDTO) list_sumId.get(i)).getId();
        isp.setId(a);
        
    int b = ((IdSumPriceNameDTO) list_sumId.get(i)).getSum();
        isp.setSum(b);
        
    float c = ((IdSumPriceNameDTO) list_sumId.get(i)).getGoodsPrice();
        isp.setGoodsPrice(c);
        isp.setAllPrices(c);
        String d  
    =((IdSumPriceNameDTO) list_sumId.get(i)).getGoodsName();
        isp.setGoodsName(d);
        
    //session中的shops也隨之更新,引用copy
        hs.put(a, isp);
        
    //引用賦null
        isp = null;
       }

       
    // jsp顯示
       sess.setAttribute("shop", getList(hs));
      }

      
    //轉(zhuǎn)向buy.jsp
      return mapping.findForward("b");
     }


    }



    UpdateAction:

      
    /** 
      * 修改商品信息
      
    */


    public class UpdateAction extends Action {

     
    //優(yōu)化后的getList方法
     public static List getList(HashMap hs) {
      
    return new ArrayList(hs.values());
     }


     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       
    throws Exception {
      GoodsForm gs 
    = (GoodsForm)form;
      
    int[] ids = gs.getId();
      
    int[] sums = gs.getSum();
      
    float[] goodsPrices = gs.getGoodsPrice();
      String[] goodsName 
    = gs.getGoodsName();
      
    //從session獲得hs
      HashMap hs = (HashMap)request.getSession().getAttribute("shops");
      
    //從session中獲得allIdSumList容器
      List idSum_list = (List)request.getSession().getAttribute("allIdSumList");
      
    //清空上次idSum_list容器中更新后的記錄
      if(idSum_list!=null){
       idSum_list.clear();
      }

      
    for(int i = 0;i<ids.length;i++){
       
    //循環(huán)將 ids[i]和idSumPriceNameDTO put到hs容器中
       IdSumPriceNameDTO idSumPriceNameDTO = new IdSumPriceNameDTO();
       idSumPriceNameDTO.setId(ids[i]);
       idSumPriceNameDTO.setGoodsName(goodsName[i]);
       idSumPriceNameDTO.setGoodsPrice(goodsPrices[i]);
       idSumPriceNameDTO.setSum(sums[i]);
       idSumPriceNameDTO.setAllPrices(goodsPrices[i]);
       
    // session中的"shops"也隨之更新,引用copy
       hs.put(ids[i], idSumPriceNameDTO);
       
    //每次循環(huán)后將idSumPriceNameDTO 的引用設(shè)null
       idSumPriceNameDTO = null;

       
    //idSum_list
       IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO(ids[i],sums[i],goodsPrices[i],goodsName[i]);
       
    if(idSum_list == null){
        idSum_list 
    = new ArrayList();
       }

       
    // session中的"allIdSumList"也隨之更新,引用copy
       idSum_list.add(idSumDTO);
      }

      request.getSession().setAttribute(
    "shop", getList(hs));
      
         
    // 將過(guò)到updateAction中的商品id數(shù)組放入session中對(duì)修改操作完成后用戶(hù)繼續(xù)點(diǎn)擊操作時(shí)和ider數(shù)組記錄比較
         request.getSession().setAttribute("ider", ids);
         
    // 設(shè)置一個(gè)標(biāo)志位,標(biāo)志是經(jīng)過(guò)修改數(shù)量的操作
         String flag = "update";
         request.getSession().setAttribute(
    "flags", flag);
      
    //轉(zhuǎn)向buy.jsp
      return mapping.findForward("b");
     }


    }



    DeleteAction:

      
    /** 
      * 刪除商品信息
      
    */


    public class DeleteAction extends Action {


    //優(yōu)化后的getList方法
     public static List getList(HashMap hs) {
      
    return new ArrayList(hs.values());
     }


     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       
    throws Exception {

      Integer id 
    = Integer.parseInt(request.getParameter("id"));

      
    // 將ids_go中點(diǎn)擊Id的歷史記錄中與頁(yè)面?zhèn)鱽?lái)的id比較,將相同的元素全delete掉
      List list_check = (List) request.getSession().getAttribute("ids_go");
      
    int size = list_check.size();
      
    int h = 0;
      
    for (int i = 0; i < size; i++{
       
    int j = (Integer)list_check.get(h);
       
    if (j == id) {
        
    //session中的"ids_go"也隨之更新,引用copy
        list_check.remove(h);
       }
    else{
        h
    ++;
       }

      }

       
    // remove容器allIdSumList中和id相等的整個(gè)元素,保持delete后繼續(xù)購(gòu)物操作的正確性
      List list = (List) request.getSession().getAttribute("allIdSumList");
      
    for (int i = 0; i < list.size(); i++{
       
    int j = ((IdSumPriceNameDTO) list.get(i)).getId();
       
    if (j == id) {
       
    //session中的"allIdSumList"也隨之更新,引用copy
        list.remove(i);
       }

      }

      
    // 從session中取出購(gòu)物的hashmap容器
      HashMap hashmap = (HashMap) request.getSession().getAttribute("shops");
      
    //session中的shops也隨之更新,引用copy
      hashmap.remove(id);
      
    //jsp顯示
      request.getSession().setAttribute("shop", getList(hashmap));
      
      
    //執(zhí)行了delete操作后,將updateAction中的標(biāo)記flag設(shè)置為null
      
    //delete后,將修改信息的標(biāo)記去除,還原為無(wú)修改操作狀態(tài)
      String flag = null;
      request.getSession().setAttribute(
    "flags", flag);
      
    //轉(zhuǎn)向buy.jsp
      return mapping.findForward("b");
     }


    }



    IdSumPriceNameDTO :

    public class IdSumPriceNameDTO {

     
    private int id;

     
    private int sum = 1;

     
    private float goodsPrice;
     
     
    private float allPrices;
     
     
    private String goodsName;

     
    public IdSumPriceNameDTO() {
      
    super();
     }

     
    //id,sum,goodsPrice,goodsName
     public IdSumPriceNameDTO(int id, int sum, float goodsPrice, String goodsName) {
      
    super();
      
    this.id = id;
      
    this.sum = sum;
      
    this.goodsPrice = goodsPrice;
      
    this.goodsName = goodsName;
     }


     
    public String getGoodsName() {
      
    return goodsName;
     }


     
    public void setGoodsName(String goodsName) {
      
    this.goodsName = goodsName;
     }



     
    public float getAllPrices() {
      
    return allPrices;
     }

     
    //注意javabean中set 只有一個(gè)參數(shù),定義多個(gè)時(shí)到j(luò)sp頁(yè)面會(huì)出現(xiàn)無(wú)法找到getProperty異常
     public void setAllPrices(float goodsPrice) {
      
    this.allPrices = (float)(this.sum * goodsPrice);
     }

     

     
    public float getGoodsPrice() {
      
    return goodsPrice;
     }


     
    public void setGoodsPrice(float goodsPrice) {
      
    this.goodsPrice = goodsPrice;
     }


     
    public int getId() {
      
    return id;
     }


     
    public void setId(int id) {
      
    this.id = id;
     }


     
    public int getSum() {
      
    return sum;
     }


     
    public void setSum(int sum) {
      
    this.sum = sum;
     }


    }



    GoodsForm :

    public class GoodsForm extends ActionForm {

        
    //商品名稱(chēng)數(shù)組
        private String[] goodsName;
        
        
    //商品id數(shù)組
        private int[] id;    
        
        
    //數(shù)量數(shù)組
        private int[] sum;
        
            
    //價(jià)格數(shù)組
        private float[] goodsPrice;
                
        
    public float[] getGoodsPrice() {
            
    return goodsPrice;
        }


        
    public void setGoodsPrice(float[] goodsPrice) {
            
    this.goodsPrice = goodsPrice;
        }


        
    public int[] getId() {
            
    return id;
        }


        
    public void setId(int[] id) {
            
    this.id = id;
        }


        
    public int[] getSum() {
            
    return sum;
        }


        
    public void setSum(int[] sum) {
            
    this.sum = sum;
        }


        
    public String[] getGoodsName() {
            
    return goodsName;
        }


        
    public void setGoodsName(String[] goodsName) {
            
    this.goodsName = goodsName;
        }


        
        
    }



    buy.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding
    ="UTF-8"
    %>
    <%@ taglib uri="WEB-INF/struts-bean.tld" prefix="bean"%>
    <%@ taglib uri="WEB-INF/struts-html.tld" prefix="html"%>
    <%@ taglib uri="WEB-INF/struts-logic.tld" prefix="logic"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    </head>
    <body bgcolor="#CCCCCC">
    <html:form action="/update">
    <html:submit value="update" />
    <table width="302" height="55" border="1">
     
    <tr>
         
    <td width="59">DELETE</td>
      
    <td width="68">NAME</td>
      
    <td width="77">PRICE</td>
      
    <td width="77">NUM</td>
      
    <td width="77">ALLPRICE</td>
     
    </tr>
     
    <logic:iterate id="sh" name="shop">
     
    <tr>
        
    <html:hidden  name="sh"  property="id" />
        
    <html:hidden  name="sh"  property="goodsPrice" />
        
    <html:hidden  name="sh"  property="goodsName" />
        
    <td><html:link  page="/delete.do" paramId="id" paramName="sh" paramProperty="id" >delete</html:link></td>
        
    <td><bean:write name="sh" property="goodsName" /></td>
        
    <td><bean:write name="sh" property="goodsPrice" /></td>
        
    <td><html:text  name="sh"  property="sum" /></td>
        
    <td><bean:write name="sh" property="allPrices" /></td>
     
    </tr>   
     
    </logic:iterate>
    </table>
    </html:form>
    <html:link page="/shop.do">去收銀臺(tái)</html:link><html:link page="/index.do">繼續(xù)購(gòu)物</html:link>

    </body>
    </html:html>


    index.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding
    ="UTF-8"
    %>
    <%@ taglib uri="WEB-INF/struts-bean.tld" prefix="bean"%>
    <%@ taglib uri="WEB-INF/struts-html.tld" prefix="html"%>
    <%@ taglib uri="WEB-INF/struts-logic.tld" prefix="logic"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    </head>
    <body  bgcolor="#CCCCCC">
    <table width="315" border="1">
      
    <tr>
         
    <td colspan="2"><img src="1140438022_min.jpg" width="160" height="120"></td>
         
    <td colspan="2"><img src="1140437663_min.jpg" width="160" height="120"></td>
         
    <td colspan="2"><img src="1140438022_min.jpg" width="160" height="120"></td>
      
    </tr>
      
    <logic:iterate id="list" name="lister">
        
    <tr>
          
    <td><bean:write name="list" property="id" /></td>
          
    <td width="85"><html:link page="/list.do" paramId="id" paramName="list" paramProperty="id" >在線訂購(gòu)</html:link></td>
        
    </tr>
      
    </logic:iterate>
    </table>

    </body>
    </html:html>


    模塊主要是圍繞hashmap容器和list容器編程,并用session會(huì)話保持整個(gè)操作的記錄,其中需要注意的一些問(wèn)題總結(jié)如下:
           
            (1)用戶(hù)沒(méi)有進(jìn)行修改操作時(shí),點(diǎn)擊一件商品后,繼續(xù)購(gòu)物,點(diǎn)擊相同商品時(shí)sum++控制。 

            (2)用戶(hù)沒(méi)有進(jìn)行修改操作時(shí),點(diǎn)擊一件商品后,繼續(xù)購(gòu)物,點(diǎn)擊新商品時(shí)sum=1控制。

            (3)用戶(hù)沒(méi)有進(jìn)行修改操作時(shí),delete某件商品信息清單時(shí),注意將allIdSumList容器(在session范圍內(nèi))中元素的id屬性對(duì)應(yīng)的整個(gè)元素刪除操作,并將“ids_go”(session范圍內(nèi))中和此次delete操作帶的商品id比較,將相同的id在“ids_go”(list容器)中全部刪除,保證用戶(hù)成功執(zhí)行delete操作,返回繼續(xù)購(gòu)物時(shí)還原為初始狀態(tài)。

            (4)用戶(hù)進(jìn)行修改操作時(shí),將allIdSumList容器中的元素屬性sum和allprices保持同步更新,并設(shè)置一個(gè)標(biāo)志位flag="update",標(biāo)志是經(jīng)過(guò)修改數(shù)量的操作,同時(shí)當(dāng)修改操作后繼續(xù)在進(jìn)行修改操作時(shí)將idSum_list中的數(shù)據(jù)clear(),保證下次修改時(shí)是全新的數(shù)據(jù),主要原因是考慮到list對(duì)于重復(fù)的元素沒(méi)有覆蓋功能。

            (5)用戶(hù)進(jìn)行刪除操作后,將updateAction中的標(biāo)記flag設(shè)置為null(flag用來(lái)標(biāo)記用戶(hù)是否有過(guò)update操作,session范圍內(nèi)有效)


    posted on 2007-05-24 21:14 cheng 閱讀(2023) 評(píng)論(16)  編輯  收藏 所屬分類(lèi): StrutsSpringHibernate

    FeedBack:
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-25 09:31 | Web 2.0 技術(shù)資源
    頭都大了~~
    // 將hashmap中value轉(zhuǎn)到list中
    public static List getList(HashMap hs) {
    List list = new ArrayList();
    Iterator itr = hs.keySet().iterator();
    while (itr.hasNext()) {
    list.add(hs.get(itr.next()));
    }
    return list;
    }

    return new ArrayList( hs.keySet() );
    就可以了撒,多麻煩的。  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-25 09:41 | cheng
    先謝了~:P
    return new ArrayList( hs.keySet() );其返回的list容器中存儲(chǔ)的hs中的key值的集合啊,不是value哦~
      回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-25 09:59 | Web 2.0 技術(shù)資源
    看錯(cuò)意圖了~ 這樣就OK了~
    return new ArrayList( hs.values() );  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-25 10:20 | cheng
    恩,謝了哦。
    代碼優(yōu)化多了~!:P  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-25 10:21 | Web 2.0 技術(shù)資源
    你應(yīng)該對(duì) collection 框架還不夠熟悉~ 加強(qiáng)下就OK了~  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-25 10:22 | cheng
    恩~好的!謝謝!看來(lái)得好好補(bǔ)下集合類(lèi)的一些用法了~希望以后能夠多多交流學(xué)習(xí)哦。  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-25 17:01 | 龍卷風(fēng)驛站
    action直接調(diào)用dao ?

    服了  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart[未登錄](méi)
    2007-05-25 19:16 | cheng
    樓上的朋友如果是考慮到代碼應(yīng)該分離開(kāi)來(lái)的話,可以理解~~~
    有什么好的修改意見(jiàn)可以提出來(lái)`一起討論下~!  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-25 20:54 | Web 2.0 技術(shù)資源
    做個(gè)服務(wù)層吧~
    把業(yè)務(wù)邏輯集中到 Service

      回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-26 01:16 | 三告習(xí)習(xí)
    還可以試試 commons-collections  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-05-29 10:47 | wuchuanzi
    嘻嘻,不錯(cuò)的案例,早看到就好了,讓學(xué)生們看看  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-10-15 02:41 | iverson
    我想請(qǐng)問(wèn)我是用Vector 做的,可以嗎?
    好象有問(wèn)題!!
    盼解答  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-10-15 03:18 | iverson
    怎么沒(méi)有GoodsFrom啊?  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-10-17 17:48 | cheng
    不好意思,最近在出差,有些忙,才看到。

    list容器,主要考慮到list是有序并可以重復(fù)的特點(diǎn),用其可以跟蹤用戶(hù)多次點(diǎn)擊相同商品的操作,并對(duì)商品的數(shù)量進(jìn)行相應(yīng)的增加。


    至于Vector容器,只要能實(shí)現(xiàn)你的具體的業(yè)務(wù)邏輯的都是可以的,主要看你的需求是怎么樣的了~~~  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-11-12 21:14 | gbk2312
    能順便將GoodsForm里和建表的SQL語(yǔ)句貼出來(lái)么?謝謝  回復(fù)  更多評(píng)論
      
    # re: Struts+Hibernate實(shí)現(xiàn)shopcart
    2007-11-17 22:48 | 任逍遙
    我支持你.我最?lèi)?ài)源碼了.  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 国产成人综合亚洲亚洲国产第一页| 国产免费AV片在线观看播放| 成人免费视频小说| 亚洲国产精品网站久久| 57pao一国产成视频永久免费 | 亚洲国产第一页www| a毛片久久免费观看| 伊人久久大香线蕉亚洲五月天| 一级毛片免费在线观看网站| 亚洲色一色噜一噜噜噜| 又黄又大的激情视频在线观看免费视频社区在线 | 亚洲 小说区 图片区 都市| 看免费毛片天天看| 亚洲va中文字幕无码| 成人a毛片视频免费看| 亚洲精品国产日韩无码AV永久免费网 | 国产日韩在线视频免费播放| 中文亚洲AV片在线观看不卡| 九九视频高清视频免费观看| 亚洲第一区在线观看| 成人国产网站v片免费观看| 国产自偷亚洲精品页65页| 中文字幕版免费电影网站| 久久久久久a亚洲欧洲aⅴ| 久久久国产精品福利免费| 亚洲ⅴ国产v天堂a无码二区| 最近中文字幕mv免费高清视频8| 亚洲色大成网站www永久| 性短视频在线观看免费不卡流畅| 久久亚洲最大成人网4438| 精品国产一区二区三区免费看| 色屁屁www影院免费观看视频| 亚洲精品亚洲人成在线观看下载| 精品乱子伦一区二区三区高清免费播放| 亚洲日韩中文无码久久| 在线观看免费中文视频| 亚洲中文字幕无码av在线| 成人免费视频一区二区三区| 美女视频黄频a免费大全视频| 中文字幕亚洲日本岛国片| 久久精品视频免费看|