posts - 188,comments - 176,trackbacks - 0

           

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

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

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

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

          模塊對(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頁面上的商品數(shù)量修改的業(yè)務(wù)邏輯處理)
                                               DeleteAction (對(duì)buy.jsp頁面上的商品列表信息的業(yè)務(wù)邏輯處理)

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

          模塊主要Action類如下:

           /** 
            * 陳列商品
            
          */


          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)買信息
            
          */


          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)擊過的商品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)修改過商品的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)擊沒有被修改數(shù)量過的商品
             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");

            
          /** *//**
             * 客戶第一次訪問
             
          */

            
          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);
            }

            
          /** *//**
             * 客戶第二次以后的訪問
             
          */

            
          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));
            
               
          // 將過到updateAction中的商品id數(shù)組放入session中對(duì)修改操作完成后用戶繼續(xù)點(diǎn)擊操作時(shí)和ider數(shù)組記錄比較
               request.getSession().setAttribute("ider", ids);
               
          // 設(shè)置一個(gè)標(biāo)志位,標(biāo)志是經(jīng)過修改數(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的歷史記錄中與頁面?zhèn)鱽淼膇d比較,將相同的元素全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)記去除,還原為無修改操作狀態(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頁面會(huì)出現(xiàn)無法找到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 {

              
          //商品名稱數(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è)操作的記錄,其中需要注意的一些問題總結(jié)如下:
                 
                  (1)用戶沒有進(jìn)行修改操作時(shí),點(diǎn)擊一件商品后,繼續(xù)購(gòu)物,點(diǎn)擊相同商品時(shí)sum++控制。 

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

                  (3)用戶沒有進(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容器)中全部刪除,保證用戶成功執(zhí)行delete操作,返回繼續(xù)購(gòu)物時(shí)還原為初始狀態(tài)。

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

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


          posted on 2007-05-24 21:14 cheng 閱讀(2031) 評(píng)論(16)  編輯  收藏 所屬分類: 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
          恩~好的!謝謝!看來得好好補(bǔ)下集合類的一些用法了~希望以后能夠多多交流學(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[未登錄]
          2007-05-25 19:16 | cheng
          樓上的朋友如果是考慮到代碼應(yīng)該分離開來的話,可以理解~~~
          有什么好的修改意見可以提出來`一起討論下~!  回復(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)問我是用Vector 做的,可以嗎?
          好象有問題!!
          盼解答  回復(fù)  更多評(píng)論
            
          # re: Struts+Hibernate實(shí)現(xiàn)shopcart
          2007-10-15 03:18 | iverson
          怎么沒有GoodsFrom啊?  回復(fù)  更多評(píng)論
            
          # re: Struts+Hibernate實(shí)現(xiàn)shopcart
          2007-10-17 17:48 | cheng
          不好意思,最近在出差,有些忙,才看到。

          list容器,主要考慮到list是有序并可以重復(fù)的特點(diǎn),用其可以跟蹤用戶多次點(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語句貼出來么?謝謝  回復(fù)  更多評(píng)論
            
          # re: Struts+Hibernate實(shí)現(xiàn)shopcart
          2007-11-17 22:48 | 任逍遙
          我支持你.我最愛源碼了.  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 合江县| 彭水| 亚东县| 泰顺县| 台州市| 南充市| 临泉县| 清新县| 博客| 牙克石市| 浮山县| 崇义县| 济宁市| 招远市| 库伦旗| 漠河县| 连江县| 平阳县| 河间市| 伊宁县| 兴海县| 揭东县| 项城市| 瑞金市| 额尔古纳市| 方正县| 密云县| 江津市| 常熟市| 太白县| 汾西县| 三穗县| 临汾市| 大冶市| 西宁市| 吉林省| 确山县| 汤阴县| 宾川县| 德昌县| 石泉县|