في المقالة السابقة ، تم استخدام نموذج MODE1 لتحقيق تصفح المنتج. استنادًا إلى المقالة السابقة ، تستخدم هذه المقالة بنية MVC لتحقيق شراء المنتج.
نتائج التشغيل:
بالمقارنة مع المقالة السابقة ، لدينا المزيد من عربات التسوق. نظرًا لشراء العناصر ، تحتاج عربة التسوق إلى سمات للعناصر والكمية المشتراة ، نستخدم قيمة مفتاح الخريطة لحفظ العناصر التي تم شراؤها.
بالطبع هناك أيضا سعر إجمالي. تتمثل طريقة عربة التسوق في إضافة منتجات وحذف المنتجات لحساب السعر الإجمالي . يجب إعادة حساب السعر الإجمالي في كل مرة يتم فيها إضافة المنتج وحذفه. لا يمكن إنشاء إنشاء مجموعة منتجات عربة التسوق إلا مرة واحدة عند تهيئة عربة التسوق.
كيان الحزمة ؛ استيراد java.util.hashmap ؛ Class Class Public Cart {// CART CART COLLECTION PRIVATE HASHMAP <items ، integer> CART ؛ // إجمالي المبلغ الإجمالي المزدوج الخاص ؛ cart public () {cart = new hashmap <items ، integer> () ؛ إجماليات = 0.0 ؛ } hashmap العامة <العناصر ، integer> getCart () {return cart ؛ } public void setCart (hashmap <items ، integer> cart) {this.cart = cart ؛ } public double getTotalPrices () {return totalPrices ؛ } public void settoTalPrices (totalprices double) {this.totalPrices = totalPrices ؛ } // إضافة عناصر إلى عربة التسوق العامة addTocart (العناصر العناصر ، تعداد int) {// إذا تمت إضافة العنصر الحالي يزيد فقط من الكمية إذا (cart.containskey (item)) {cart.put (العنصر ، cart.get (item)+counts) ؛ } آخر {cart.put (العنصر ، التهم) ؛ } // إعادة حساب السعر caltotalPrice (item.getPrice ()*counts) ؛ العودة صحيح. }. cart.remove (عنصر) ؛ } إعادة صواب ؛ }. }} تقوم طريقة Dogett لـ CartServlet بإجراء المعالجة المقابلة وفقًا للإجراء
if (request.getParameter ("Action")! = null) {Action = request.getParameter ("Action") ؛ if ("add" .equals (إجراء)) {// إضافة منتج if (addGoodStocart (request ، response)) {request.getRequestDispatcher ("../ success.jsp"). } آخر {request.getRequestDispatcher ("../ failure.jsp"). إلى الأمام (طلب ، استجابة) ؛ }} آخر إذا ("show" .equals (Action)) {// show request.getRequestDispatcher ("../ cart.jsp"). } آخر إذا ("delete" .equals (إجراء)) {// حذف العنصر deletegoodFromCart (طلب ، استجابة) ؛ request.getRequestDispatcher ("../ cart.jsp"). }} عندما نضغط على واجهة المنتج لوضع العربة ، يتم نقل رقم المنتج الحالي إلى Servlet Classervlet في العربة. يبدأ معالجة العنصر الحالي ووضع العنصر الحالي في العربة
قبل وضعها في عربة التسوق ، حدد أولاً ما إذا كانت هذه هي المرة الأولى لإنشاء عربة تسوق (هناك بالتأكيد عربة تسوق واحدة فقط ، ولكن ليست متعددة). إذا كانت هذه هي المرة الأولى لإنشاء عربة تسوق
ضع عربة التسوق الحالية في الجلسة ، ثم اتصل بالطريقة GetItemById (id) من خلال كائن headsdao للحصول على كائن المنتج. ثم ضع كائن المنتج المقابل وكمية المنتج في عربة التسوق
// أضف منتجات إلى عربة التسوق الخاصة بملح المنطقية AddGoodstocart (طلب httpservletrequest ، httpservletresponse) {string id = request.getParameter ("id") ؛ تعداد السلسلة = request.getParameter ("num") ؛ العناصر العناصر = dao.getItemById (integer.parseint (id)) ؛ // تمييز ما إذا كانت هذه هي المرة الأولى لإنشاء عربة تسوق إذا (request.getSession (). getAttribute ("cart") == null) {cart cart = new cart () ؛ request.getSession (). setAttribute ("cart" ، cart) ؛ request.getSession (). setAttribute ("dao" ، dao) ؛ } cart cart = (cart) request.getSession (). getAttribute ("cart") ؛ // أضف العنصر إلى العربة if (cart.addtocart (العنصر ، integer.parseint (counts))) {return true ؛ } آخر {return false ؛ }} إذا قمت بالنقر فوق عرض CartcartServlet Redirect إلى صفحة العربة
<٪@ page language = "java" import = "java.Util.*" contentType = "text/html ؛ charset = utf-8" ٪> <٪@ page isport = "entity.cart" ٪> <٪@ page isport = "entity.items" ٪> <٪ string. 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> meta my jsp 'cart.jsp' page </title> http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = type = "text/css" href = "styles.css"> -> <link type = "text/css" rel = "STYLESSHEET" href = "css/style1.css"/> <script language = "javaScript"> وظيفة delcfm () {if (! }} </script> </head> <body> <h1> عربة التسوق الخاصة بي </h1> <a href = "goods.jsp"> home </a> <h> سعر المنتج </th> <th> شراء كمية الشراء </th> <th> الإجراء </th> </tr> <٪ // القاضي الأول ما إذا كان هناك كائن عربة تسوق في الجلسة إذا كان (request.getsession (). getAttribute ("cart"! = null) {٪> <! HashMap <items ، integer> goods = cart.getCart () ؛ تعيين <ector> العناصر = Goods.KeySet () ؛ iterator <items> it = items.iterator () ؛ بينما (it.hasnext ()) {items i = it.next () ؛ ٪> <tr name = "products" id = "product_id_1"> <td> <img src = "images/<٪ = <span> <٪ = i.getPrice ()*goods.get (i) ٪> </span> <إدخال type = "hidden" value = ""/> </td> <td> <٪ = goods.get (i) ٪> </td> <td> <a href = "servlet/cartservlet؟ onClick = "delcfm () ؛"> redlete </a> </td> </td> </tr> <٪} ٪> <!-نهاية الحلقة-> </table> <div> <span id = "total"> total: <٪ = cart.gettalprices () ٪> ¥ </span> </div> </form> </viv> </body> </html> عند النقر على حذف CartServlet Class ، فإن فئة CartServlet
// حذف العناصر من عربة التسوق الخاصة بلقب منطقي SelegoodFromCart (طلب httpservletrequest ، httpservletresponse) {// احصل على كائن عربة التسوق من عربة السحب = (CART) request.getSession (). getAttribute ("CART") ؛ if (cart! = null) {int id = integer.parseint (request.getParameter ("id")) ؛ if (cart.removeFromCart (dao.getItemById (id))) {return true ؛ }} إرجاع خطأ ؛ }رمز المنطق أساسا على النحو الوارد أعلاه.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.