Pada bagian sebelumnya, kami menyelesaikan halaman terperinci dari produk dan menggunakan cache sekunder Hibernate untuk memuat halaman terperinci untuk meningkatkan kinerja sistem. Klik artikel untuk dilihat:. Di bagian ini kita mulai melakukan bagian keranjang belanja.
1. Tambahkan tabel baru
Pertama, kami menambahkan beberapa tabel ke database: tabel pengguna, tabel status pesanan, tabel pesanan (tabel keranjang belanja) dan tabel item belanja. Informasi dasar pengguna disimpan di tabel pengguna. Tabel status pesanan terutama menyimpan status pesanan, seperti dikirim. Tabel pesanan terutama menyimpan informasi pengguna dan status pesanan, sehingga terkait dengan tabel pengguna dan tabel status pesanan. Table Item Belanja menyimpan produk tertentu dan pesanannya, sehingga terkait dengan tabel produk dan tabel pesanan. Untuk informasi tabel tertentu, lihat pernyataan SQL berikut:
/*========================================================================================================= ================================================================================== Buat tabel pengguna ( /* Nomor pengguna, pertumbuhan otomatis* / id int kunci primer bukan null auto_increment, /* Nama login pengguna* / login varchar (20), /* Nama asli pengguna* / nama varchar (20), /* Kata sandi login pengguna* / lulus varchar (20), /* Pengguna gender* / seks varchar (20), /* Pengguna*); Email Pengguna (20), 2 Email* / Email Pengguna* / Seks Varchar (20), / / Pengguna Telepon*); /*============================================================ ==============================================================/ /* Tabel: Struktur Keranjang Belanja (Pesanan) Tabel* / /*======================================================================== ========================================================================= ========================================================================= ========================================================================== Buat tabel FORDER ( /* Nomor pesanan, pertumbuhan otomatis* / id int kunci primer bukan null auto_increment, /* Nama penerima* / nama varchar (20), /* nomor telepon penerima* / telepon varchar (20), /* informasi pengiriman* / order /* TOTON TOTAL /* TOTON POSTAL* / TANGGAL DECIMAL (TOTAL / TOTAL / TOTAL) CURRENT CURRENT_TIMESTAM, /* TOTAL / TOTAL / TOTAL / TOTAL / TOTAL / TOTAL / TOTAL / TOTAL) CURRENT CURRENT_TIMESTAMP, /* POSTAL / TOTAL / TOTAL / TOTAL / TOTAL / TOTAL / TOTAL) CURRENT CURRENCET, / TOTAL POSTAL / POSTAL / TOTAL / TOTAL 2) varchar (20), /* Kode pos penerima* / alamat varchar (200), /* status pesanan* / sid int default 1, /* nomor anggota* / uid int, kendala sid_fk Kunci asing (SID) Status Referensi (ID), kendala UID_FK Kunci Asing (UID) Referensi Pengguna (ID)); /*========================================================================================================================================= ============================================================================================================================================= ============================================================================================================================================= =========================================================================================================================================== Price of the product at the time of purchase*/ price decimal(8,2), /* Quantity purchased*/ number int not null, /* Product number*/ pid int, /* This line item, the order number*/ fid int, constraint pid_FK foreign key(pid) references product(id), constraint fid_FK foreign key(fid) references forder(id) );
Kemudian kami mengubah tabel ini menjadi PoJO melalui rekayasa terbalik, jadi kami tidak akan membahas detailnya.
2. Logika Backstage Keranjang Belanja
2.1 Logic of Service Layer
Ketika pengguna menambahkan produk ke keranjang belanja, pertama -tama kita perlu mendapatkan informasi produk melalui ID produk, dan kemudian menambahkan produk ke keranjang belanja. Sebelum menambahkan, pertama -tama kita harus menentukan apakah ada keranjang belanja di sesi saat ini. Jika tidak, pertama -tama kita harus membuat keranjang belanja. Jika demikian, kami akan menambahkan item belanja saat ini ke keranjang belanja. Sebelum menambahkan, kita perlu menentukan apakah barang belanja sudah ada di keranjang belanja. Jika ada, cukup tingkatkan jumlah belanja yang sesuai. Jika tidak ada, tambahkan, maka hitung total harga belanja, dan akhirnya simpan keranjang belanja ke sesi. Lihat diagram di bawah ini untuk seluruh proses:
Selanjutnya, mari kita terapkan logika spesifik, pertama -tama buat dua antarmuka layanan baru: SorderService dan Forderservice. Ada dua metode yang terutama didefinisikan dalam SorderService: Konversi item yang ditambahkan oleh pengguna menjadi item belanja, dan kemudian tambahkan item belanja ke keranjang belanja; FORDERSERVICE terutama mendefinisikan metode menghitung harga total keranjang belanja, sebagai berikut:
// antarmuka sorderService antarmuka publik sorderService memperluas Baseservice <sherder> {// Tambahkan item belanja dan kembalikan keranjang belanja baru Public Fordsorder (Forder Forder, Produk Produk); // Konversi data produk menjadi barang belanja ProductToSOrder Public Public (Produk Produk); } // FORDERSERVICE Antarmuka Antarmuka Publik Forderservice Memperluas BASESERVICE <BRANDER> {// Hitung Total Harga Belanja Publik Ganda Clutotal (Forder Forder); } Kemudian kami mengimplementasikan kedua antarmuka ini secara rinci:
// Kelas Implementasi SorderServiceImpl @Service ("SorderService") Kelas Publik SorderServiceImpl memperluas BASESERVICEIMPL <Sherder> mengimplementasikan SorderService {@Override Public Forder AddSorder (FORDER FORDER, Produk Produk) {Boolean Ishave = false; // Digunakan untuk menandai apakah ada duplikat item belanja // dapatkan item belanja saat ini SORDER SOORDER = ProductToSorder (Produk); // menilai apakah item belanja saat ini duplikat. Jika duplikat, tambahkan kuantitas untuk (Sorder Old: FORDER.GetSorders ()) {if (old.getProduct (). GetId (). Equals (SOERDER.GetProduct (). GetId ()) {// Ada duplikat untuk item belanja, tambahkan kuantitas lama.setnumber (old.getnumber. ishave = true; merusak; }} // Item belanja saat ini tidak ada di keranjang belanja, cukup tambahkan jika (! IsHave) {forder.getSorders (). Add (sore); } return fonder; } @Override Public Sehol ProductToSorder (Produk Produk) {SORDER SOORDER = NEW SERODER (); soorder.setname (product.getName ()); Soorder.setNumber (1); soorder.setPrice (product.getPrice ()); soorder.setProduct (produk); return soorder; }} // Implementasi ForderServiceImpl @Service ("FORDERSERVICE") Kelas Publik ForderServiceImpl memperluas BASESERVICEIMPL <FORDER> mengimplementasikan Forderservice {@Override public clutotal (Forder Forder) {ganda total = 0,0; for (SORDER SOORDER: FORDER.GETSORDERS ()) {Total += Soorder.GetNumber () * Soorder.GetPrice (); } Total pengembalian; }} Maka kita perlu menyuntikkan kedua kacang ini ke dalam basa untuk digunakan oleh Saweraction:
@Controller ("baseaction") @scope ("prototipe") basa kelas publik <t> memperluas tindakan yang mendukung permintaan permintaan, sesi, applicationAware, modelDriven <T> {// hilangkan kode tidak relevan lainnya ... @resource dilindungi ForderService ForderService; @Resource SorderService SorderService yang dilindungi; } Oke, logika lapisan layanan selesai, dan selanjutnya kita akan melakukan bagian aksi:
2.2 Logika Tindakan
Kami membuat peredayaan baru dan mengikuti proses yang ditampilkan pada diagram logika di atas untuk menyelesaikan logika menambahkan keranjang belanja. Kodenya adalah sebagai berikut:
@Controller @scope ("ProtoType") Public Class Sherderaction memperluas basa <sherder> {public string addSorder () {// 1. Dapatkan data produk yang sesuai sesuai dengan produk. Produk Produk = ProductService.get (model.getProduct (). GetId ()); // 2. Tentukan apakah ada keranjang belanja di sesi saat ini. Jika tidak, buat if (session.get ("forder") == null) {// Buat keranjang belanja baru dan simpan di session session.put ("forder", forder baru (hashset baru <sherder> ())); } // 3. Konversi informasi produk menjadi Soorder dan tambahkan ke keranjang belanja (menilai apakah item belanja digandakan) FORDER FORDER = (FORDER) SESSION.get ("FORDER"); FORDER = SOORDERSERVICE.ADDSORDER (FORDER, PRODUK); // 4. Hitung total harga berbelanja FORDER.SetTotal (FORDERSERVICE.CLUTOTAL (FORDER)); // 5. Simpan keranjang belanja baru di session sesi. ("FORDER", FORDER); mengembalikan "showcart"; }} Konfigurasikan file struts.xml:
<action name = "SOERDER_*" METODE = "{1}"> <name result = "showcart">/showcart.jsp </result> </chere>Kemudian lompat ke halaman tampilan keranjang belanja showcart.jsp. Program front-end tentang bagian keranjang belanja di showcart.jsp adalah sebagai berikut:
3. Lompat dari tautan meja depan
Semua bagian latar belakang selesai. Selanjutnya, tambahkan halaman depan detail.jsp ke alamat tautan keranjang belanja untuk mengakses peredam:
Ini akan melompat dengan benar. Mari kita lihat efek spesifik dari halaman tampilan keranjang belanja:
Dengan cara ini, fungsi dasar keranjang belanja kami akan selesai, dan kami akan membuat beberapa perbaikan untuk itu nanti.
Alamat asli: http://blog.csdn.net/eson_15/article/details/51418350
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.