易買網為 Java Web 電商練習專案,採用 Servlet + JSP + JDBC + MySQL 架構,本文梳理核心功能模組代碼與設計思路。
_ 分隔存入 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>
address.jsp 確認/修改。OrderDao.add(cart, user) 寫入訂單表與明細表(事務)。