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

易買網專案實戰總結:購物車、最近瀏覽、Cookie 管理與結算流程完整解析

     編輯:Java 綜合教學

專案背景

易買網為 Java Web 電商練習專案,採用 Servlet + JSP + JDBC + MySQL 架構,本文梳理核心功能模組代碼與設計思路。

一、最近瀏覽記錄(Cookie 實現)

核心邏輯

  • 商品 ID 以 _ 分隔存入 Cookie proHistory,最多保留 3 條。
  • 新訪問商品移至首位,已存在則移除舊位置再加首位。
  • 超過上限移除尾部。

關鍵代碼

private String getHistory(HttpServletRequest request, String id) {
    Cookie[] cookies = request.getCookies();
    String proHistory = null;
    if (cookies != null) {
        for (Cookie c : cookies) if ("proHistory".equals(c.getName())) { proHistory = c.getValue(); break; }
    }
    if (proHistory == null) return id;

    LinkedList list = new LinkedList<>(Arrays.asList(proHistory.split("_")));
    if (list.contains(id)) list.remove(id);
    else if (list.size() >= 3) list.removeLast();
    list.addFirst(id);

    StringBuilder sb = new StringBuilder();
    for (String item : list) sb.append(item).append("_");
    return sb.deleteCharAt(sb.length() - 1).toString();
}

前端展示

<c:forEach items="${slist}" var="item">
  <img src="<%=path%>/images/product/${item.fileName}" />
  <a href="...">${item.name}</a>
</c:forEach>

二、購物車核心操作

資料結構

class Cart { Map map = new HashMap<>(); }
class CartItem { Product product; int quantity; }

加入購物車

Cart cart = (Cart) session.getAttribute("cart");
if (cart == null) cart = new Cart();
cart.getMap().put(product.getId(), new CartItem(product, 1));
session.setAttribute("cart", cart);

移除商品

cart.getMap().remove(shid);

前端購物車列表

<c:forEach items="${cart.map}" var="item">
  <td><img src="..."/> ${item.value.product.name}</td>
  <td>¥${item.value.product.price}</td>
  <td><input name="number" value="${item.value.quantity}"/></td>
  <td><a href="?opr=deleteShop&shid=${item.value.product.id}">刪除</a></td>
</c:forEach>

三、結單流程

  1. 檢查登入 → 未登入導向登入頁。
  2. 讀取用戶預設收貨地址 → address.jsp 確認/修改。
  3. 提交訂單 → OrderDao.add(cart, user) 寫入訂單表與明細表(事務)。
  4. 成功 → 清空 Session 中購物車 → 跳轉成功頁。

四、待優化點

  • 購物車數量修改無 AJAX 即時計算總價。
  • Cookie 存儲商品 ID 安全性低,建議改用 Redis + Token。
  • 訂單寫入缺乏樂觀鎖/分佈式鎖防超賣。
  • 代碼耦合度高,Service/DAO 未分層,建議引入 Spring 管理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved