Zuvor haben wir die Geschäftslogik im Zusammenhang mit Produktkategorien abgeschlossen und dann begannen wir, den spezifischen Produktteil zu betreiben.
1. Erstellen Sie Tabellen in der Datenbank- und Kartenmodellen
Zunächst erstellen wir eine neue Tabelle in der Datenbank und verwenden dann Reverse Engineering, um die Tabelle in eine Modellklasse zuzuordnen. Die Tabelle lautet wie folgt:
/*======================================================================== ==================================================================ieben/ TABLE -Produkt erstellen ( /* Produktnummer, automatisches Wachstum* /ID int Primärschlüssel Not Null Auto_increment, /* Produktname* /Name Varchar (20), /* Produktpreis* /Preisdezimal (8,2), /* Produktbild* /Pic Varchar (200), /* Produktbrief Introvection* /Bemerkung LongTextext, /* Produktdetails. Unabhängig davon, ob es sich um ein empfohlenes Produkt handelt, kann es auf der Startseite des Einkaufszentrums */ Comment Bool angezeigt werden,/ *, ob es sich um ein gültiges Produkt handelt, kann es auf der Homepage des Einkaufszentrums angezeigt werden.
Ich werde keine Details über die Verwendung von Reverse Engineering Mapping zur Modellklasse eingehen. Ich habe früher erwähnt, wie man Reverse Engineering verwendet, um Modell zu generieren.
2. Vervollständigen Sie die Serviceschicht und die Aktionsarchitektur der Produktkategorie
2.1 Service -Layer -Architektur für Produktkategorien
Wie in der vorherigen Kategorie muss auch das Produkt über einen Service verfügen, um die produktbezogene Geschäftslogik zu betreiben. Daher müssen wir einen Rahmen für Productsservice und ProductServiceImpl schreiben, was wie folgt lautet:
//ProductService interface inherits BaseService<Product> public interface ProductService extends BaseService<Product> { } //ProductServiceImpl implements ProductServiceImpl<Product> class inherits BaseServiceImpl<Product> and implements the above ProductService interface @Service("productService") public class ProductServiceImpl extends BaseServiceImpl<Product> implements ProductService { } 2.2 Aktionsstruktur der Warenkategorien
Zunächst müssen wir die Annotationen auf der Serviceschicht in der Basisreaktion verbessern
@Controller ("Baseaction") @Scope ("Prototyp") Basisanlagen der öffentlichen Klasse <T> erweitert ActionVectupports RequestAware, SessionAware, ApplicationAware, modelldelen <T> {@Resource Producted Producted Producted ProductService ProductService; // Ein anderer Code wird weggelassen oder der ursprüngliche Code ...} Dann schreiben wir eine Produktaktion, um die Methode zu erben:
ProductAction für öffentliche Klasse erweitert Basisaction <produkt> {}Zu diesem Zeitpunkt wurde die Backend -Architektur des Produkts im Grunde genommen gebaut, und der nächste Schritt besteht darin, die spezifischen Funktionen und die Geschäftslogik zu verbessern.
3. Vervollständigen Sie die Grundstruktur der Rezeption
Die Grundstruktur der Rezeption entspricht der der Warenkategorie. Schauen wir uns an, welche Dokumente für die fertige Rohstoffkategorie verfügbar sind:
Wir kopieren zunächst eine Kopie in den Produktordner basierend auf den Rezeptionsdateien der Produktkategorie und nehmen dann entsprechende Änderungen vor. Lassen Sie uns zunächst den Prozess analysieren: Index.jsp zu AIndex.jsp Zeigen Sie die Menüleiste links an. Geben Sie beim Klicken auf die Kategorieverwaltung die Seite Kategorie/query.jsp ein, um alle Produktkategorieninformationen rechts anzuzeigen. Die Such- und Löschfunktionen finden Sie auf dieser Seite. Es ist nicht erforderlich, ein neues Fenster aufzunehmen, ein Popup Save.jsp-Fenster und das Fenster "Update.jsp" hinzuzufügen. Geben Sie beim Klicken auf die Produktverwaltung die Seite "Product/query.jsp" ein, um alle Produktinformationen auf der rechten Seite anzuzeigen. Die Such- und Löschfunktionen sind auf dieser Seite abgeschlossen. Hinzufügen und Aktualisieren von Save.jsp und update.jsp. Als nächstes erstellen wir den Framework jeder Seite und füllen dann den entsprechenden Teil aus.
Fügen Sie zunächst den folgenden Code in aindex.jsp hinzu:
Als nächstes vervollständigen wir das Framework von query.jsp:
<%@ page Language = "java" import = "java.util. Rand: 1PX; } .searchbox {margin: -3; } </style> <script type = "text/javaScript"> $ (function () {$ ('#dg'). datagrid ({// Die URL -Adresse in QueryJoIncategory -Methode in der Anforderung productAction url: 'product_queryjoincategory.Action', loadmsg: 'loading. Der Parameterwert ist leer und zeigt an, dass wir alle Produkte anzeigen möchten. Aktualisieren. function () {// Triggercode hinzufügen}}, '-', {iconcls: 'icon-remove', text: 'produkt löschen', Handler: function () {// Triggercode hinzufügen}}, '-'-', {// Die Abfrage-Taste ist kein LinkButton, it syntax, aber es unterstützt auch das sht' ss. name = 'ssrach' /> "}], rowstyler: function (index, row) {console.info (" index " + index +", " + row) if (index % 2 == 0) {return 'Hintergrund-Color: #fff;'; } else {return 'background-color:#c4e1e1;'; } }, frozenColumns:[[ {field:'checkbox',checkbox:true}, {field:'id',title:'Product number',width:100} ]], columns:[[ {field:'name',title:'Product name',width:100}, {field:'price',title:'Product price',width:100}, {field:'remark',title:'simple 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' deaktiviert = 'true' "; } else {return "<input type = 'CheckBox' deaktiviert = 'true'"; }}}. } else {return "<input type = 'CheckBox' deaktiviert = 'true'"; }}}. // Wenn die Produktkategorie nicht leer ist, geben Sie die Produktkategorie zurück} else {return "Dieses Produkt wird vorerst nicht klassifiziert"; }}}]}); // Das ordentliche Textfeld in ein Textfeld für Abfragen umwandeln $ ('#ss'). SearchBox ({// Trigger -Abfrageereignisereignisseckiger: Funktion (Wert, Name) {// Wert repräsentiert den Eingabewert // Fügen Sie Triggercode hinzu}, fordern Sie auf: 'Bitte geben Sie das Such -Keyword'} ein. }); </script> </head> <body> <table id = "dg"> </table> </body> </html> Als nächstes vervollständigen wir die QueryJoIncategory -Methode in der ProduktAktion. Vorher müssen wir den Serviceteil abschließen. Wir werden es langsam von der unteren Schicht entwickeln:
// ProductService Interface Public Interface ProductService erweitert BaseService <produkt> {// Produktinformationen abfragen, kaskadierende Kategorien öffentliche Liste <Product> queryJoIncategorie (String -Typ, int Seite, int Größe); // Abfragen Sie den Produktnamen an // Abfragen Sie die Gesamtzahl der Datensätze basierend auf Schlüsselwörtern. } @SuppressWarnings ("Unbekämpft") @Service ("Products Service") PUBLIC CLASSELSPRODUCTServiceImpl erweitert BaseServiceImpl <produkts> implementiert ProductService {@Override Public List <Produkt> AbfragejoIncategorie (String -Name, intage, int Größe) {String hql = von Product Petch links links. return getSession (). createEquery (HQL) .setString ("Name", "%" + name + "%") .setFirstresult ((Seite) * Größe) // setMaxResults (Größe) // mehrere .List () anzeigen; } @Override public Long getCount (String -Name) {String hql = "Wählen Sie Count (p) aus Produkt p WHERE P.NAME LIEBEN: Name"; return (long) getSession (). createEquery (HQL) .SetString ("Name", "%" + name + "%") .unikeresult (); // einen Datensatz zurückgeben: Gesamtzahl der Datensätze}} Die Queryjoincategory -Methode in ProduktAktion kann abgeschlossen werden:
@Controller ("productAction") @Scope ("Prototyp") ProductAction erweitert Baseaction <Product> {public String queryjoincategorie () {System.out.println ("Name:" + model.getName ()); System.out.println ("Seite:" + Seite); System.out.println ("Zeilen:" + Zeilen); // verwendet zum Speichern von PAGED Data pagemap = new Hashmap <String, Object> (); // Die entsprechenden Daten nach Schlüsselwörtern und Paging -Parametern Liste <produkts> productList = productservice.queryjoincategory (model.getName (), Seite, Zeilen) abfragen; pagemap.put ("Zeilen", Produktliste); // Speicherung im JSON -Format // Die Gesamtzahl der Datensätze basierend auf Schlüsselwörtern long Total = Productsservice.getCount (model.getName ()) abfragen; // Speicherung im JSON -Format return "JSONMAP"; }} Konfigurieren Sie es als Nächstes in Struts.xml und dem gleichen Prozess wie die vorherige Produktkategorie. Von hier aus können Sie sehen, dass die folgende nach der Entwicklung nach der Entwicklung bald: bald sein wird:
<action name = "product_*" method = "{1}"> <result name = "jsonmap" type = "json"> <param name = "root"> pagemap </param> <param name = "ausschließend ausschließt. Der folgende Screenshot dieses Teils-> </param> </result> </action>Auf diese Weise wird das Hintergrundprogramm geschrieben, dann Tomcat geöffnet und testen. Wenn wir in der Menüleiste links auf die Produktverwaltung klicken, wird das folgende Fenster rechts angezeigt:
Auf diese Weise haben wir den Rahmen des Produktmanagementfensters abgeschlossen.
Originaladresse: http://blog.csdn.net/eson_15/article/details/51354932
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.