天天看點

jsp中購物車的實作思路

 1.建立使用者user實體類,該類中有cart購物車屬性,并包含一些列有關購物車的方法,如getCart(),remove(),buy()等

2.購物車被建立之後就一直被放在user對象中儲存在session中,購物車就是一個Map集合,鍵為商品id,值為商品數量,

  此處注意Map集合的鍵類型為Object,如果商品id為int類型,需轉成String類型,因為int不是Object類型,Integer才是。

3.如何擷取到購物車中的所有商品????

  使用Map集合的keySet()方法擷取到Map集合中的所有鍵值,該方法傳回的是所有鍵值組成的Set集合,然後周遊該set集合,

  依次拿出各個商品的id值,并可通過Map集合的get("key")方法擷取到各個商品id對應的商品數量,同時在周遊set集合的時候,

  調用根據id查詢商品資訊的方法擷取到商品的除id和數量外的其他資訊,然後就可在購物車中顯示,包括總價格資訊

-------這裡要注意:在商品的實體類中不包含購買數量屬性,該屬性是業務處理過程中生成的屬性,習慣上使用vo對象進行處理,

       目前我的實作比較簡單,就是在商品類中添加了數量屬性,但該屬性在資料庫并無對應字段,隻是用來封裝進實體類對象之中,

       如此處理就有一個問題:根據商品id查詢資料庫擷取的商品對象中并無數量屬性,如果在調用查詢方法之前将商品數量設定進

       商品對象中,在調用了查詢方法之後商品對象就會被更新,數量資訊會拿不到,是以必須在調用了産訊方法之後在設定數量資訊

       到對象中。。。。

4.在建立資料庫時注意:訂單表和訂單詳情表   -------  兩個表的id字段名一緻,并且均不是主鍵,也不設定自增

  訂單詳情表用來儲存使用者訂單的具體資訊,如果某個使用者購買了多件商品,那麼在點選結帳按鈕時循環周遊set集合,依次将資訊添加進

  商品詳情表中,這樣在該表中使用者購買了幾件商品就會産生幾條記錄,并且這些記錄的詳細訂單oid值是一樣的,都對應訂單表的某個id值,

  而訂單表的id值不是重複的,此處在往訂單詳情表中添加資訊時,首先擷取到訂單詳情表的最大id值,然後+1,即為目前訂單的id,在調用

  完添加方法之後,再調用查詢最大id的方法擷取到最大id值(此時不再+1),該值又作為訂單表的id進行添加,如此一來兩個表之間的id值就 變得一緻