في القسم السابق ، أكملنا الصفحة التفصيلية للمنتج واستخدمنا ذاكرة التخزين المؤقت الثانوية لـ Hibernate لتحميل الصفحة التفصيلية لتحسين أداء النظام. انقر على المقالة لعرضها :. في هذا القسم نبدأ في القيام بجزء عربة التسوق.
1. أضف جدولًا جديدًا
أولاً ، نضيف عدة جداول إلى قاعدة البيانات: جدول المستخدم ، جدول حالة الطلب ، جدول الطلب (جدول عربة التسوق) وجدول عنصر التسوق. يتم تخزين المعلومات الأساسية للمستخدم في جدول المستخدم. يقوم جدول حالة الطلب بتخزين حالة الطلب بشكل أساسي ، مثل الشحن. يقوم جدول الطلب بتخزين معلومات المستخدم بشكل أساسي وحالة الطلب ، لذلك يرتبط بجدول المستخدم وجدول حالة الطلب. يخزن جدول عنصر التسوق منتجًا معينًا والترتيب الذي ينتمي إليه ، لذلك يرتبط بجدول المنتج وجدول الطلب. للحصول على معلومات جدول محددة ، راجع عبارة SQL التالية:
/*=========================================================================== =================================================================================اك قم بإنشاء مستخدم جدول ( /* رقم المستخدم ، النمو التلقائي* / ID int المفتاح الأساسي وليس NULL AUTO_INCREMENT ، /* اسم تسجيل الدخول إلى المستخدم* / تسجيل الدخول VARCHAR (20) ، /* المستخدم الحقيقي* / name varchar (20) ، /* المستخدم تسجيل الدخول إلى كلمة مرور* / pass varchar (20) ، /* جنس المستخدم* / الجنس varchar (20) ، /*========================================================= ===========================================================/ /* الجدول: عربة التسوق (طلب) هيكل الجدول* / /*=================================================================== ==================================================================== ==================================================================== ====================================================================== إنشاء جدول forder ( /* رقم الطلب ، النمو التلقائي* / معرف int المفتاح الأساسي وليس الفار Varchar (20) ، /* المتلقي رمز البريد* / العنوان Varchar (200) ، /* حالة الطلب* / SID int الافتراضي 1 ، /* رقم العضو* / UID int ، قيود SID_FK مفتاح مراجع (SID) مراجع (ID) ، قيود UID_FK Overide Overide Key (UID) مستخدم المراجع (ID)) ؛ /*===============================================================سف ================================================================================================================================================ ================================================================================================================================================ =============================================================================================================================================== سعر المنتج في وقت الشراء*/ السعر العشري (8،2) ،/*الكمية المشتراة*/ الرقم int غير فارغ ،/*رقم المنتج*/ pid int ،/*هذا العنصر ، رقم الطلب*/ fid int ، pid_fk مفتاح Overide (pid) مراجع المنتج (ID) ، عصيدة VID_FK VOIRENTEDENCE (FID) (ID)) ؛
ثم نقوم بتحويل هذه الجداول إلى pojo من خلال الهندسة العكسية ، لذلك لن ندخل في التفاصيل.
2. منطق الكواليس لعربة التسوق
2.1 منطق طبقة الخدمة
عندما يضيف المستخدم منتجًا إلى عربة التسوق ، نحتاج أولاً إلى الحصول على معلومات المنتج من خلال معرف المنتج ، ثم إضافة المنتج إلى عربة التسوق. قبل الإضافة ، يجب أولاً تحديد ما إذا كانت هناك عربة تسوق في الجلسة الحالية. إذا لم يكن الأمر كذلك ، فيجب علينا أولاً إنشاء عربة تسوق. إذا كان الأمر كذلك ، فسنضيف عنصر التسوق الحالي إلى عربة التسوق. قبل الإضافة ، نحتاج إلى تحديد ما إذا كان عنصر التسوق موجودًا بالفعل في عربة التسوق. إذا كان موجودًا ، فما عليك سوى زيادة كمية التسوق المقابلة. إذا لم يكن موجودًا ، فأضفه ، ثم احسب إجمالي سعر التسوق ، وأخيراً حفظ عربة التسوق إلى الجلسة. انظر الرسم البياني أدناه للعملية بأكملها:
بعد ذلك ، دعنا ننفذ المنطق المحدد ، أولاً إنشاء واجهتين جديدتين للخدمة: Sorderservice و Forderservice. هناك طريقتان محددتان بشكل أساسي في Sorderservice: قم بتحويل العناصر التي يضاف إليها المستخدم إلى عناصر التسوق ، ثم إضافة عناصر التسوق إلى عربة التسوق ؛ تحدد Forderservice بشكل أساسي طريقة حساب السعر الإجمالي لعربة التسوق ، على النحو التالي:
// Sorderservice Interface Interface Public Interface SorderService يمتد Baseservice <iorder> {// إضافة عنصر التسوق وإرجاع عربة تسوق جديدة Forder AddSorder (Forder forder ، منتج المنتج) ؛ // تحويل بيانات المنتج إلى عنصر تسوق PROMORTTOSORDER (منتج المنتج) ؛ }. } ثم ننفذ هاتين الواجهتين بالتفصيل:
// SorderserviceImpl Service ("Sorderservice") الطبقة العامة SorderserviceImpl تمتد BaseserviceImpl <Sorder> التي تنفذ Sorderservice {Override Public Forder AddsOrder (forder forder ، منتج المنتج) {boolean ishave = false ؛ // تستخدم لتمييز ما إذا كانت هناك عناصر تسوق مكررة // الحصول على عنصر التسوق الحالي sorder sorder = productTosorder (المنتج) ؛ // احكم على ما إذا كان عنصر التسوق الحالي مكررًا. إذا كان ذلك مكررًا ، فأضف الكمية لـ (Sorder Old: forder.getSorders ()) {if (old.getProduct (). getId (). equals (sorder.getProduct (). ishave = صحيح ؛ استراحة؛ }} // عنصر التسوق الحالي غير موجود في عربة التسوق ، فقط أضفه إذا (! ishave) {forder.getSorders (). Add (Sorder) ؛ } العودة forder ؛ } Override Public Sorder ProductToSorder (منتج المنتج) {sorder soodric = new Sorder () ؛ soodric.setName (product.getName ()) ؛ soodric.setNumber (1) ؛ soodric.setPrice (product.getPrice ()) ؛ soodric.setProduct (المنتج) ؛ إرجاع soorder ؛ }} // تطبيقات forderserviceImpl service ("forderservice") تمتد الفئة العامة forderserviceImpl على أساس BaseserviceImpl <Forder> Forderservice {Override public double clutotal (forder forder) {double total = 0.0 ؛ لـ (sorder soDord: forder.getSorders ()) {total += soodric.getNumber () * soodric.getPrice () ؛ } إجمالي الإرجاع ؛ }} ثم نحتاج إلى ضخ هذين الفاصلين في قاعدة لاستخدامها بواسطة SorderAction:
controller ("baseaCtion") scope ("prototype") public class baseaction <T> يمتد إجراءات Actionuports requestaware ، sessionaware ، applicationaware ، modeldvenveniven <t> {// حذف الرمز الآخر غير ذي صلة ... @resource forderservice forderservice ؛ Resource محمية SorderService SorderService ؛ } حسنًا ، تم الانتهاء من منطق طبقة الخدمة ، وبعد ذلك سنقوم بعمل جزء الحركة:
2.2 منطق العمل
نقوم بإنشاء معامل SorderAction ونتبع العملية الموضحة في المخطط المنطقي أعلاه لإكمال منطق إضافة عربات التسوق. الرمز كما يلي:
ControllerCOPE ("النموذج الأولي") فئة عامة SorderAction تمتد BASEACTION <Sorder> {public string addsorder () {// 1. الحصول على بيانات المنتج المقابلة وفقًا للمنتج. // 2. حدد ما إذا كانت هناك عربة تسوق في الجلسة الحالية. إذا لم يكن الأمر كذلك ، فقم بإنشاء if (session.get ("forder") == null) {// إنشاء عربة تسوق جديدة وتخزينها في الجلسة. } // 3. تحويل معلومات المنتج إلى soDord وأضفها إلى عربة التسوق (الحكم على ما إذا كان عنصر التسوق مكرر) Forder forder = (forder) get.get ("forder") ؛ forder = soorderservice.addsorder (forder ، المنتج) ؛ // 4. احسب السعر الإجمالي للتسوق forder.settotal (forderservice.clutotal (forder)) ؛ // 5. قم بتخزين عربة التسوق الجديدة في الجلسة. إرجاع "العربات" ؛ }} تكوين ملف struts.xml:
<action name = "sorder_*" method = "{1}"> <result name = "showcart">/showcart.jsp </reduct> </action>ثم القفز إلى صفحة عرض عربة التسوق. البرنامج الأمامي حول جزء عربة التسوق في Showcart.jsp هو كما يلي:
3. قفزة رابط مكتب الاستقبال
جميع أجزاء الخلفية تتم. بعد ذلك ، أضف صفحة تفاصيل مكتب الاستقبال. jsp إلى عنوان رابط عربة التسوق للوصول
هذا سوف يقفز بشكل صحيح. دعونا نلقي نظرة على التأثير المحدد لصفحة عرض عربة التسوق:
وبهذه الطريقة ، سيتم الانتهاء من الوظائف الأساسية لعربة التسوق الخاصة بنا ، وسوف نقوم ببعض التحسينات عليها لاحقًا.
العنوان الأصلي: http://blog.csdn.net/eson_15/article/details/51418350
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.