ก่อนหน้านี้เราเสร็จสิ้นตรรกะทางธุรกิจที่เกี่ยวข้องกับหมวดหมู่ผลิตภัณฑ์แล้วเราก็เริ่มทำส่วนผลิตภัณฑ์เฉพาะ
1. สร้างตารางในฐานข้อมูลและโมเดลแผนที่
ก่อนอื่นเราสร้างตารางใหม่ในฐานข้อมูลจากนั้นใช้วิศวกรรมย้อนกลับเพื่อแมปตารางลงในคลาสรุ่นตารางมีดังนี้:
- - สร้างผลิตภัณฑ์ตาราง ( /* หมายเลขผลิตภัณฑ์การเติบโตอัตโนมัติ* /id int คีย์หลักไม่ใช่ null auto_increment, /* ชื่อผลิตภัณฑ์* /ชื่อ varchar (20), /* ราคาผลิตภัณฑ์* /ราคาทศนิยมราคา (8,2), /* รูปภาพผลิตภัณฑ์* /pic varchar (200), /* การเริ่มต้นผลิตภัณฑ์ เป็นผลิตภัณฑ์ที่แนะนำอาจแสดงในหน้าแรกของห้างสรรพสินค้า */ ความคิดเห็นบูล/ *ไม่ว่าจะเป็นผลิตภัณฑ์ที่ถูกต้องหรือไม่อาจแสดงในหน้าแรกของห้างสรรพสินค้า */ เปิดบูล/ *จำนวนหมวดหมู่ของผลิตภัณฑ์ที่อยู่ */ CID
ฉันจะไม่เข้าไปดูรายละเอียดเกี่ยวกับการใช้การทำแผนที่วิศวกรรมย้อนกลับไปยังคลาสรุ่น ฉันพูดถึงก่อนหน้านี้วิธีการใช้วิศวกรรมย้อนกลับเพื่อสร้างแบบจำลอง
2. ทำเลเยอร์บริการและสถาปัตยกรรมการดำเนินการของหมวดหมู่ผลิตภัณฑ์
2.1 สถาปัตยกรรมชั้นบริการสำหรับหมวดหมู่ผลิตภัณฑ์
เช่นเดียวกับหมวดหมู่ก่อนหน้านี้ผลิตภัณฑ์ยังต้องมีบริการในการใช้งานตรรกะทางธุรกิจที่เกี่ยวข้องกับผลิตภัณฑ์ดังนั้นเราต้องเขียนกรอบของผลิตภัณฑ์และผลิตภัณฑ์ที่ให้บริการซึ่งเป็นดังนี้:
// productservice interface สืบทอด baseservice <product> อินเทอร์เฟซสาธารณะ Productservice ขยาย Baseservice <ductions> {} // ProductserviceImpl ใช้ผลิตภัณฑ์ที่ให้บริการด้านการใช้งาน 2.2 โครงสร้างการดำเนินการของหมวดหมู่สินค้าโภคภัณฑ์
ก่อนอื่นเราจำเป็นต้องปรับปรุงคำอธิบายประกอบในชั้นบริการใน baseaction
@Controller ("baseaction") @Scope ("Prototype") ระดับสาธารณะ Baseaction <T> ขยายการกระทำที่ใช้การดำเนินการตามคำขอ, SessionAware, ApplicationAware, ModelDriven <t> {@Resource Productservice Productservice Productservice; // รหัสอื่นถูกละไว้หรือรหัสต้นฉบับ ... } จากนั้นเราเขียนการผลิตเพื่อสืบทอดวิธีการ:
Public Class Productact ขยาย baseaction <ductions> {}ณ จุดนี้สถาปัตยกรรมแบ็กเอนด์ของผลิตภัณฑ์ได้ถูกสร้างขึ้นโดยทั่วไปและขั้นตอนต่อไปคือการปรับปรุงฟังก์ชั่นเฉพาะและตรรกะทางธุรกิจ
3. ทำโครงสร้างพื้นฐานของแผนกต้อนรับให้สมบูรณ์
โครงสร้างพื้นฐานของแผนกต้อนรับส่วนหน้านั้นเหมือนกับหมวดหมู่สินค้าโภคภัณฑ์ มาดูกันว่ามีเอกสารอะไรบ้างสำหรับหมวดสินค้าที่เสร็จแล้ว:
ก่อนอื่นเราคัดลอกสำเนาลงในโฟลเดอร์ผลิตภัณฑ์ตามไฟล์แผนกต้อนรับส่วนหน้าของหมวดหมู่ผลิตภัณฑ์จากนั้นเราทำการเปลี่ยนแปลงที่สอดคล้องกัน มาวิเคราะห์กระบวนการก่อน: ก่อนอื่น index.jsp ถึง aindex.jsp แสดงแถบเมนูทางด้านซ้าย เมื่อคลิกที่การจัดการหมวดหมู่ให้ป้อนหน้าหมวดหมู่/query.jsp เพื่อแสดงข้อมูลหมวดหมู่ผลิตภัณฑ์ทั้งหมดทางด้านขวา ฟังก์ชั่นการค้นหาและการลบอยู่ในหน้านี้ ไม่จำเป็นต้องปรากฏหน้าต่างใหม่เพิ่มหน้าต่างป๊อปอัพ save.jsp และ update.jsp เมื่อคลิกที่การจัดการผลิตภัณฑ์ให้ป้อนหน้าผลิตภัณฑ์/query.jsp เพื่อแสดงข้อมูลผลิตภัณฑ์ทั้งหมดทางด้านขวา ฟังก์ชั่นการค้นหาและการลบจะเสร็จสมบูรณ์ในหน้านี้ การเพิ่มและอัปเดต save.jsp และ update.jsp ป๊อปอัพตามลำดับ ต่อไปเราจะสร้างเฟรมเวิร์กของแต่ละหน้าแล้วกรอกส่วนที่เกี่ยวข้อง
ก่อนอื่นเพิ่มรหัสต่อไปนี้ใน aindex.jsp:
ต่อไปเราทำตามกรอบการค้นหา. jsp:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> มาร์จิ้น: 1px; } .SearchBox {มาร์จิ้น: -3; } </style> <script type = "text/javaScript"> $ (function () {$ ('#dg'). dataGrid ({// เปลี่ยนที่อยู่ URL เป็นวิธีการ queryJoincategory ในการร้องขอ URL การทำโปรตีน เป็นที่ว่างเปล่าแสดงว่าเราต้องการแสดงผลิตภัณฑ์ทั้งหมด กำหนดค่าฟิลด์นี้การเปลี่ยนหน้าจะไม่ส่งผลกระทบต่อรายการที่เลือกเมื่อเปลี่ยนหน้า // คำจำกัดความแถบเครื่องมือเพิ่มลบปุ่มอัปเดตและแถบเครื่องมือค้นหา: [{iconcls: 'ไอคอน-ADD', ข้อความ: 'เพิ่มผลิตภัณฑ์', ตัวจัดการ: ฟังก์ชัน () {// เพิ่มโค้ด trigger}}, '-', {iConcls รหัสทริกเกอร์}}, '-', {iconcls: 'icon-remove', ข้อความ: 'ลบผลิตภัณฑ์', handler: function () {// เพิ่มรหัสทริกเกอร์}}, '-', {// ปุ่มสอบถามไม่ใช่ 'ss-' ss '' ss cr: 'ss cr:' ss cr /> "}], rowstyler: ฟังก์ชั่น (ดัชนี, แถว) {console.info (" ดัชนี " + ดัชนี +", " + แถว) ถ้า (ดัชนี % 2 == 0) {return 'พื้นหลังสี: #fff;'; } else {return 'พื้นหลังสี:#c4e1e1;'; }}, frozencolumns: [[{ฟิลด์: 'ช่องทำเครื่องหมาย', ช่องทำเครื่องหมาย: true}, {ฟิลด์: 'id', ชื่อ: 'หมายเลขผลิตภัณฑ์', ความกว้าง: 100}]], คอลัมน์: [{ฟิลด์: 'ชื่อ', ชื่อ: คำอธิบาย ', ความกว้าง: 100}, {ฟิลด์:' xremark ', ชื่อเรื่อง:' รายละเอียดคำอธิบาย ', ความกว้าง: 100}, {ฟิลด์:' วันที่ ', ชื่อเรื่อง:' เวลาปล่อย ', ความกว้าง: 100}, {ฟิลด์: ปิดใช้งาน = 'จริง' "; } else {return "<input type = 'copbox' disabled = 'true'"; }}}, {ฟิลด์: 'เปิด', ชื่อเรื่อง: 'ผลิตภัณฑ์ที่ถูกต้อง', ความกว้าง: 100, formatter: ฟังก์ชัน (ค่า, แถว, ดัชนี) {ถ้า (ค่า) {return "<อินพุตประเภท = 'ช่องทำเครื่องหมาย' ตรวจสอบ = 'ตรวจสอบ' ปิดใช้งาน = 'จริง'"; } else {return "<input type = 'copbox' disabled = 'true'"; }}}, {ฟิลด์: 'category.type', ชื่อเรื่อง: 'หมวดหมู่ผลิตภัณฑ์', ความกว้าง: 200, //category.type เป็นหมวดหมู่ผลิตภัณฑ์ Formatter: ฟังก์ชั่น (ค่า, แถว, ดัชนี) {if (row.category! = null && row.category.type! = null) // หากหมวดหมู่ผลิตภัณฑ์ไม่ว่างเปล่าให้ส่งคืนหมวดหมู่ผลิตภัณฑ์} else {return "ผลิตภัณฑ์นี้ไม่ได้จัดประเภทเป็นเวลา"; - // แปลงกล่องข้อความสามัญเป็นกล่องข้อความค้นหาแบบสอบถาม $ ('#ss'). searchbox ({// ทริกเกอร์ query query event searcher: ฟังก์ชั่น (ค่า, ชื่อ) {// ค่าแสดงถึงค่าอินพุต // เพิ่มรหัสทริกเกอร์}, พรอมต์: 'โปรดป้อนคำค้นหาคำค้นหา'}); - </script> </head> <body> <table id = "dg"> </table> </body> </html> ต่อไปเราทำวิธี QueryJoincategory ในการผลิต ก่อนหน้านี้เราต้องทำส่วนบริการให้เสร็จสมบูรณ์ เราจะพัฒนามันช้าจากชั้นล่าง:
// Productservice Interface Interface Public Productservice ขยาย Baseservice <Product> {// ข้อมูลการสอบถามข้อมูลผลิตภัณฑ์, หมวดหมู่การจัดหมวดหมู่สาธารณะรายการสาธารณะ <Product> QueryJoincategory (ประเภทสตริง, หน้า int, ขนาด int); // แบบสอบถามโดยใช้ชื่อผลิตภัณฑ์ // สอบถามจำนวนทั้งหมดของบันทึกตามคำหลัก getCount ยาวสาธารณะ (ประเภทสตริง); } @suppresswarnings ("ไม่ได้ตรวจสอบ") @Service ("Productservice") Public Class ProductserviceImpl ขยาย BaseserviceImpl <Products> ใช้ Productservice {@Override รายการสาธารณะ <ผลิตภัณฑ์> queryjoincategory (ชื่อสตริง return getSession (). createquery (hql) .setstring ("ชื่อ", "%" + ชื่อ + "%") .setFirstresult ((หน้า 1) * ขนาด) // show .setMaxResults (ขนาด) // แสดงหลาย. } @Override สาธารณะยาว getCount (ชื่อสตริง) {String hql = "เลือกนับ (p) จากผลิตภัณฑ์ p โดยที่ p.name ชอบ: ชื่อ"; return (long) getSession (). createquery (hql) .setstring ("ชื่อ", "%" + name + "%") .uniqueresult (); // ส่งคืนบันทึก: จำนวนระเบียนทั้งหมด}} วิธีการ QueryJoincategory ในการผลิตสามารถทำได้:
@Controller ("productaction") @Scope ("Prototype") Public Class ProductAction ขยาย baseaction <ductions> {Public String queryJoincategory () {system.out.println ("ชื่อ:" + model.getName ()); System.out.println ("หน้า:" + หน้า); System.out.println ("แถว:" + แถว); // ใช้ในการจัดเก็บข้อมูล pagemap ที่เพจสำรอง = ใหม่ hashmap <string, object> (); // สอบถามข้อมูลที่สอดคล้องกันตามคำหลักและพารามิเตอร์เพจพารามิเตอร์ <product> ProductList = Productservice.QueryJoincategory (model.getName (), หน้า, แถว); pagemap.put ("แถว", รายการผลิตภัณฑ์); // ที่เก็บข้อมูลในรูปแบบ JSON // สอบถามจำนวนบันทึกทั้งหมดตามคำหลัก Long Total = Productservice.getCount (model.getName ()); // ที่เก็บข้อมูลในรูปแบบ JSON ส่งคืน "JSONMAP"; - ถัดไปกำหนดค่าใน struts.xml และกระบวนการเดียวกันกับหมวดหมู่ผลิตภัณฑ์ก่อนหน้า จากที่นี่คุณจะเห็นได้ว่าหลังจากพัฒนาหนึ่งรายการต่อไปนี้จะเร็ว ๆ นี้:
<action name = "product_*" method = "{1}"> <ชื่อผลลัพธ์ = "jsonMap" type = "json"> <param name = "root"> pagemap </param> <param name = "excludeProperties"> <! ภาพหน้าจอต่อไปนี้ของส่วนนี้-> </param> </result> </action>ด้วยวิธีนี้โปรแกรมพื้นหลังจะถูกเขียนจากนั้นเปิด Tomcat และทดสอบ เมื่อเราคลิกที่การจัดการผลิตภัณฑ์ในแถบเมนูทางด้านซ้ายหน้าต่างต่อไปนี้ทางด้านขวาจะปรากฏขึ้น:
ด้วยวิธีนี้เราได้เสร็จสิ้นกรอบของหน้าต่างการจัดการผลิตภัณฑ์
ที่อยู่ดั้งเดิม: http://blog.csdn.net/eson_15/article/details/51354932
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น