บทความนี้แบ่งปันรหัสเฉพาะของโมดูลตะกร้าสินค้าสำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
ไม่ใช่เซสชันหรือคุกกี้ แต่เป็นตาราง
> เพิ่มรายการช้อปปิ้ง
> แก้ไขจำนวนรายการช้อปปิ้ง
> ลบรายการ
> การลบแบทช์ของรายการ
> ตะกร้าสินค้าของฉันนั่นคือรายการสอบถามโดยผู้ใช้
> สอบถามรายการที่ตรวจสอบ
1. ตารางข้อมูล
การคัดลอกรหัสมีดังนี้: แทรกลงใน `t_cartitem` (` cartItemid`, `ปริมาณ ',` การเสนอราคา', `uid`,` ordy by ') ค่า ('B8939FC55131469CAB11E3924D40185B', 1, 'CE01F15D435A4C51B0AD8202A318DCA7', 'XXX', 11);
2. คาร์ทเทม
คลาสสาธารณะ cartitem {สตริงส่วนตัว cartitemid; // หลักคีย์หลักปริมาณ int ปริมาณ; // ปริมาณหนังสือส่วนตัวหนังสือ; // หนังสือที่สอดคล้องกับผู้ใช้ส่วนตัวผู้ใช้ผู้ใช้; // ผู้ใช้ที่ผู้ใช้ // เพิ่มวิธีการย่อยสองครั้ง bigdecimal (book.getCurrPrice () + ""); bigdecimal b2 = ใหม่ bigdecimal (ปริมาณ + ""); bigdecimal b3 = b1.multiply (b2); ส่งคืน b3.doublevalue (); } สตริงสาธารณะ getCartItemId () {return cartItemId; } โมฆะสาธารณะ setCartItemId (สตริง cartItemId) {this.cartItemId = cartItemId; } public int getQuantity () {ปริมาณคืน; } โมฆะสาธารณะ setquantity (ปริมาณ int) {this.quantity = ปริมาณ; } หนังสือสาธารณะ getBook () {หนังสือคืน; } โมฆะสาธารณะ setbook (หนังสือหนังสือ) {this.book = book; } ผู้ใช้สาธารณะ getUser () {return user; } โมฆะสาธารณะ setUser (ผู้ใช้ผู้ใช้) {this.user = ผู้ใช้; -เคล็ดลับ: จะไม่มีข้อผิดพลาดในการปัดเศษ bigdecimal ใน java
// เพิ่มวิธีย่อยวิธีการสาธารณะ double getSubtotal () {/** จะไม่มีข้อผิดพลาดเมื่อใช้ bigdecimal* ต้องใช้สตริงประเภทตัวสร้างที่จะใช้*/ bigdecimal b1 = ใหม่ bigdecimal (book.getcurrprice () + ""); bigdecimal b2 = ใหม่ bigdecimal (ปริมาณ + ""); bigdecimal b3 = b1.multiply (b2); ส่งคืน b3.doublevalue ();}3. ตรวจสอบรายการตะกร้าสินค้าผ่านผู้ใช้
แต่ละรายการในรายการตะกร้าสินค้าของฉันจำเป็นต้องแสดงราคารายการของสมุดรูปภาพซึ่งหมายความว่าจำเป็นต้องมีหลายตาราง
รายการสาธารณะ <CartItem> findByUser (String uid) พ่น sqlexception {string sql = "select * จาก t_cartitem c, t_book b โดยที่ c.bid = b.bid และ uid =? สั่งโดย c.orderby"; รายการ <map <string, object >> maplist = qr.Query (SQL, ใหม่ maplisthandler (), uid); Return TocartItemList (maplist);}4. เพิ่มรายการตะกร้าสินค้า ----- เพิ่ม
JSP
<div> <form id = "form1" action = "<c: url value = '/cartItemServlet' //>" method = "post"> <อินพุต type = "hidden" name = "method" value = "เพิ่ม"/> <input type = "hidden" name = "bid" value = "$ {book.bid}" value = "1"/> </form> <a id = "btn" href = "JavaScript: $ ('#form1'). submit ();"> </a> </div>CartItemServlet
การเพิ่มสตริงสาธารณะ (httpservletrequest req, httpservletresponse resp) พ่น servletexception, ioexception { / * * 1. ห่อหุ้มข้อมูลฟอร์มไปยัง cartItem (การเสนอราคา, ปริมาณ) * / แผนที่ = req.getParameterMap (); cartItem cartItem = commonutils.tobean (แผนที่, cartitem.class); หนังสือหนังสือ = Commonutils.tobean (แผนที่, book.class); ผู้ใช้ผู้ใช้ = (ผู้ใช้) req.getSession (). getAttribute ("sessionUser"); cartitem.setbook (หนังสือ); CartItem.SetUser (ผู้ใช้); CartItemService.add (CartItem); return mycart (req, resp);}CartItemService
โมฆะสาธารณะเพิ่ม (cartItem cartItem) {ลอง { /** 1 ใช้ UID และประมูลเพื่อสอบถามว่ารายการนี้มีอยู่ในฐานข้อมูล* / cartItem _CartItem = cartItemDao.FindByUidandBid (cartItem.getUser () if (_CartItem == null) {// หากไม่มีรายการดังกล่าวเพิ่มรายการ cartItem.SetCartItemId (commonutils.uuid ()); CartItemdao.addcartitem (CartItem); } else {// หากมีรายการนี้ให้แก้ไขจำนวน // ใช้ปริมาณดั้งเดิมและจำนวนรายการใหม่ที่จะใช้เป็นปริมาณ int ปริมาณใหม่ = cartItem.getQuantity () + _cartitem.getQuantity (); // แก้ไขปริมาณของรายการเก่านี้ cartItemdao.UpdateQuantity (_CartItem.getCartItemId (), ปริมาณ); }} catch (exception e) {โยน runtimeException ใหม่ (e); -Cartitemdao
โมฆะสาธารณะ addCartItem (cartItem cartItem) พ่น sqlexception {string sql = "แทรกลงใน t_cartitem (cartItemId, ปริมาณ, การเสนอราคา, uid)" + "ค่า (?,?,?)"; Object [] params = {cartItem.getCartItEmid (), cartItem.getQuantity (), cartItem.getBid (), cartItem.getUser (). getUid ()}; qr.update (sql, params);}5. หน้าโมดูลตะกร้าสินค้า JavaScript ---- ตรวจสอบ
คำนวณยอดรวม
เพิ่มเหตุการณ์คลิกเพื่อเลือกทั้งหมด
เพิ่มเหตุการณ์คลิกไปยังช่องทำเครื่องหมายสำหรับทุกรายการ
เพิ่มเหตุการณ์คลิกไปที่เครื่องหมายลบ
เพิ่มเหตุการณ์คลิกไปที่เครื่องหมายบวก
การลบแบทช์
list.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> uri = "http://java.sun.com/jsp/jstl/functions"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, คำหลัก type = "text/css" href = "styles.css">-> <script src = "<c: url value = '/jQuery/jQuery-1.5.1.js'/>"> </สคริปต์> <สคริปต์ src = "<c: url value = '/js/round.js' href = "<c: url value = '/jsps/css/cart/list.css' ///>"> <script type = "text/javascript"> $ (function () {showtotal (); // คำนวณทั้งหมด/* เพิ่มเหตุการณ์คลิกเพื่อเลือกทั้งหมด*/$ ("#selectall") $ ("#selectall"). attr ("ตรวจสอบ"); /* 2. ซิงโครไนซ์ช่องทำเครื่องหมายของรายการทั้งหมดด้วยสถานะทั้งหมดที่เลือก*/ setItemCheckBox (บูล); /* 3. ซิงโครไนซ์ปุ่มชำระเงินด้วยการเลือกทั้งหมด*/ setJiesuan (บูล); /* 4. คำนวณยอดรวมทั้งหมด*/ showtotal (); - /* เพิ่มเหตุการณ์คลิกไปยังช่องทำเครื่องหมายของรายการทั้งหมด*/$ (":::::: ชื่อเช็ค [name = checkboxBtn]") คลิก (ฟังก์ชั่น () {var all = $ (": ช่องทำเครื่องหมาย [name = checkboxbtn]"). ความยาว; {// ทั้งหมด $ ("#selectall"). attr ("ตรวจสอบ", true); // ทำเครื่องหมายช่องทำเครื่องหมายทั้งหมด setjiesuan (จริง); // ทำให้ปุ่มชำระเงินถูกต้อง} อื่นถ้า (select == 0) {// ไม่มีใครเลือก $ ("#selectall") $ ("#selectall"). attr ("ตรวจสอบ", false); // ยกเลิก setjiesuan ทั้งหมด (เท็จ); // ยกเลิกการชำระเงิน} else {$ ("#selectall"). attr ("ตรวจสอบ", false); // ยกเลิก setJiesuan ทั้งหมด (จริง); // /* เพิ่มเหตุการณ์คลิกไปที่เครื่องหมายลบ*/ $ (". Jian") คลิก (ฟังก์ชั่น () {// รับ cartItemid var id = $ (นี่) .attr ("id") substring (0, 32); แต่การลบมัน // เพิ่มเหตุการณ์คลิก $ (". jia"). คลิก (ฟังก์ชั่น () {// รับ cartItemid var id = $ (นี่) .attr ("id"). substring (0, 32); // รับหมายเลขในกล่องอินพุต var ปริมาณ = $ ("#" + id + "); ปรับเปลี่ยนปริมาณ ฟังก์ชั่น sendUpDateQuantity (ID, ปริมาณ) {$ .ajax ({async: false, แคช: false, url: "/goods/cartitemservlet", ข้อมูล: {วิธี: "updateQuantity", cartItemId: id, ปริมาณ: ปริมาณ}, ประเภท: "โพสต์" "ปริมาณ") (ผลการเรียนรู้); /* 1 รับกล่องกาเครื่องหมายรายการตรวจสอบทั้งหมด! Loop Traversal */$ (":: CHACKBOX [NAME = CHECKBOXBTN] [checked = true]") แต่ละ (ฟังก์ชั่น () {// 2. รับค่าของกล่องกาเครื่องหมายนั่นคือคำนำหน้าขององค์ประกอบอื่น ๆ // 4 // 5. แสดงผลรวมขององค์ประกอบทั้งหมด $ ("#total") ข้อความ (รอบ (ทั้งหมด, 2)); // ฟังก์ชั่นของฟังก์ชั่น Round () คือการรักษาทั้งหมด 2 บิต}/ * * ตั้งปุ่มตรวจสอบสำหรับรายการทั้งหมดในชุด */ฟังก์ชั่น setitemcheckbox (bool) {$ ("กล่องกาเครื่องหมาย [name = checkboxbtn]") attt ("ตรวจสอบ", bool);}/ * $ ("#jiesuan"). RemoveClass ("Kill"). AddClass ("Jiesuan"); $ ("#jiesuan"). unbind ("คลิก"); // ยกเลิกการคลิกเหตุการณ์ทั้งหมดขององค์ประกอบปัจจุบัน} else {$ ("#jiesuan"). RemoveClass ("Jiesuan"). AddClass ("Kill"); $ ("#jiesuan") คลิก (ฟังก์ชัน () {return false;}); }}/** แบทช์ลบ*/ฟังก์ชั่น batchdelete () {// 1 รับช่องทำเครื่องหมายสำหรับรายการที่เลือกทั้งหมด // 2. สร้างอาร์เรย์และเพิ่มค่าของช่องทำเครื่องหมายที่เลือกทั้งหมดลงในอาร์เรย์ // 3 ระบุตำแหน่งเป็น cartItemServlet อาร์เรย์ (); $ (": ช่องทำเครื่องหมาย [name = checkboxbtn] [checked = true]") แต่ละ (ฟังก์ชั่น () {cartitemidarray.push ($ (นี่) .val ()); // เพิ่มค่าของช่องทำเครื่องหมายในอาร์เรย์}); location = "/goods/cartItemServlet? method = batchDelete & cartItemidArray;}/** การชำระเงิน*/ฟังก์ชั่น jiesuan () {// 1 รับรหัสของรายการที่เลือกทั้งหมด CartItemidArray.push ($ (นี่) .val ()); // เพิ่มค่าของช่องทำเครื่องหมายในอาร์เรย์}); $ ("#hiddentotal"). val ($ ("#total"). text ()); <td align = "ขวา"> <img align = "top" src = "<c: url value = '/images/icon_empty.png' /////"/> </td> <td> <pan> ไม่มีผลิตภัณฑ์ในรถเข็น </span> </td> cellpacing = "0"> <tr align = "center" bgcolor = "#efeae5"> <td align = "ซ้าย"> <อินพุตประเภท = "ช่องทำเครื่องหมาย" id = "เลือก" ตรวจสอบ = "ตรวจสอบ"/> <label for = "selectall"> เลือก </label> </td> <td> ปริมาณ </td> <td> subtotal </td> <td> การดำเนินการ </td> </td> </td> </tr> <c: foreach items = "$ {cartItemList}" var = "cartItem"> <trAlign = "center"> <td type = "ช่องทำเครื่องหมาย" name = "checkboxbtn" checked = "ตรวจสอบ"/> </td> <td align = "left"> <a href = "<c: url value = '/jsps/book/desc.jsp'/>" </td> <td align = "ซ้าย"> <a href = "<c: ค่า url = '/jsps/book/desc.jsp'/>"> <span> $ {cartItem.book.bname} </sprice} </a> </td> <td> id = "$ {cartItem.CartItemId} Jian"> </a> <อินพุต readOnly = "อ่านอย่างง่าย ๆ " id = "$ {cartItem.cartItemid} ปริมาณ" type = "text" value = "$ {cartItem.quantity}"/> <span> ¥ <span id = "$ {cartitem.cartitemid} subtotal"> $ {cartitem.subtotal} </span> </span> </td> <td> <a href = "<c: url value = '/cartItemServlet } '/> "> ลบ </a> </td> </td> </tr> </c: foreach> <tr> <td colspan =" 4 "> <a href =" javascript: batchdelete (); id = "total"> </span> </span> </td> </tr> <tr> <td Colspan = "7" Align = "Right"> <a href = "JavaScript: Jiesuan ();" id = "Jiesuan"> </a> </td> </tr> value = '/cartItemServlet' //> "method =" post "> <อินพุต type =" hidden "name =" cartItemids "id =" cartItemids "/> <อินพุตประเภท =" ซ่อน "name =" total "id =" hiddentotal "/> </body> </html>เคล็ดลับ: Round.js ใน JS
// 5. แสดงผลรวมขององค์ประกอบทั้งหมด $ ("#total") ข้อความ (รอบ (ทั้งหมด, 2)); // ฟังก์ชั่นของฟังก์ชั่นรอบ () คือการรักษา 2 บิตทั้งหมด6. ฟังก์ชั่นการลบแบบแบทช์ ---- ลบ
JSP
ฟังก์ชั่น batchdelete () {// 1 รับช่องทำเครื่องหมายสำหรับรายการที่เลือกทั้งหมด // 2. สร้างอาร์เรย์และเพิ่มค่าของช่องทำเครื่องหมายที่เลือกทั้งหมดลงในอาร์เรย์ // 3 ระบุตำแหน่งเป็น cartItemServlet, พารามิเตอร์ = batchDelete, พารามิเตอร์ cartItemids = tostring () $ (": ช่องทำเครื่องหมาย [name = checkboxbtn] [checked = true]") แต่ละ (ฟังก์ชั่น () {cartitemidarray.push ($ (นี่) .val ()); // เพิ่มค่าของช่องทำเครื่องหมายในอาร์เรย์}); location = "/goods/cartItemServlet? method = batchDelete & cartItemIds =" + cartItemidArray;}ลบหนึ่ง
ถ้า (ปริมาณ == 1) {ถ้า (ยืนยัน ("คุณต้องการลบรายการจริงหรือไม่")) {location = "/goods/cartItemServlet? method = batchDelete & cartItemIds =" + id; }} อื่น {7. จำนวนการแก้ไข ----- แก้ไข
JSP
// ขอเซิร์ฟเวอร์และแก้ไขหมายเลข ฟังก์ชั่น sendUpDateQuantity (ID, ปริมาณ) {$ .ajax ({async: false, แคช: false, url: "/goods/cartitemservlet", ข้อมูล: {วิธี: "updateQuantity", cartItemId: id, ปริมาณ: ปริมาณ}, ประเภท: "โพสต์" "ปริมาณ") Val (ผลลัพธ์. quantity);เซล็ต
Public String UpdateQuantity (httpservletRequest REQ, httpservletResponse resp) โยน servletexception, ioexception {String cartItemId = req.getParameter ("cartItemId"); ปริมาณ int = integer.parseInt (req.getParameter ("ปริมาณ")); cartItem cartItem = cartItemService.updateQuantity (cartItemId, ปริมาณ); // ส่งคืนวัตถุ JSON ไปยัง client StringBuilder sb = new StringBuilder ("{"); sb.append ("/" ปริมาณ/""). ผนวก (":") ผนวก (cartItem.getQuantity ()); sb.append (","); sb.append ("/" subtotal/""). ผนวก (":"). ผนวก (cartitem.getsubtotal ()); sb.append ("}"); resp.getWriter (). พิมพ์ (SB); คืนค่า null;}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น