ในส่วนก่อนหน้านี้เราเสร็จสิ้นหน้าโดยละเอียดของผลิตภัณฑ์และใช้แคชทุติยภูมิของไฮเบอร์เนตเพื่อโหลดหน้าโดยละเอียดเพื่อปรับปรุงประสิทธิภาพของระบบ คลิกบทความเพื่อดู: ในส่วนนี้เราเริ่มทำส่วนตะกร้าสินค้า
1. เพิ่มตารางใหม่
ก่อนอื่นเราเพิ่มหลายตารางลงในฐานข้อมูล: ตารางผู้ใช้ตารางสถานะการสั่งซื้อตารางคำสั่งซื้อ (ตารางตะกร้าสินค้า) และตารางรายการช้อปปิ้ง ข้อมูลพื้นฐานของผู้ใช้จะถูกเก็บไว้ในตารางผู้ใช้ ตารางสถานะการสั่งซื้อส่วนใหญ่เก็บสถานะของคำสั่งซื้อเช่นจัดส่ง ตารางการสั่งซื้อส่วนใหญ่จัดเก็บข้อมูลของผู้ใช้และสถานะของคำสั่งซื้อดังนั้นจึงเกี่ยวข้องกับตารางผู้ใช้และตารางสถานะการสั่งซื้อ ตารางรายการช้อปปิ้งจัดเก็บผลิตภัณฑ์บางอย่างและคำสั่งซื้อของมันจึงเกี่ยวข้องกับตารางผลิตภัณฑ์และตารางการสั่งซื้อ สำหรับข้อมูลตารางเฉพาะโปรดดูคำสั่ง SQL ต่อไปนี้:
- - สร้างผู้ใช้ตาราง ( /* หมายเลขผู้ใช้, การเติบโตอัตโนมัติ* / ID int คีย์หลักไม่ใช่ null auto_increment, /* ชื่อผู้ใช้เข้าสู่ระบบ* / ล็อกอิน varchar (20), /* ชื่อผู้ใช้ชื่อจริง* / ชื่อ varchar (20), /* รหัสผ่านการเข้าสู่ระบบของผู้ใช้* / ผ่าน varchar (20), /* ผู้ใช้ - - /* ตาราง: ตะกร้าสินค้า (คำสั่ง) โครงสร้างตาราง* / / - - - - สร้างตาราง FORDER ( /* หมายเลขคำสั่งซื้อการเติบโตอัตโนมัติ* / ID INT คีย์หลักไม่ใช่ NULL AUTO_INCREMENT, /* ชื่อผู้รับ* / ชื่อ VARCHAR (20), /* หมายเลขโทรศัพท์ของผู้รับ* / โทรศัพท์ VARCHAR (20), /* ข้อมูลการจัดส่ง* / หมายเหตุ VARCHAR (20), /* วันที่สั่งซื้อ Varchar (20), /* รหัสไปรษณีย์ของผู้รับ* / ที่อยู่ Varchar (200), /* สถานะการสั่งซื้อ* / sid int เริ่มต้น 1, /* หมายเลขสมาชิก* / UID int, ข้อ จำกัด SID_FK คีย์ต่างประเทศ (SID) สถานะการอ้างอิง (ID), ข้อ จำกัด UID_FK ผู้ใช้ข้อมูลต่างประเทศ (UID)); - - - - ราคาของผลิตภัณฑ์ ณ เวลาที่ซื้อ*/ ทศนิยมราคา (8,2),/*ปริมาณที่ซื้อ*/ number int ไม่ใช่ NULL,/*หมายเลขผลิตภัณฑ์*/ PID int,/*รายการสายนี้, หมายเลขคำสั่งซื้อ*/ fid int, ข้อ จำกัด ของคีย์ต่างประเทศ (ID) ข้อ จำกัด
จากนั้นเราแปลงตารางเหล่านี้เป็น Pojo ผ่านวิศวกรรมย้อนกลับดังนั้นเราจะไม่เข้าไปดูรายละเอียด
2. ตรรกะหลังเวทีของตะกร้าสินค้า
2.1 ตรรกะของเลเยอร์บริการ
เมื่อผู้ใช้เพิ่มผลิตภัณฑ์ลงในตะกร้าสินค้าเราต้องได้รับข้อมูลผลิตภัณฑ์ผ่านรหัสผลิตภัณฑ์จากนั้นเพิ่มผลิตภัณฑ์ลงในตะกร้าสินค้า ก่อนที่จะเพิ่มเราต้องพิจารณาก่อนว่ามีตะกร้าสินค้าในเซสชั่นปัจจุบันหรือไม่ ถ้าไม่เราต้องสร้างตะกร้าสินค้าก่อน ถ้าเป็นเช่นนั้นเราจะเพิ่มรายการช้อปปิ้งปัจจุบันลงในตะกร้าสินค้า ก่อนที่จะเพิ่มเราจำเป็นต้องพิจารณาว่ารายการช้อปปิ้งมีอยู่แล้วในตะกร้าสินค้าหรือไม่ หากมีอยู่ให้เพิ่มปริมาณการช็อปปิ้งที่สอดคล้องกัน หากไม่มีอยู่ให้เพิ่มมันจากนั้นคำนวณราคาช้อปปิ้งทั้งหมดและในที่สุดก็บันทึกตะกร้าสินค้าไปยังเซสชั่น ดูแผนภาพด้านล่างสำหรับกระบวนการทั้งหมด:
ถัดไปให้ใช้ตรรกะที่เฉพาะเจาะจงก่อนสร้างอินเทอร์เฟซบริการใหม่สองรายการ: SordERService และ ForderService มีสองวิธีที่กำหนดไว้ใน Sorderservice เป็นหลัก: แปลงรายการที่เพิ่มโดยผู้ใช้เป็นรายการช้อปปิ้งจากนั้นเพิ่มรายการช้อปปิ้งลงในตะกร้าสินค้า ForderService ส่วนใหญ่กำหนดวิธีการคำนวณราคารวมของตะกร้าสินค้าดังต่อไปนี้:
// SordERService อินเตอร์เฟสสาธารณะ SordERService ขยาย Baseservice <Sorder> {// เพิ่มรายการช้อปปิ้งและส่งคืนรถเข็นช็อปปิ้งใหม่ Forder Addsorder (Forder Forder ผลิตภัณฑ์ผลิตภัณฑ์); // แปลงข้อมูลผลิตภัณฑ์เป็นรายการช้อปปิ้ง ProductTosorder (ผลิตภัณฑ์ผลิตภัณฑ์); } // ForderService อินเตอร์เฟสสาธารณะ ForderService ขยาย Baseservice <Forder> {// คำนวณราคารวมการช็อปปิ้งรวมเป็นสองเท่าของ Clutotal (Forder Forder); - จากนั้นเราใช้อินเทอร์เฟซทั้งสองนี้อย่างละเอียด:
// sorderServiceImpl การใช้งานคลาส @Service ("SordERService") คลาสสาธารณะ SordERServiceImpl ขยาย BaseserviceImpl <order> ใช้ Sorderservice {@Override Public Forder Addsorder (Forder Forder, ผลิตภัณฑ์ผลิตภัณฑ์) // ใช้เพื่อทำเครื่องหมายว่ามีรายการช้อปปิ้งที่ซ้ำกัน // รับเครื่องตรวจสอบรายการช้อปปิ้งปัจจุบัน soorder = productTosorder (ผลิตภัณฑ์); // ตัดสินว่ารายการช้อปปิ้งปัจจุบันซ้ำกันหรือไม่ หากมีการทำซ้ำให้เพิ่มปริมาณสำหรับ (Sorder Old: forder.getSorders ()) {ถ้า (old.getProduct (). getId (). เท่ากับ (sorder.getProduct (). getId ()) {// มีการทำซ้ำสำหรับรายการช้อปปิ้ง ishave = true; หยุดพัก; }} // รายการช้อปปิ้งปัจจุบันไม่มีอยู่ในตะกร้าสินค้าเพียงเพิ่มถ้า (! ishave) {forder.getSorders (). เพิ่ม (Sorder); } return forder; } @Override Public Sorder ProductTosorder (ผลิตภัณฑ์ผลิตภัณฑ์) {Sorder SoOrder = New Sorder (); soorder.setName (product.getName ()); soorder.setNumber (1); SOORDER.SETPRICE (product.getPrice ()); soorder.setProduct (ผลิตภัณฑ์); กลับมา }} // การใช้งาน ForderServiceImpl @Service ("Forderservice") คลาสสาธารณะ ForderServiceImpl ขยาย BaseserviceImpl <Forder> ใช้ ForderService {@Override Public Double Clutotal สำหรับ (sorder soorder: forder.getSorders ()) {total += soorder.getNumber () * soorder.getPrice (); } ผลตอบแทนทั้งหมด; - จากนั้นเราจำเป็นต้องฉีดถั่วทั้งสองนี้ลงใน baseaction เพื่อใช้งานโดย Sorderaction:
@Controller ("baseaction") @scope ("prototype") ระดับสาธารณะ Baseaction <t> ขยายการกระทำที่ใช้การดำเนินการตามคำขอ, SessionAware, ApplicationAware, ModelDriven <T> {// ละเว้นรหัสที่ไม่เกี่ยวข้องอื่น ๆ @Resource Sorderservice Sorderservice ที่ได้รับการปกป้อง; - ตกลงตรรกะของเลเยอร์บริการเสร็จสิ้นและต่อไปเราจะทำส่วนการกระทำ:
2.2 ตรรกะของการกระทำ
เราสร้าง Sorderaction ใหม่และทำตามกระบวนการที่แสดงในไดอะแกรมลอจิกด้านบนเพื่อให้ตรรกะของการเพิ่มตะกร้าสินค้า รหัสมีดังนี้:
@Controller @scope ("Prototype") Sorderaction ระดับสาธารณะขยาย baseaction <sorder> {public String addSorder () {// 1 รับข้อมูลผลิตภัณฑ์ที่เกี่ยวข้องตามผลิตภัณฑ์ผลิตภัณฑ์ผลิตภัณฑ์ = Productservice.get (model.getProduct (). getId ()); // 2. ตรวจสอบว่ามีตะกร้าสินค้าในเซสชั่นปัจจุบันหรือไม่ ถ้าไม่สร้าง if (session.get ("forder") == null) {// สร้างตะกร้าสินค้าใหม่และเก็บไว้ในเซสชันเซสชัน ("forder", ใหม่ Forder (ใหม่ Hashset <Sorder> ())); } // 3 แปลงข้อมูลผลิตภัณฑ์เป็น soorder และเพิ่มลงในตะกร้าสินค้า (ตัดสินว่ารายการช้อปปิ้งซ้ำซ้อน) forder forder = (forder) เซสชัน get ("forder"); forder = soorderservice.addsorder (forder, product); // 4. คำนวณราคารวมของการช็อปปิ้ง forder.settotal (ForderService.Clutotal (FORDER)); // 5. จัดเก็บตะกร้าสินค้าใหม่ในเซสชั่นเซสชั่น ("ฟอร์เดอร์", ฟอร์เดอร์); กลับ "Showcart"; - กำหนดค่าไฟล์ struts.xml:
<action name = "sorder_*" method = "{1}"> <name result = "showcart">/showcart.jsp </result> </action>จากนั้นข้ามไปที่หน้าจอแสดงผลตะกร้าสินค้า Showcart.jsp โปรแกรมส่วนหน้าเกี่ยวกับส่วนตะกร้าสินค้าใน showcart.jsp มีดังนี้:
3. กระโดดของลิงค์แผนกต้อนรับส่วนหน้า
ชิ้นส่วนพื้นหลังทั้งหมดเสร็จสิ้น จากนั้นเพิ่มหน้า Detail.jsp Detail.jsp ไปยังที่อยู่ลิงค์ของตะกร้าสินค้าเพื่อเข้าถึง Sorderaction:
สิ่งนี้จะกระโดดได้อย่างถูกต้อง มาดูเอฟเฟกต์เฉพาะของหน้าจอแสดงผลตะกร้าสินค้า:
ด้วยวิธีนี้ฟังก์ชั่นพื้นฐานของตะกร้าสินค้าของเราจะเสร็จสมบูรณ์และเราจะทำการปรับปรุงบางอย่างในภายหลัง
ที่อยู่ดั้งเดิม: http://blog.csdn.net/eson_15/article/details/51418350
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น