ในบทความก่อนหน้านี้โมเดล Mode1 ถูกใช้เพื่อรับรู้การท่องผลิตภัณฑ์ จากบทความก่อนหน้านี้บทความนี้ใช้สถาปัตยกรรม MVC เพื่อรับรู้การซื้อผลิตภัณฑ์
ผลการทำงาน:
เมื่อเทียบกับบทความก่อนหน้านี้เรามีตะกร้าสินค้ามากขึ้น เนื่องจากเมื่อเราซื้อสินค้าตะกร้าสินค้าต้องการแอตทริบิวต์สำหรับรายการและปริมาณที่ซื้อเราใช้ค่าคีย์แผนที่เพื่อบันทึกรายการที่ซื้อ
แน่นอนว่ายังมีราคารวม วิธีการของตะกร้าสินค้าคือการ เพิ่มผลิตภัณฑ์และลบผลิตภัณฑ์เพื่อคำนวณราคารวม ราคารวมควรได้รับการคำนวณใหม่ทุกครั้งที่มีการเพิ่มและลบผลิตภัณฑ์ คอลเลกชันผลิตภัณฑ์ตะกร้าสินค้าสามารถสร้างอินสแตนซ์ได้เพียงครั้งเดียวเมื่อตะกร้าสินค้าเริ่มต้น
เอนทิตีแพ็คเกจ; นำเข้า java.util.hashmap; รถเข็นระดับสาธารณะ {// การรวบรวมผลิตภัณฑ์ตะกร้าสินค้า HashMap ส่วนตัว <รายการ, จำนวนเต็ม> รถเข็น; // จำนวนเงินรวมสองส่วนรวมสองรายการ; รถเข็นสาธารณะ () {cart = new hashmap <รายการ, จำนวนเต็ม> (); TotalPrices = 0.0; } hashmap สาธารณะ <รายการ, จำนวนเต็ม> getCart () {ส่งคืนรถเข็น; } โมฆะสาธารณะ setCart (hashmap <รายการ, จำนวนเต็ม> รถเข็น) {this.cart = cart; } สาธารณะ double getTotalPrices () {return totalPrices; } โมฆะสาธารณะ settotalPrices (สองส่วนรวม) {this.totalPrices = TotalPrices; } // เพิ่มรายการลงในตะกร้าสินค้าบูลีน Public Boolean AddTocart (รายการรายการจำนวน int จำนวน) {// ถ้ารายการปัจจุบันเพิ่มขึ้นจะเพิ่มปริมาณถ้า (cart.containskey (รายการ)) {cart.put (รายการ, cart.get (รายการ)+นับ); } else {cart.put (item, counts); } // คำนวณใหม่ราคา caltotalPrice (item.getPrice ()*นับ); กลับมาจริง; } // ลบรายการออกจากตะกร้าสินค้าบูลีนสาธารณะ removeFromCart (รายการรายการ) {ถ้า (cart! = null && cart.containskey (รายการ)) {caltotalPrice (-item.getPrice ()*cart.get (รายการ)); CART.REMOVE (รายการ); } return true; } // คำนวณจำนวนเงินรวมโมฆะส่วนตัว CaltotalPrice (ราคาสองเท่า) {TotalPrices+= ราคา; - วิธี Dogett ของ Cartservlet ดำเนินการประมวลผลที่สอดคล้องกันตามการกระทำ
if (request.getParameter ("action")! = null) {action = request.getParameter ("การกระทำ"); if ("เพิ่ม" .equals (การกระทำ)) {// เพิ่มผลิตภัณฑ์ถ้า (addGoodStocart (คำขอ, การตอบกลับ)) {request.getRequestDispatcher ("../ success.jsp"). forward (ขอตอบกลับ); } else {request.getRequestDispatcher ("../ failure.jsp"). forward (คำขอ, การตอบกลับ); }} อื่นถ้า ("show" .equals (action)) {// show shopping crag request.getRequestDispatcher ("../ cart.jsp") ส่งต่อ (คำขอ, การตอบกลับ); } อื่นถ้า ("ลบ" .equals (การกระทำ)) {// ลบรายการ deleteGoodFromCart (คำขอ, การตอบกลับ); request.getRequestDispatcher ("../ cart.jsp") ส่งต่อ (คำขอ, ตอบกลับ); - เมื่อเราคลิกที่อินเทอร์เฟซผลิตภัณฑ์เพื่อวางรถเข็นจำนวนผลิตภัณฑ์ปัจจุบันจะถูกถ่ายโอนไปยังรถเข็น Servlet Class ของรถเข็น มันเริ่มประมวลผลรายการปัจจุบันและวางรายการปัจจุบันลงในรถเข็น
ก่อนที่จะวางไว้ในตะกร้าสินค้าก่อนอื่นให้พิจารณาว่าเป็นครั้งแรกที่จะสร้างตะกร้าสินค้า (มีรถเข็นช็อปปิ้งเพียงแห่งเดียวเท่านั้น แต่ไม่ได้หลายตัว) ถ้าเป็นครั้งแรกที่จะสร้างตะกร้าสินค้า
ใส่ตะกร้าสินค้าปัจจุบันลงในเซสชันจากนั้นเรียกใช้วิธี getItembyId (ID) ผ่านวัตถุรายการ DAO เพื่อรับวัตถุผลิตภัณฑ์ จากนั้นใส่วัตถุผลิตภัณฑ์ที่เกี่ยวข้องและปริมาณผลิตภัณฑ์ลงในตะกร้าสินค้า
// เพิ่มผลิตภัณฑ์ลงในตะกร้าสินค้าบูลีนส่วนตัว addgoodstocart (คำขอ httpservletrequest, การตอบกลับ httpservletResponse) {string id = request.getParameter ("id"); สตริงนับ = request.getParameter ("num"); รายการ item = dao.getItembyId (integer.parseint (id)); // แยกแยะว่าเป็นครั้งแรกที่จะสร้างตะกร้าสินค้าถ้า (request.getSession (). getAttribute ("cart") == null) {cart cart = new cart (); request.getSession (). setAttribute ("รถเข็น", รถเข็น); request.getSession (). setAttribute ("dao", dao); } cart cart = (cart) request.getSession (). getAttribute ("cart"); // เพิ่มรายการลงในรถเข็นถ้า (cart.addtocart (item, integer.parseint (counts))) {return true; } else {return false; - หากคุณคลิกดู cartcartservlet เปลี่ยนเส้นทางไปยังหน้ารถเข็น
<%@ page language = "java" import = "java.util.*" contentType = "text/html; charset = utf-8"%> <%@ page import = "entity.cart"%> <%@ page import = "entity.items"%> String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> my jsp 'cart.jsp' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, คำหลัก 2, คำหลัก type = "text/css" href = "styles.css"> -> <link type = "text/css" rel = "stylesheet" href = "css/style1.css"/> <ภาษาสคริปต์ = "javascript"> ฟังก์ชั่น delcfm () }} </script> </head> <body> <h1> ตะกร้าสินค้าของฉัน </h1> <a href = "goods.jsp"> home </a> >> <a href = "goods.jsp"> รายการผลิตภัณฑ์ </a> <hr> <div id = "การช็อปปิ้ง"> < ราคา </th> <th> ปริมาณการซื้อ </th> <th> แอ็คชั่น </th> </tr> <% // ตัดสินครั้งแรกว่ามีวัตถุตะกร้าสินค้าในเซสชั่นถ้า (คำขอ. getSession (). getAttribute ("cart")! = null) {%> <! hashmap <รายการจำนวนเต็ม> สินค้า = cart.getCart (); ตั้งค่า <ites> items = goods.keyset (); Iterator <ites> it = items.iterator (); ในขณะที่ (it.hasnext ()) {items i = it.next (); %> <tr name = "products" id = "product_id_1"> <td> <img src = "ภาพ/<%= i.getPicture ()%>"/> <a href = ""> <%= i.getName ()%> </a> <span> <%= i.getPrice ()*goods.get (i)%> </span> <อินพุต type = "hidden" value = ""/> </td> <td> <%= goods.get (i)%> </td> <td> <a href = "servlet/cartsert onclick = "delcfm ();"> ลบ </a> </td> </td> </tr> < %} %> <!-สิ้นสุดการวนซ้ำ-> </blem> <div> <span id = "ทั้งหมด"> < %= cart.getTotalPrices () %> </form> </div> </body> </html> เมื่อคลิกที่การลบคลาสผลิตภัณฑ์ Cartservlet เรียกวิธีการลบผลิตภัณฑ์
// ลบรายการออกจากตะกร้าสินค้าบูลีนส่วนตัว deleteGoodFromCart (คำขอ httpservletrequest, การตอบกลับ httpservletResponse) {// รับวัตถุตะกร้าสินค้าจาก Session Cart Cart = (CART) GetSession () GetAttribute ("CART"); if (cart! = null) {int id = integer.parseint (request.getParameter ("id")); if (cart.RemoveFromCart (dao.getItembyId (id))) {return true; }} return false; -รหัสลอจิกส่วนใหญ่อยู่ข้างต้น
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น