java網(wǎng)上圖書商城(5)購物車模塊2
先看看效果:
結(jié)算
list.jsp
<a href="javascript:jiesuan();" id="jiesuan" class="jiesuan"></a>
<form id="jieSuanForm" action="<c:url value='/CartItemServlet'/>" method="post"> <input type="hidden" name="cartItemIds" id="cartItemIds"/> <input type="hidden" name="total" id="hiddenTotal"/> <input type="hidden" name="method" value="loadCartItems"/> </form> function jiesuan() { // 1. 獲取所有被選擇的條目的id,放到數(shù)組中 var cartItemIdArray = new Array(); $(":checkbox[name=checkboxBtn][checked=true]").each(function() { cartItemIdArray.push($(this).val());//把復(fù)選框的值添加到數(shù)組中 }); // 2. 把數(shù)組的值toString(),然后賦給表單的cartItemIds這個(gè)hidden $("#cartItemIds").val(cartItemIdArray.toString()); // 把總計(jì)的值,也保存到表單中 $("#hiddenTotal").val($("#total").text()); // 3. 提交這個(gè)表單 $("#jieSuanForm").submit(); }
servlet
public String loadCartItems(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 獲取cartItemIds參數(shù) */ String cartItemIds = req.getParameter("cartItemIds"); double total = Double.parseDouble(req.getParameter("total")); /* * 2. 通過service得到List<CartItem> */ List<CartItem> cartItemList = cartItemService.loadCartItems(cartItemIds); /* * 3. 保存,然后轉(zhuǎn)發(fā)到/cart/showitem.jsp */ req.setAttribute("cartItemList", cartItemList); req.setAttribute("total", total); req.setAttribute("cartItemIds", cartItemIds); return "f:/jsps/cart/showitem.jsp"; }
Dao
加載多個(gè)CartItem
public List<CartItem> loadCartItems(String cartItemIds) throws SQLException { /* * 1. 把cartItemIds轉(zhuǎn)換成數(shù)組 */ Object[] cartItemIdArray = cartItemIds.split(","); /* * 2. 生成wehre子句 */ String whereSql = toWhereSql(cartItemIdArray.length); /* * 3. 生成sql語句 */ String sql = "select * from t_cartitem c, t_book b where c.bid=b.bid and " + whereSql; /* * 4. 執(zhí)行sql,返回List<CartItem> */ return toCartItemList(qr.query(sql, new MapListHandler(), cartItemIdArray)); }
showitem.jsp
<c:choose> <c:when test="${empty cartItemList }">嘻嘻~</c:when> <c:otherwise> <form id="form1" action="<c:url value='/OrderServlet'/>" method="post"> <input type="hidden" name="cartItemIds" value="${cartItemIds }"/> <input type="hidden" name="method" value="createOrder"/> <table width="95%" align="center" cellpadding="0" cellspacing="0"> <tr bgcolor="#efeae5"> <td width="400px" colspan="5"><span style="font-weight: 900;">生成訂單</span></td> </tr> <tr align="center"> <td width="10%"> </td> <td width="50%">圖書名稱</td> <td>單價(jià)</td> <td>數(shù)量</td> <td>小計(jì)</td> </tr> <c:forEach items="${cartItemList }" var="cartItem"> <tr align="center"> <td align="right"> <a class="linkImage" href="<c:url value='/jsps/book/desc.jsp'/>"><img border="0" width="54" align="top" src="<c:url value='/${cartItem.book.image_b }'/>"/></a> </td> <td align="left"> <a href="<c:url value='/jsps/book/desc.jsp'/>"><span>${cartItem.book.bname }</span></a> </td> <td>¥${cartItem.book.currPrice }</td> <td>${cartItem.quantity }</td> <td> <span class="price_n">¥<span class="subtotal">${cartItem.subtotal }</span></span> </td> </tr> </c:forEach> <tr> <td colspan="6" align="right"> <span>總計(jì):</span><span class="price_t">¥<span id="total">${total }</span></span> </td> </tr> <tr> <td colspan="5" bgcolor="#efeae5"><span style="font-weight: 900">收貨地址</span></td> </tr> <tr> <td colspan="6"> <input id="addr" type="text" name="address" value="北京市 昌平區(qū) 西三旗 金燕龍辦公樓1層 傳智播客 張三爺"/> </td> </tr> <tr> <td style="border-top-width: 4px;" colspan="5" align="right"> <a id="linkSubmit" href="javascript:$('#form1').submit();">提交訂單</a> </td> </tr> </table> </form> </c:otherwise> </c:choose>
相關(guān)文章
Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解
這篇文章主要介紹了Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解,synchronzied既能夠保障可見性,又能保證原子性,而volatile只能保證可見性,無法保證原子性,volatile不需要加鎖,比synchronized更輕量級,不會(huì)阻塞線程,需要的朋友可以參考下2024-01-01Jenkin郵件收發(fā)實(shí)現(xiàn)原理及過程詳解
這篇文章主要介紹了Jenkin郵件收發(fā)實(shí)現(xiàn)原理及過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09對比Java中的Comparable排序接口和Comparator比較器接口
Comparable和Comparator接口都可用作普通意義上對象間的比大小,但兩個(gè)接口在實(shí)例化方面的用法不盡相同,接下來我們就來詳細(xì)對比Java中的Comparable排序接口和Comparator比較器接口2016-05-05Java Hibernate使用SessionFactory創(chuàng)建Session案例詳解
這篇文章主要介紹了Java Hibernate使用SessionFactory創(chuàng)建Session案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08java數(shù)據(jù)結(jié)構(gòu)之樹基本概念解析及代碼示例
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)之樹基本概念解析及代碼示例,介紹了樹的定義,基本術(shù)語,主要操作及實(shí)現(xiàn)等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可了解下。2017-11-11mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法
本文主要介紹了mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法,這個(gè)錯(cuò)誤一般發(fā)生在mysql 5.7以及 5.7以上的版本中,本文就來介紹一下兩種解決方法,感興趣的可以了解一下2023-09-09