日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图书商城:购物车模块

發(fā)布時間:2025/4/16 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图书商城:购物车模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

購物車存儲

  • 保存在session中
  • 保存在cookie中
  • 保存在數(shù)據(jù)庫中

1、創(chuàng)建相關(guān)類

購物車的結(jié)構(gòu):

  • CartItem:購物車條目,包含圖書和數(shù)量
  • Cart:購物車,包含一個Map
/*** 購物車類*/ public class Cart {private Map<String,CartItem> map = new LinkedHashMap<String,CartItem>();/*** 計算合計* @return*/public double getTotal() {// 合計=所有條目的小計之和BigDecimal total = new BigDecimal("0");for(CartItem cartItem : map.values()) {BigDecimal subtotal = new BigDecimal("" + cartItem.getSubtotal());total = total.add(subtotal);}return total.doubleValue();}/*** 添加條目到車中* @param cartItem*/public void add(CartItem cartItem) {if(map.containsKey(cartItem.getBook().getBid())) {//判斷原來車中是否存在該條目CartItem _cartItem = map.get(cartItem.getBook().getBid());//返回原條目_cartItem.setCount(_cartItem.getCount() + cartItem.getCount());//設(shè)置老條目的數(shù)量為,其自己數(shù)量+新條目的數(shù)量map.put(cartItem.getBook().getBid(), _cartItem);} else {map.put(cartItem.getBook().getBid(), cartItem);}}/*** 清空所有條目*/public void clear() {map.clear();}/*** 刪除指定條目* @param bid*/public void delete(String bid) {map.remove(bid);}/*** 獲取所有條目* @return*/public Collection<CartItem> getCartItems() {return map.values();} } /*** 購物車條目類* */ public class CartItem {private Book book;// 商品private int count;// 數(shù)量/*** 小計方法* @return* 處理了二進制運算誤差問題*/public double getSubtotal() {//小計方法,但它沒有對應的成員!BigDecimal d1 = new BigDecimal(book.getPrice() + "");BigDecimal d2 = new BigDecimal(count + "");return d1.multiply(d2).doubleValue();}public Book getBook() {return book;}public void setBook(Book book) {this.book = book;}public int getCount() {return count;}public void setCount(int count) {this.count = count;} }

2、添加購物車條目

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>購物車列表</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><meta http-equiv="content-type" content="text/html;charset=utf-8"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> <style type="text/css">* {font-size: 11pt;}div {margin:20px;border: solid 2px gray;width: 150px;height: 150px;text-align: center;}li {margin: 10px;}#buy {background: url(<c:url value='/images/all.png'/>) no-repeat;display: inline-block;background-position: 0 -902px;margin-left: 30px;height: 36px;width: 146px;}#buy:HOVER {background: url(<c:url value='/images/all.png'/>) no-repeat;display: inline-block;background-position: 0 -938px;margin-left: 30px;height: 36px;width: 146px;} </style></head><body> <h1>購物車</h1> <c:choose><%-- 如果沒有車,或車的內(nèi)容集合為0長 --%><c:when test="${empty sessionScope.cart or fn:length(sessionScope.cart.cartItems) eq 0}"><img src="<c:url value='/images/cart.png'/>" width="300"/></c:when><c:otherwise> <table border="1" width="100%" cellspacing="0" background="black"><tr><td colspan="7" align="right" style="font-size: 15pt; font-weight: 900"><a href="<c:url value='/CartServlet?method=clear'/>">清空購物車</a></td></tr><tr><th>圖片</th><th>書名</th><th>作者</th><th>單價</th><th>數(shù)量</th><th>小計</th><th>操作</th></tr><c:forEach items="${sessionScope.cart.cartItems }" var="cartItem"><tr><td><div><img src="<c:url value='/${cartItem.book.image }'/>"/></div></td><td>${cartItem.book.bname }</td><td>${cartItem.book.author }</td><td>${cartItem.book.price }元</td><td>${cartItem.count }</td><td>${cartItem.subtotal }元</td><td><a href="<c:url value='/CartServlet?method=delete&bid=${cartItem.book.bid }'/>">刪除</a></td></tr> </c:forEach><tr><td colspan="7" align="right" style="font-size: 15pt; font-weight: 900">合計:${sessionScope.cart.total }元</td></tr><tr><td colspan="7" align="right" style="font-size: 15pt; font-weight: 900"><a id="buy" href="<c:url value='/OrderServlet?method=add'/>"></a></td></tr> </table></c:otherwise> </c:choose></body> </html> public class CartServlet extends BaseServlet {/*** 添加購物條目* @param request* @param response* @return* @throws ServletException* @throws IOException*/public String add(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/** 1. 得到車* 2. 得到條目(得到圖書和數(shù)量)* 3. 把條目添加到車中*//** 1. 得到車*/Cart cart = (Cart)request.getSession().getAttribute("cart");/** 表單傳遞的只有bid和數(shù)量* 2. 得到條目* > 得到圖書和數(shù)量* > 先得到圖書的bid,然后我們需要通過bid查詢數(shù)據(jù)庫得到Book* > 數(shù)量表單中有*/String bid = request.getParameter("bid");Book book = new BookService().load(bid);int count = Integer.parseInt(request.getParameter("count"));CartItem cartItem = new CartItem();cartItem.setBook(book);cartItem.setCount(count);/** 3. 把條目添加到車中*/cart.add(cartItem);return "f:/jsps/cart/list.jsp";}/*** 清空購物條目* @param request* @param response* @return* @throws ServletException* @throws IOException*/public String clear(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/*** 1. 得到車* 2. 設(shè)置車的clear*/Cart cart = (Cart)request.getSession().getAttribute("cart");cart.clear();return "f:/jsps/cart/list.jsp";}/*** 刪除購物條目* @param request* @param response* @return* @throws ServletException* @throws IOException*/public String delete(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/** 1. 得到車* 2. 得到要刪除的bid*/Cart cart = (Cart)request.getSession().getAttribute("cart");String bid = request.getParameter("bid");cart.delete(bid);return "f:/jsps/cart/list.jsp";} }

3、清空條目

4、刪除購物車條目

5、我的購物車

top.jsp中存在一個鏈接:我的購物車

我的購物車直接訪問/jsps/cart/list.jsp,它會顯示session中車的所有條目

總結(jié)

以上是生活随笔為你收集整理的图书商城:购物车模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。