Artikel ini adalah penelitian tentang modul pesanan di toko buku Javaweb.
1. Buat kelas terkait
domain:
Memesan
Orderitem
Dao: Orderdao
Layanan: Pesanan
Web.Servlete: OrderServlet
/** * Pesanan Kelas Entri */Public Class OrderItem {Private String IID; private int count; // kuantitas subtotal ganda pribadi; // pesanan pesanan pribadi subtotal; // pesan buku buku pribadi; // buku yang akan dibeli} /** * Pesanan kelas */pesanan kelas publik {private string oid; Tanggal Pribadi Waktu Pemesanan; // Waktu Pesanan Total Ganda Pribadi; // Total Negara Bagian Privat; // Ada empat Jenis Status Pesanan: 1 Tidak Dibayar 2 Tidak Dibayar tetapi Tidak Dikirim 3 Tidak Dikirim tetapi Tidak Dikonfirmasi Penerimaan 4 Transaksi yang Dikonfirmasi yang Berhasil Pemilik Pengguna Privat; // Pesanan Pemilik Alamat String Privat; Public Class OrderDao {Private QueryRunner QR = TXQueryRunner baru (); / *** Tambahkan pesanan* @param order*/ public void addorder (pesanan pesanan) {coba {string sql = "masukkan ke dalam nilai pesanan (?,?,?,?,?,?)"; / * * Timestamp untuk memproses konversi tanggal util ke sql */ timestamp waktu = timestamp baru (order.getOrdertime (). GetTime ()); Objek [] params = {order.getoid (), timestamp, order.getTotal (), order.getState (), order.getOwner (). Getuid (), order.getAddress ()}; qr.update (sql, params); } catch (sqlexception e) {lempar runimeException baru (e); }} /*** Masukkan entri pesanan* @param orderItemlist* /public void addorderTeMlist (Daftar <Tertionem> orderIteMlist) { /*** batch (string sql, objek [] [] dari params kelas QueryRunner)* di mana params adalah beberapa array satu dimensi! * Setiap array satu dimensi dieksekusi sekali dengan SQL, dan beberapa array satu dimensi dieksekusi beberapa kali*/ coba {string sql = "masukkan ke dalam nilai orderitem (?,?,?,?,?)"; /** Konversi orderItemlist ke array dua dimensi* Konversi objek orderitem ke array satu dimensi*/ objek [] [] params = objek baru [orderitemlist.size ()] []; // Loop melalui orderItemlist dan gunakan setiap objek OrderItem untuk menetapkan nilai untuk setiap array satu dimensi di params untuk (int i = 0; i <orderitemlist.size (); i ++) {item orderitem = orderitemlist.get (i); params [i] = objek baru [] {item.getIId (), item.getCount (), item.getSubtotal (), item.getorder (). getoid (), item.getBook (). getBid ()}; } qr.batch (sql, params); // jalankan pemrosesan batch} catch (sqlexception e) {lempar runtimeException baru (e); }} / ** * Pesanan kueri oleh uid * @param uid * @return * / Daftar publik <FORTE> findByUid (string uid) { / * * 1. Query semua daftar <Order> dari pengguna saat ini melalui uid * 2. Loop melalui setiap pesanan dan memuat semua pesanannya * / coba { / * * 1. Dapatkan semua pesanan untuk ini dan memuat semua pesanannya * " Daftar <FORD> orderList = qr.Query (SQL, New Beanlisthandler <FORD> (order.class), uid); / * * 2. Loop melalui setiap pesanan dan muat semua entri pesanannya sendiri untuk itu */untuk (pesanan pesanan: orderlist) {loadOrderItems (pesanan); // Tambahkan semua entri pesanannya untuk objek pesanan}/ * 3. Daftar pesanan kembalikan */kembalikan daftar pesanan; } catch (sqlexception e) {lempar runimeException baru (e); }} / ** * Muat semua entri pesanan untuk pesanan yang ditentukan * @param order * @throws sqlexception * / private void loadOrderItems (pesanan pesanan) melempar sqlexception { / * * kueri dua tabel: orderem, book * / string sql = "pilih * dari orderem i, book b di mana i.bid = oid dan oid = oid =" / * * Karena set hasil baris tidak lagi menjadi Javabean, Anda tidak dapat lagi menggunakan Beanlisthandler, tetapi Maplisthandler */ Daftar <peta <string, objek >> maplist = qr.query (sql, maplisthandler baru (), order.getoid ()); / * * Maplist adalah beberapa peta, masing -masing peta sesuai dengan deretan hasil set * satu baris: * {iid = c7ad5492f27d492189105fb50e55cbb6, hitungan = 2, subtotal = 60.0, oid = 1AE8A70354C947F8B8B8B8B817B817.0A817.1A817B817, Hibernate, harga = 30.0, penulis = zhang weiqin, image = book_img/8991366-1_l.jpg, cid = 2} * ... * * kita perlu menggunakan peta untuk menghasilkan dua objek: orderitem, dan kemudian menetapkan hubungan antara dua (set buku untuk memesan) */ * sebuah orderitem), dan simpan orderItem*/ daftar <deroTem> orderItemlist = toOderItemList (mapList); order.setorderIteMlist (orderItemlist); } / ** * Konversi setiap peta di maplist menjadi dua objek dan buat hubungan * @param maplist * @return * / daftar privat <dertionem> toorderItemList (daftar <peta <string, objek >> maplist) {list <derticem> orderItemList = new arraylist <festanTem> (); untuk (peta <string, object> peta: mapList) {orderitem item = toOderItem (peta); orderitemlist.add (item); } return orderIteMlist; } / ** * Konversi peta menjadi objek orderitem * @param peta * @return * / private orderitem toOderItem (peta <string, objek> peta) {orderitem orderitem = commonutils.tobean (peta, orderitem.class); Buku buku = commonils.tobean (peta, book.class); orderitem.setbook (buku); mengembalikan orderitem; } / ** * memuat pesanan * @param oid * @return * / load pesanan umum (string oid) {coba { / * * 1. Dapatkan semua pesanan pengguna saat ini * / string sql = "pilih * dari pesanan di mana oid =?"; Pesanan pesanan = qr.query (sql, beanhandler baru <conder> (order.class), oid); /** 2. Muat semua entri untuk pesanan*/ loadOrderItems (pesanan); /** 3. Daftar Pesanan Pengembalian*/ Pesanan Pengembalian; } catch (sqlexception e) {lempar runimeException baru (e); }} / ** * Status pesanan kueri melalui oid * @param oid * @return * / public int getStatebyoid (string oid) {coba {string sql = "pilih status dari pesanan di mana oid =?"; return (integer) qr.query (SQL, new Scalarhandler (), OID); } catch (sqlexception e) {lempar runimeException baru (e); }} / ** * Ubah status pesanan * @param oid * @param state * @return * / public void updateState (string oid, state int) {coba {string sql = "Perbarui pesanan set status =? Di mana oid =?"; qr.update (SQL, State, OID); } catch (sqlexception e) {lempar runimeException baru (e); }}} PRESERVICE CLASS PUBLIK {Private Orderdao orderdao = new orderdao (); / *** Metode pembayaran* @param oid*/ public void zhifu (string oid) {/** 1. Dapatkan status pesanan** jika status 1, maka jalankan kode berikut** jika status tidak 1, maka metode ini tidak melakukan apa pun*/ int state = orderdao.getStateByoid (oid); if (state == 1) {// Ubah status pesanan menjadi 2 orderdao.updaTeState (oid, 2); }} / *** Tambahkan pesanan* Transaksi diperlukan* @param order* / public void add (pesanan pesanan) {coba {// mulai transaksi jdbcutils.begintransaction (); orderdao.addorder (pesanan); // masukkan orderdao.addorderIteMlist (order.getOrderIteMlist ()); // Masukkan semua entri dalam pesanan // kirimkan transaksi jdbcutils.committransaction (); } catch (Exception e) {// transaksi rollback coba {jdbcutils.rollbackTransaction (); } catch (sqlexception e1) {} lempar runimeException baru (e); }} / ** * Pesanan saya * @param uid * @return * / Daftar publik <FORD> myorders (String uid) {return ordao.findbyuid (uid); } / ** * memuat pesanan * @param oid * @return * / load pesanan umum (string oid) {return orderdao.load (oid); } /** * Konfirmasi tanda terima * @param oid * @throws orderexception * /public void konfirmasi (string oid) melempar orderexception { / * * 1. Verifikasi status pesanan. Jika bukan 3, lempar pengecualian */int state = orderdao.getStatebyoid (oid); // Dapatkan status pesanan jika (status! = 3) Lemparkan orderexception baru ("Konfirmasi pesanan gagal, Anda bukan hal yang baik!"); /** 2. Ubah status pesanan menjadi 4, menunjukkan bahwa transaksi berhasil*/ orderdao.updaTeState (OID, 4); }} Public Class OrderServlet memperluas BaseserVlet {Private OrderService OrderService = New OrderService (); /** * Pay to the bank* * @param request * @param response * @return * @throws ServletException * @throws IOException */ public String zhiFu(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Properties props = new Properties(); InputStream input = this.getClass (). GetClassLoader () .getResourceAsstream ("Merchantinfo.properties"); props.load (input); /** Siapkan 13 parameter*/ string p0_cmd = "buy"; String p1_merid = props.getProperty ("p1_merid"); String p2_order = request.getParameter ("oid"); String p3_amt = "0,01"; String p4_cur = "CNY"; String p5_pid = ""; String p6_pcat = ""; String p7_pdesc = ""; String p8_url = props.getProperty ("p8_url"); String p9_saf = ""; String pa_mp = ""; String pd_frpid = request.getParameter ("pd_frpid"); String pr_needResponse = "1"; / * * Hitung 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_needs /** Hubungkan URL YIBAO dan 13+1 Parameter*/ StringBuilder URL = StringBuilder baru (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 ="). append (pd_frpid); url.append ("& pr_needResponse ="). append (pr_needResponse); url.append ("& hmac ="). append (hmac); System.out.println (URL); /** Redirect ke yibao*/ response.sendredirect (url.toString ()); kembali nol; } /*** Metode ini adalah metode panggilan balik YIBAO. Kita harus menentukan apakah Yibao memanggil metode ini! * * @param Permintaan * @param Response * @return * @throws servletException * @throws ioException */ string publik kembali (httpservletRequest, httpservletResponse response) lempar servletException, ioException {/ * 1. Dapatkan 11 + 1 */ string p1_merid = "P1." 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"); String hmac = request.getParameter ("hmac"); / * * 2. Verifikasi apakah pengunjung itu yibao! */ Properti props = properti baru (); InputStream input = this.getClass (). GetClassLoader () .getResourceAsstream ("Merchantinfo.properties"); props.load (input); String 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) {// Jika verifikasi gagal request.setAttribute ("msg", "Anda bukan hal yang baik!"); return "f: /jsps/msg.jsp"; }/** 3. Dapatkan pesanan status, tentukan apakah Anda ingin memodifikasi status pesanan, dan menambahkan poin dan operasi bisnis lainnya*/orderservice.zhifu (r6_order); // Dimungkinkan untuk mengoperasikan database, atau mungkin tidak beroperasi! /** 4. Tentukan metode panggilan balik saat ini* Jika point-to-point, Anda perlu memberi umpan balik string yang dimulai dengan keberhasilan*/ if (r9_btype.equals ("2")) {response.getWriter (). Print ("Success"); } / * * 5. Simpan informasi keberhasilan dan meneruskannya ke msg.jsp * / request.setAttribute ("msg", "pembayaran berhasil! Tunggu agar penjual dikirimkan! Anda tunggu ~"); return "f: /jsps/msg.jsp"; } /** * Konfirmasi tanda terima * * @param permintaan * @param respons * @return * @throws servletException * @throws ioException * /string publik konfirmasi (httpservletRequest permintaan, httpserVespons response dan loughon. ke msg.jsp 3. * Simpan informasi yang berhasil dan teruskan ke msg.jsp */ string oid = request.getParameter ("oid"); coba {orderservice.confirm (OID); request.setAttribute ("MSG", "Selamat, transaksi berhasil!"); } catch (orderException e) {request.setAttribute ("msg", e.getMessage ()); } return "f: /jsps/msg.jsp"; } /** * memuat pesanan * * @param permintaan * @param respons * @return * @throws servletException * @throws ioException * /public string load (httpservletRequest request, httpservletpons response) lempar servletException, ioException { / * * 1. Dapatkan Parameter Parameter. dan meneruskan ke /jsps/order/desc.jsp */request.setAttribute ("order", orderservice.load (request.getParameter ("oid"))); return "f: /jsps/order/desc.jsp"; } /** * Pesanan saya * * @param permintaan * @param respons * @return * @throws servletException * @throws ioException * /public string myorders (httpservletRequest request, httpservletResponse respon) Pesanan#MyORDERS (UID) Untuk mendapatkan semua pesanan dari daftar pengguna <FORD> 3. * Simpan daftar pesanan ke bidang permintaan dan maju ke /jsps/order/list.jsp */user user = (user) request.getSession (). getattribute ("session_user"); Daftar <FORD> orderList = orderService.myorders (user.getuid ()); request.setAttribute ("OrderList", OrderList); return "f: /jsps/order/list.jsp"; } /** * Tambahkan pesanan untuk menggunakan mobil di sesi untuk menghasilkan objek pesanan * * @param permintaan * @param response * @return * @throws servletException * @throws IoException * /Public String Add (httpservlequest request, httpservleteSception response) lemparan servletexception 2. 3. Hubungi metode layanan untuk menyelesaikan pesanan 4. * Simpan pesanan ke bidang permintaan dan meneruskan ke /jsps/order/desc.jsp */// Dapatkan keranjang dari cart cart cart = (cart) request.getSession (). GetAttribute ("cart"); // Konversi cart ke objek pesanan/ * * Buat objek pesanan dan atur atribut * * cart -> order */ order order = order baru (); order.setoid (commonutils.uuid ()); // atur nomor order.setOrderTime (new date ()); // atur order.setState (1); // Atur status pesanan ke 1, menunjukkan bahwa pembayaran tidak dibayar pengguna pengguna = (pengguna) request.getSession (). GetAttribute ("session_user"); order.setOwner (pengguna); // Atur pesanan pesanan pesanan. // Lingkarkan melalui semua kartitem dalam cart, gunakan setiap objek cartitem untuk membuat objek orderitem, dan menambahkannya ke koleksi untuk (cartitem cartitem: cart.getcartitems ()) {orderitem oi = orderitem baru (); // set entri pesanan oi.setiid (commonutils.uuid ();//set the Idset (cartitc (commonutils.uUid ();//set Atur jumlah entri oi.setbook (cartitem.getBook ()); // Atur buku oi.setsubtotal (cartitem.getsubtotal ()); // atur subtotal dari entri oi.setorder (order); // atur orde itemlist.add (oi); // add order ke entri order ke orde}} «oi); order.setorderIteMlist (orderItemlist); // bersihkan keranjang belanja cart.clear (); // ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// request.setAttribute ("order", order); return "/jsps/order/desc.jsp"; }}2. Hasilkan pesanan
3. Pesanan saya (periksa berdasarkan pengguna)
4. Muat pesanan (periksa dengan ID)
5. Konfirmasikan tanda terima
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.