Sebelumnya, kami menyelesaikan logika bisnis yang terkait dengan kategori produk, dan kemudian kami mulai melakukan bagian produk tertentu.
1. Buat tabel dalam model database dan peta
Pertama, kami membuat tabel baru dalam database, dan kemudian menggunakan Reverse Engineering untuk memetakan tabel ke dalam kelas model, tabelnya adalah sebagai berikut:
/*======================================================================= =======================================================================/ create table product ( /* Product number, automatic growth */ id int primary key not null auto_increment, /* Product name*/ name varchar(20), /* Product price*/ price decimal(8,2), /* Product picture*/ pic varchar(200), /* Product brief introduction*/ remark longtext, /* Product details*/ xremark longtext, /* Product production date*/ date timestamp default CURRENT_TIMESTAMP, / * Apakah itu produk yang disarankan, itu dapat ditampilkan di halaman beranda mal * / komentar bool, / * apakah itu produk yang valid, dapat ditampilkan di halaman beranda mal * / bool terbuka, / * Kategori Kategori produk (ID);
Saya tidak akan membahas detail tentang penggunaan pemetaan rekayasa terbalik ke kelas model. Saya sebutkan sebelumnya cara menggunakan rekayasa terbalik untuk menghasilkan model.
2. Lengkapi lapisan layanan dan arsitektur aksi dari kategori produk
2.1 Arsitektur Lapisan Layanan untuk Kategori Produk
Seperti kategori sebelumnya, produk juga perlu memiliki layanan untuk mengoperasikan logika bisnis terkait produk, jadi kami harus menulis kerangka kerja ProductService dan ProductServiceImpl, yaitu sebagai berikut:
// ProductService Interface mewarisi BASESERVICE <product> Public Interface ProductService Memperluas BASESERVICE <Product> {} // ProductServiceImpl mengimplementasikan ProductServiceImpl <product> Kelas BASESERVICEIMPL <Product> dan mengimplementasikan produk -produk di atas. 2.2 Struktur Tindakan Kategori Komoditas
Pertama, kita perlu meningkatkan anotasi pada lapisan layanan di basa
@Controller ("BaseAction") @Scope ("Prototipe") Basis kelas publik <T> Memperluas ActionSupport mengimplementasikan permintaan, sessionAware, ApplicationAware, ModelDriven <T> {@resource ProductService ProductService; // kode lain dihilangkan, atau kode asli ...} Kemudian kami menulis produksi untuk mewarisi metode ini:
ProductAction kelas publik memperluas basa <product> {}Pada titik ini, arsitektur backend dari produk pada dasarnya telah dibangun, dan langkah selanjutnya adalah meningkatkan fungsi spesifik dan logika bisnis.
3. Lengkapi struktur dasar meja depan
Struktur dasar meja depan sama dengan kategori komoditas. Mari kita lihat dokumen apa yang tersedia untuk kategori komoditas jadi:
Kami pertama -tama menyalin salinan ke folder produk berdasarkan file meja depan dari kategori produknya, dan kemudian kami membuat perubahan yang sesuai. Mari kita analisis proses terlebih dahulu: pertama, index.jsp ke aindex.jsp menampilkan bilah menu di sebelah kiri. Saat mengklik manajemen kategori, masukkan halaman kategori/query.jsp untuk menampilkan semua informasi kategori produk di sebelah kanan. Fungsi pencarian dan penghapusan ada di halaman ini. Tidak perlu memunculkan jendela baru, menambahkan jendela Save.jsp pop-up, dan update.jsp window. Saat mengklik manajemen produk, masukkan halaman produk/kueri.jsp untuk menampilkan semua informasi produk di sisi kanan. Fungsi pencarian dan penghapusan diselesaikan di halaman ini. Menambahkan dan memperbarui save.jsp dan update.jsp masing -masing muncul. Selanjutnya, kami akan membangun kerangka kerja setiap halaman dan kemudian mengisi bagian yang sesuai.
Pertama, tambahkan kode berikut di AIndex.jsp:
Selanjutnya, kami menyelesaikan kerangka kerja query.jsp:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en"> <html> <head> <%@ termasuk file = "/public.jsp." {html> <head> <%@ termasuk file = "/head.jsp. 1px; } .searchbox {margin: -3; } </style> <script type="text/javascript"> $(function(){ $('#dg').datagrid({ // Change the url address to queryJoinCategory method in the request productAction url:'product_queryJoinCategory.action', loadMsg:'Loading......', queryParams:{name:''},// Here the parameter is changed to name, the parameter value kosong, menunjukkan bahwa kami ingin menampilkan semua produk configure this field, page change will not affect the selected items when turning the page //toolbar definition Add, delete, update buttons and search box toolbar: [{ iconCls: 'icon-add', text:'Add product', handler: function(){ //Add trigger code} },'-',{ iconCls: 'icon-edit', text:'Update product', handler: function(){ //Add Kode pemicu}}, '-', {iconcls: 'ikon-remove', teks: 'hapus produk', handler: function () {// tambahkan kode pemicu}}, '-', {// tombol kueri bukan tautan, sintaks, tetapi juga mendukung tag parsing html tag: "Sntax =" SPET = "SIPPUT =" SNS = "SIP =" SINTAX, tetapi SINTAX juga mendukung tag parsing HTML TACK: "SIP =" SEPPUT = "SNS =" SNS = "SNS =" SNS = "SNS =" SIP = "SINTAX:" SIPS = "SNS =" SYPUT = "SNS =" SINTAX: "SIPS =" SINTAX LINK = " name = 'ssrach' /> "}], rowStyler: function (index, row) {console.info (" index " + index +", " + row) if (index % 2 == 0) {return 'background-color: #fff;'; } else {return 'background-color:#c4e1e1;'; }}, frozencolumns: [[{{field: 'centang kotak', kotak centang: true}, {field: 'id', judul: 'nomor produk', lebar: 100}]], kolom: [[{{field: 'judul', 'judul', 'Produk', lebar: 100}, {Field: 'Price:' Judul ',' Judul ',' Field: ', 100}, {Field:' Judul ', Judul', Judul ', Judul', WIDTH: 100}, {Field: {Field: 'Judul: description',width:100}, {field:'xremark',title:'Detailed description',width:100}, {field:'date',title:'Release time',width:100}, {field:'commend',title:'Recommended product',width:100, formatter: function(value,row,index){ if(value) { return "<input type='checkbox' checked='checked' dinonaktifkan = 'true' "; } else {return "<input type = 'checkbox' dinonaktifkan = 'true'"; }}}, {field: 'open', title: 'valid produk', lebar: 100, formatter: function (value, row, index) {if (value) {return "<input type = 'checkbox' checked = 'checked' disabled = 'true'"; } else {return "<input type = 'checkbox' dinonaktifkan = 'true'"; }}}, {field: 'Category.Type', title: 'Kategori Produk', Lebar: 200, //category.Type adalah formatter kategori produk: function (value, row, index) {if (row.category! = null && row.category.type! = null) {row.category.category.type; // Jika kategori produk tidak kosong, kembalikan kategori produk} else {return "Produk ini tidak diklasifikasikan untuk saat ini"; }}}]]}); // Konversi kotak teks biasa menjadi kotak teks pencarian kueri $ ('#ss'). SearchBox ({// Trigger Query Event Event Event: Function (nilai, nama) {// Nilai mewakili nilai input // Tambahkan kode pemicu}, prompt: 'Harap masukkan kata kunci pencarian'}); }); </script> </head> <body> <Table id = "dg"> </able> </body> </html> Selanjutnya, kami menyelesaikan metode queryjoincategory di ProductAction. Sebelum ini, kita harus menyelesaikan bagian layanan. Kami akan mengembangkannya perlahan dari lapisan bawah:
// ProductService Antarmuka Antarmuka Publik ProductService Memperluas BASESERVICE <Product> {// Informasi Produk Kueri, Kategori Cascading Daftar Publik <Product> QueryJoincategory (tipe string, halaman int, ukuran int); // kueri menggunakan nama produk // kueri Total jumlah catatan berdasarkan kata kunci public long getCount (tipe string); } @SuppressWarnings ("Uncecked") @Service ("ProductService") ProductServiceImpl memperluas BaseserviceImpl <product> mengimplementasikan ProductService {@Override Daftar Publik <product> Queryjoincategory (nama string, int halaman, ukuran P. return getSession (). Createqueery (HQL) .Setstring ("Name", "%" + Name + "%") .setFirStresult ((Page-1) * size) // Show .setMaxResults (ukuran) // tunjukkan beberapa .list (); } @Override public long getCount (nama string) {string hql = "pilih count (p) dari produk p di mana p.name seperti: name"; return (long) getSession (). Createquery (HQL) .setstring ("name", "%" + name + "%") .Utaqueresult (); // Kembalikan catatan: Jumlah total catatan}} Metode QueryJoincategory dalam ProductAction dapat diselesaikan:
@Controller ("ProductAction") @scope ("ProtoType") ProductAction kelas publik memperluas basa <product> {public string queryjoIncategory () {System.out.println ("Name:" + Model.getName ()); System.out.println ("Halaman:" + Halaman); System.out.println ("Baris:" + baris); // Digunakan untuk menyimpan data paged pagemap = hashmap baru <string, object> (); // query Data yang sesuai sesuai dengan kata kunci dan daftar parameter paging <product> ProductList = ProductService.QueryJoIncategory (model.getName (), halaman, baris); pagemap.put ("baris", daftar produk); // penyimpanan dalam format JSON // query Jumlah total catatan berdasarkan kata kunci Long Total = ProductService.getCount (model.getName ()); // penyimpanan dalam format JSON return "jsonmap"; }} Selanjutnya, konfigurasikan di struts.xml, dan proses yang sama dengan kategori produk sebelumnya. Dari sini, Anda dapat melihat bahwa setelah mengembangkannya, yang berikut akan segera:
<Action name = "Product_*" Method = "{1}"> <name hasil = "jsonmap" type = "json"> <param name = "root"> pagemap </param> <param name = "excludeproPerties"> <!-Baris [0] .category.account-> <!-Saring semua masalah Lozy. Tangkapan tangkapan layar berikut dari bagian ini-> </param> </hasilnya> </chere>Dengan cara ini, program latar belakang ditulis, lalu buka Tomcat dan mengujinya. Ketika kami mengklik manajemen produk di bilah menu di sebelah kiri, jendela berikut di sebelah kanan akan muncul:
Dengan cara ini, kami telah menyelesaikan kerangka kerja jendela manajemen produk.
Alamat asli: http://blog.csdn.net/eson_15/article/details/51354932
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.