首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Web 實作購物車功能完整教學

     編輯:Java 相關知識

專案背景與目標

為了方便日後複習與記錄成長,本文詳細記錄一個基於 Java Web 的購物車功能實作過程。核心需求:使用者可瀏覽商品、點擊加入購物車、系統自動處理重複商品數量累加,並將購物車資料存放於 Session 中。

資料庫與實體類設計

首先建立商品表 goods,對應實體類 Goods(id、name、price 等欄位)。購物車項目對應 GoodsItem,包裝商品物件與購買數量。

核心 Servlet 實作:PutCarServlet

處理「加入購物車」請求的完整邏輯如下:

public class PutCarServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        String id = request.getParameter("goodsID"); // 取得商品編號

        // 1. 從 DB 取得商品完整資訊
        GoodsDAO dao = new GoodsDAO();
        Goods goods = dao.getGoodsByID(id);

        // 2. 從 Session 取得購物車
        Map cart = (Map) request.getSession().getAttribute("cart");
        if (cart == null) {
            cart = new HashMap<>(); // 首次建立購物車
        }

        // 3. 判斷商品是否已在購物車
        if (cart.containsKey(id)) {
            // 已存在:數量 +1
            GoodsItem item = cart.get(id);
            item.setCount(item.getCount() + 1);
        } else {
            // 新商品:建立項目,數量設為 1
            cart.put(id, new GoodsItem(goods, 1));
        }

        // 4. 更新 Session 並導回首頁繼續購物
        request.getSession().setAttribute("cart", cart);
        response.sendRedirect("index.jsp");
    }
    // doGet 直接轉交 doPost
}

關鍵設計點解析

  • Session 存儲:購物車以 Map 形式放入 Session,Key 為商品 ID,Value 為包含商品資訊與數量的 GoodsItem,查找與更新均為 O(1)。
  • 重複商品處理:利用 containsKey 判斷,存在則累加數量,否則新增,符合真實購物邏輯。
  • 導向模式:處理完成後使用 sendRedirect 避免表單重複提交,回到商品列表頁。

前端串接示意

商品列表頁每個商品提供「加入購物車」連結或表單,指向 PutCarServlet?goodsID=xxx,點擊即觸發後端邏輯。

執行結果與驗證

啟動伺服器,瀏覽商品頁點擊加入,可在 Session 中看到購物車資料結構正確,重複點擊同一商品數量正確遞增,功能完整可用。

總結

本範例展示了 Java Web 經典購物車的核心實作:Servlet 處理請求、DAO 存取資料、Session 管理狀態、Map 高效存儲。後續可擴充:購物車頁面顯示、修改數量、刪除項目、結帳下單等流程。程式碼結構清晰,適合初學者參考與延伸。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved