هذه المقالة هي بحث على وحدة الطلب في مكتبة Javaweb.
1. إنشاء فصول ذات صلة
اِختِصاص:
طلب
OrderItem
داو: Orderdao
الخدمة: OrderService
Web.Servlete: OrderServlet
/** * فئة إدخال الطلب */الفئة العامة OrderItem {private string iid ؛ عدد int الخاص /** * Order Class */public Class Order {Private String OID ؛ وقت طلب التاريخ الخاص ؛ // وقت الطلب ، إجمالي مزدوج خاص ؛ // إجمالي حالة int private ؛ // هناك أربعة أنواع من حالة الطلب: 1 لم يتم دفعه 2 غير مدفوع ولكن لم يتم شحنه 3 لم يتم شحنه ولكن لم يتم تأكيد إيصاله 4 معاملة مؤكدة من قبل مالك مستخدم خاص ناجح ؛ // Order Offer Owner string private ؛ الطبقة العامة orderdao {private queryrunner qr = new txqueryrunner () ؛ / *** إضافة ترتيب* param order*/ public void addorder (Order Order) {try {string sql = "insert to orders ormes (؟ ،؟ ،؟ ،؟ ،؟ ،؟)" ؛ / * * timestamp لمعالجة تحويل تاريخ util إلى SQL */ timestamp timestamp = new timestamp (order.getordertime (). getTime ()) ؛ Object [] params = {order.getoid () ، timestamp ، order.getTotal () ، order.getState () ، order.getOnd (). getUid () ، order.getAddress ()} ؛ qr.update (SQL ، params) ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }} /*** إدخال ترتيب إدراج* param orderiteMlist* /public void addorderItemList (list <SrideItem> orderiteMlist) { /*** batch (سلسلة sql ، كائن [] [] من params فئة QueryRunner)* حيث تكون البارامز متعددة من صفائف أحادية البعد! * يتم تنفيذ كل صفيف أحادي الأبعاد مرة واحدة مع SQL ، ويتم تنفيذ المصفوفات أحادية البعد عدة مرات*/ TRAY {String sql = "insert في قيم OrderItem (؟ ،؟ ،؟ ،؟ ،؟)" ؛ /** تحويل orderiteMlist إلى صفيف ثنائي الأبعاد* تحويل كائن OrderItem إلى صفيف أحادي البعد*/ كائن [] [] params = new Object [OrderItemList.size ()] [] ؛ // loop من خلال orderiteMlist واستخدم كل كائن orderitem لتعيين قيمة لكل صفيف أحادي البعد في params لـ (int i = 0 ؛ i <orderiteMlist.size () ؛ i ++) {orderitem item = orderitemlist.get (i) ؛ params [i] = كائن جديد [] {item.getiid () ، item.getCount () ، item.getSubTotal () ، item.getorder (). getoid () ، item.getBook (). getBid ()} ؛ } qr.batch (sql ، params) ؛ // تنفيذ معالجة الدُفعات} catch (sqlexception e) {throw new runtimeexception (e) ؛ }} / ** * طلب الاستعلام بواسطة UID * param uid * @REGANT * / list public list <rord> findByuid (string uid) { / * * 1. Query all List <Rode> للمستخدم الحالي من خلال UID * 2. loop من خلال كل طلب وتحميل كل طلب عليه * / / حاول { * 1. قائمة <Trome> orderlist = qr.query (SQL ، New Beanlisthandler <Respon> (order.class) ، UID) ؛ / * * 2. حلقة من خلال كل طلب وتحميل جميع إدخالات الطلب الخاصة به */لـ (طلب الطلب: قائمة الطلبات) {loadorderItems (order) ؛ // إضافة جميع إدخالات الطلب الخاصة به لكائن الطلب}/ * * 3. قائمة ترتيب الإرجاع */قائمة الإرجاع ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }} / ** * قم بتحميل جميع إدخالات الطلب للترتيب المحدد * param order * throws sqlexception * / private void loadorderItems (Order Order) يلقي sqlexception { / * * Query اثنين من الجداول: OrdereM ، Book * / String sql = "select * from OrdereM I ، book b whereid = b.bid و oid =؟ / * * لأن مجموعة النتائج من الصف لم تعد جافابين ، لم يعد بإمكانك استخدام Beanlisthandler ، ولكن Maplisthandler */ List <map <string ، Object >> maplist = qr.query (SQL ، New maplisthandler () ، order.getoid ()) ؛ / * * قائمة MAPLIST هي خرائط متعددة ، كل خريطة تتوافق مع صف من مجموعة النتائج * سطر واحد: * {iid = c7AD5492F27D492189105FB50E55CB6 ، COUNT = 2 ، Subtotal = 60.0 ، OID = 1AE8A70354C947F8B81B80ADA Hibernate ، السعر = 30.0 ، المؤلف = Zhang Weiqin ، Image = book_img/8991366-1_l.jpg ، CID = 2} * ... * * نحن بحاجة إلى استخدام خريطة لإنشاء كائنين: استخدام اثنين من الخريطة ، ثم تأسيس العلاقة بين اثنين (تعيين الكتاب إلى OrderItem) */// النتيجة هي OrderItem) ، وحفظ OrderItem*/ List <DressItem> orderiteMlist = toDordItemList (MapList) ؛ Order.SetOrderItemList (OrderItEmList) ؛ } / ** * قم بتحويل كل خريطة في قائمة MAPLIST إلى كائنين وقم بإنشاء علاقة * param maplist * return * / list private <SrideItem> TORDORDITEMLIST (LIST <map <string ، Object >> maplist) {list <SrideItem> OrderItEmList = new ArrayList <SrayItem> () ؛ لـ (MAP <String ، Object> MAP: MAPLIST) {orderitem item = toDordItem (map) ؛ OrderItemList.add (البند) ؛ } return orderiteMlist ؛ } / ** * تحويل خريطة إلى كائن OrderItem * param map * regurn * / private orderitem toDordItem (map <string ، object> map) {orderitem orderitem = commonutils.tobean (map ، orderitem.class) ؛ كتاب كتاب = commonutils.tobean (MAP ، Book.Class) ؛ orderitem.setbook (كتاب) ؛ إرجاع OrderItem ؛ } / ** * load order * param oid * @return * / load order public (سلسلة OID) {try { / * * 1. Order Order = QR.Query (SQL ، BeanHandler New Order> (order.class) ، OID) ؛ /** 2. /** 3. قائمة أوامر الإرجاع*/ ترتيب الإرجاع ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }} / ** * حالة طلب الاستعلام من خلال OID * param oid * @return * / public int getStateByoid (String oid) {try {string sql = "select state from orders where oid =؟" ؛ إرجاع (عدد صحيح) qr.query (SQL ، New CalarHandler () ، OID) ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }} / ** * تعديل حالة الطلب * param oid * state * return * / public void updateState (String oid ، int state) {try {String sql = "update orders set state =؟ where oid =؟" ؛ qr.update (SQL ، State ، OID) ؛ } catch (sqlexception e) {رمي new runTimeException (e) ؛ }}} OrderService {private orderdao orderdao = new orderdao () ؛ / *** طريقة الدفع* param oid*/ public void zhifu (سلسلة OID) {/** 1. if (state == 1) {// تعديل حالة الطلب إلى 2 orderdao.updatestate (oid ، 2) ؛ }} / *** أضف طلبًا* مطلوبًا* param order* / public void add (Order Order) {try {// start the jdbcutils.begintransaction () ؛ orderdao.addorder (order) ؛ // insert the orderdao.addorderItemList (order.getOrderItemList ()) ؛ // أدخل جميع الإدخالات بالترتيب // إرسال المعاملة jdbcutils.committransaction () ؛ } catch (استثناء e) {// Rollback Transaction Try {jdbcutils.rollbackTransaction () ؛ } catch (sqlexception e1) {} رمي new RunTimeException (e) ؛ }} / ** * طلبي * param uid * return * / قائمة عامة <order> myorders (string uid) {return orderdao.findbyuid (uid) ؛ } / ** * load order * param oid * @return * / load order public (سلسلة OID) {return orderdao.load (oid) ؛ } /** * تأكيد الإيصال * param oid * throws orderexception * /void public تأكيد (سلسلة OID) يلقي Orderexception { / * * 1. تحقق من حالة الطلب. إذا لم يكن 3 ، قم برمي استثناء */int state = orderdao.getStateByoid (OID) ؛ // احصل على حالة الطلب إذا (الحالة! = 3) رمي Orderexception ("فشل تأكيد الطلب ، أنت لست شيئًا جيدًا!") ؛ /** 2. تعديل حالة الطلب إلى 4 ، مما يشير إلى أن المعاملة ناجحة*/ orderdao.updatestate (OID ، 4) ؛ }} يمتد OrderServlet للطبقة العامة Baseservlet {private orderservice service = new orderservice () ؛ / ** * ادفع للبنك * * param طلب * param استجابة * regurn * throws servleTexception * throws ioException */ public string zhifu (httpservletrequest request ، httpservletponse response) servlexception ، ioException {properties props = new properies () ؛ inputStream input = this.getclass (). props.load (إدخال) ؛ /** إعداد 13 معلمات*/ string p0_cmd = "buy" ؛ String p1_merid = props.getProperty ("p1_merid") ؛ String p2_order = request.getParameter ("OID") ؛ سلسلة p3_amt = "0.01" ؛ String p4_cur = "cny" ؛ سلسلة p5_pid = "" ؛ سلسلة p6_pcat = "" ؛ سلسلة p7_pdesc = "" ؛ String p8_url = props.getProperty ("p8_url") ؛ سلسلة p9_saf = "" ؛ سلسلة pa_mp = "" ؛ String pd_frpid = request.getParameter ("pd_frpid") ؛ سلسلة pr_needResponse = "1" ؛ / * * حساب hmac */ string keyvalue = props.getProperty ("keyvalue") ؛ String HMAC = paymentutil.buildhmac (p0_cmd ، p1_merid ، p2_order ، p3_amt ، p4_cur ، p5_pid ، p6_pcat ، p7_pdesc ، p8_url ، p9_saf ، pa_mp ، pd_frpid ، pr_needreesponse ، keyvalue) ؛ /** قم بتوصيل عنوان URL لـ yibao و 13+1 معلمات*/ stringBuilder url = new StringBuilder (props.getProperty ("url")) ؛ url.append ("؟ p0_cmd ="). append (p0_cmd) ؛ url.append ("& p1_merid ="). append (p1_merid) ؛ url.append ("& p2_order ="). append (p2_order) ؛ url.append ("& p3_amt ="). append (p3_amt) ؛ url.append ("& p4_cur ="). append (p4_cur) ؛ url.append ("& p5_pid ="). append (p5_pid) ؛ url.append ("& p6_pcat ="). append (p6_pcat) ؛ url.append ("& p7_pdesc ="). append (p7_pdesc) ؛ url.append ("& p8_url ="). append (p8_url) ؛ url.append ("& p9_saf ="). append (p9_saf) ؛ url.append ("& pa_mp ="). append (pa_mp) ؛ url.append ("& pd_frpid ="). إلحاق (pd_frpid) ؛ url.append ("& pr_needResponse ="). إلحاق (pr_needResponse) ؛ url.append ("& hmac ="). append (HMAC) ؛ System.out.println (url) ؛ /** إعادة التوجيه إلى yibao*/ reponse.sendRedirect (url.toString ()) ؛ العودة لاغية. } /*** هذه الطريقة هي طريقة رد الاتصال Yibao. يجب أن نحدد ما إذا كان ييباو يدعو هذه الطريقة! * * request request * param response * return * throws servleTexception * throws ioException */ public string back (httpservletrequest request ، httpservletresponse) يلقي servleTexception ، ioException {/ * 1. String r0_cmd = request.getParameter ("r0_cmd") ؛ String r1_code = request.getParameter ("r1_code") ؛ String R2_TRXID = request.getParameter ("R2_TRXID") ؛ String r3_amt = request.getParameter ("r3_amt") ؛ String r4_cur = request.getParameter ("r4_cur") ؛ String r5_pid = request.getParameter ("r5_pid") ؛ String r6_order = request.getParameter ("r6_order") ؛ String r7_uid = request.getParameter ("r7_uid") ؛ String r8_mp = request.getParameter ("r8_mp") ؛ String r9_btype = request.getParameter ("r9_btype") ؛ سلسلة hmac = request.getParameter ("HMAC") ؛ / * * 2. تحقق مما إذا كان الزائر هو yibao! */ خصائص الدعائم = خصائص جديدة () ؛ inputStream input = this.getclass (). props.load (إدخال) ؛ سلسلة keyvalue = props.getProperty ("keyvalue") ؛ Boolean Bool = paymentutil.verifyCallback (HMAC ، P1_merid ، r0_cmd ، r1_code ، r2_trxid ، r3_amt ، r4_cur ، r5_pid ، r6_order ، r7_uid ، r8_mp ، r9_btype ، keyvalue) ؛ if (! bool) {// إذا فشل التحقق request.setAttribute ("msg" ، "أنت لست شيئًا جيدًا!") ؛ إرجاع "f: /jsps/msg.jsp" ؛ }/** 3. /** 4. } / * * 5. احفظ معلومات النجاح وقم بإعادة توجيهها إلى msg.jsp * / request.setattribute ("msg" ، "الدفع الناجح! انتظر البائع لشحن! أنت تنتظر ~") ؛ إرجاع "f: /jsps/msg.jsp" ؛ } /** * تأكيد الإيصال * * request request * param استجابة * return * throws servleTexception * throws ioException * /string public تأكيد (httpservletrequest طلب ، httpservletresponse استجابة) 3. * احفظ المعلومات الناجحة وإعادة توجيهها إلى msg.jsp */ string oid = request.getParameter ("OID") ؛ حاول {orderservice.confirm (oid) ؛ request.setattribute ("MSG" ، "تهانينا ، المعاملة ناجحة!") ؛ } catch (OrderException e) {request.setAttribute ("msg" ، e.getMessage ()) ؛ } إرجاع "f: /jsps/msg.jsp" ؛ } /** * طلب التحميل * * param request * param response * return * throws servleTexception * throws ioException * /public string load (httpservletrequest request ، httpservledsponse repress) /jsps/order/desc.jsp */request.setattribute ("order" ، orderservice.load (request.getParameter ("oid"))) ؛ إرجاع "f: /jsps/order/desc.jsp" ؛ } /** * طلبي * * param request * param response * return * throws servleTexception * throws ioException * /public string myorders (httpservletrequest request ، httppletresponse response) rems servlexception ، ioException { * 1. OrderService#myorders (UID) للحصول على جميع أوامر قائمة المستخدم <rord> 3. قائمة <Trome> orderlist = orderservice.myorders (user.getuid ()) ؛ request.setAttribute ("orderlist" ، orderlist) ؛ إرجاع "f: /jsps/order/list.jsp" ؛ } /** * أضف طلبًا لاستخدام السيارة في الجلسة لإنشاء كائن طلب * * request request * param response * return * throws servleTexception * throws ioException * /public string add (httpletRequest request ، ugation ugent age ide ent ugation طريقة لإكمال الطلب 4. // تحويل العربة إلى كائن طلب/ * * قم بإنشاء كائن ترتيب وقم بتعيين السمة * * CART -> ORDER */ ORDER = new order () ؛ order.setoid (commonutils.uuid ()) ؛ // قم بتعيين ترتيب الرقم. // set order.setState (1) ؛ // قم بتعيين حالة الطلب على 1 ، مما يشير إلى أن الدفع لم يتم دفعه المستخدم = (المستخدم) request.getSession (). getAttribute ("session_user") ؛ Order.SetOwner (user) ؛ // قم بتعيين Order Order.SetTOTAL (cart.getTotal ()) ؛ // قم بتعيين إجمالي الطلب واحصل على المجموع من CART/ * * إنشاء مجموعة إدخال طلب * * CartiteMlist -> OrderItemList */ list <SrideItEmList = new ArrayList <RudeItem> () ؛ // حلقة من خلال جميع cartitems في CART ، استخدم كل كائن Cartitem لإنشاء كائن OrderItem ، وإضافته إلى المجموعة لـ (Cartitem Cartitem: cart.getCartItEms ()) {orderitem oi = new orderitem () ؛ oi.setcount (cartitem.getCount ()) ؛ // قم بتعيين عدد الإدخالات Oi.setBook (cartitem.getbook ()) ؛ // اضبط الكتاب oi.setsubtotal (cartitem.getsubtotal () ؛ // قم بتعيين المجموعة الفرعية للإدخال oi.setorder (order) ؛ // إضافة جميع إدخالات الطلب إلى Order.SetOrderItemList (OrderItemList) ؛ // مسح عربة التسوق cart.clear () ؛ // ////////////////////////////22222222222nds ////////////////////////////22222222222nds ////////////////////////////22222222222nds ////////////////////////////22222222222nds request.setAttribute ("Order" ، order) ؛ إرجاع "/jsps/order/desc.jsp" ؛ }}2. قم بإنشاء أمر
3. طلبي (تحقق من قبل المستخدم)
4. تحميل الطلب (تحقق من المعرف)
5. تأكيد الإيصال
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.