CRUD ist die Abkürzung von Erstellen, Lesen, Aktualisieren und Löschen und ein Mikrokosmos gewöhnlicher Anwendungen. Wenn Sie das CRUD -Schreiben eines Frameworks beherrschen, können Sie das Framework verwenden, um gewöhnliche Anwendungen zu erstellen. Wenn Sie das neue Framework verwenden, um OLTP -Anwendungen (Online -Transaktionsverarbeitung) zu entwickeln, werden Sie zunächst untersuchen, wie CRUD geschrieben wird. Dies ähnelt der Art und Weise, wie Menschen beim Erlernen neuer Programmiersprachen gerne "Hello World" schreiben.
In diesem Artikel soll die Entwicklung von CRUD zu Struts 2 beschrieben werden. Für die Einfachheit und das einfache Verständnis werde ich daher keine Zeit mit Datenbankoperationen verbringen. Stattdessen simuliert eine Hash -Tabelle (Hash -Karte), die die Datenbank simuliert.
Spezifische Implementierung
Schauen wir uns zunächst das "gefälschte" DAO (Datenzugriffsobjekt, Datenzugriffsobjekt) an, der Code ist wie folgt:
Paket -Tutorial.dao; Import Java.util.Collection; Import Java.util.Concurrent.ConcurrentHasMap; Import Java.util.Concurrent Bookdao (); data = new Concurrenthashmap <string, book> (); data.put ("978-0735619678", neues Buch ("978-0735619678", "Code Complete, Second Edition", 32.99); Buch ("978-0596007867", "The Art of Project Management", 35,96); Data.put ("978-0201633610", neues Buch ("978-0201633610", "Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software", 43.19). Buch ("978-0596527341", "Informationsarchitektur für das World Wide Web: Entwerfen großer Websites", 25.19); oder {data.remove (isbn);} public void removeBooks (string [] isbn) {für (string isbn: isbn) {data.remove (isbn);}}}Listing 1 SRC/Tutorial/Dao/Bookdao.java
Ich glaube, dass für den obigen Code keine Erklärung erforderlich ist. Ich verwende die ConcurrentMap -Datenstruktur, um Buchobjekte zu speichern, die hauptsächlich das Abrufen und die Speicherung von Buchobjekten erleichtern. Darüber hinaus habe ich die Datenvariable so festgelegt, dass sie statisch eindeutig ist, um die Datenbank der Anwendung zu simulieren.
Als nächstes kommt die Datenmodell -Buchklasse, der Code ist wie folgt:
Paket -Tutorial.Model; Public Class Book {private String isbn; privater String -Titel; privater Doppelpreis; public book () {} public book (String isbn, String -Titel, Doppelpreis) {this.isbn = isBn; this.title = title; isbn;} public double getPrice () {Return Price;} public void setPrice (Doppelpreis) {this.price = price;} public String gettitle () {return title;} public void settitle (String title) {this.title = title;}}}}}}}}}}}}}Listing 2 SRC/Tutorial/Modell/Book.java
Die Buchklasse hat drei Attribute: ISBN, Titel und Preis stellen die Nummer, den Namen und den Preis des Buches dar. Die Zahl wird verwendet, um das Buch eindeutig zu identifizieren (entspricht dem Primärschlüssel in der Datenbank).
Schauen wir uns dann den Code des Aktionskurs an:
Paket -Tutorial.Action; Import Java.util.Collection; Tutorial importieren.dao.bookdao; Tutorial import.model.book; book;private Collection<Book> books;private BookDao dao = BookDao.getInstance();public Book getBook() {return book;}public void setBook(Book book) {this.book = book;}public String getIsbn() {return isbn;}public void setIsbn(String isbn) {this.isbn = isbn;}public String[] getIsbnns() {return isbn;} public void setisbnns (String [] isbnns) {this.isbns = isbnns;} public collection <Book> getBooks () {return books;} public void setbooks (Sammlung <Book> books) {this.books = books;} öffentlich String () {) {) {) {) {) {) {) book = dao = dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao. {books = dao.getBooks (); return scfolg;} public String store () {dao.storebook (book); return Erfolg;} public string remove () {if (null! = isbn) {Dao.RemoveBook (isbn);Listing 3 src/tutorial/action/bookAction.java
In der Buchungklasse wird das Attribut ISBN verwendet, um die Anzahl der zu bearbeitenden oder gelöschten Bücher darzustellen. Das Attribut ISBNS wird verwendet, um das Zahlenarray der zu gelöschten Bücher darzustellen, das Attributbuch repräsentiert das aktuelle Buch und die Attributbücher repräsentieren die aktuelle Buchliste. BookAction verfügt über vier Aktionsmethoden, Laden, Listen, Speichern und Entfernen, dh Crud ist in BookAction implementiert.
Als nächstes kommt der Aktionskonfigurationscode:
<? extends="struts-default" namespace="/Book"><action name="List" method="list"><result>List.jsp</result></action><action name="Edit" method="load"><result>Edit.jsp</result></action><action name="Store" method="store"><result type="redirect">List.action</result></action></action><action name = "entfernen" method = "remove"> <result type = "redirect"> list.action </result> </action> </package> </struts>
Listing 4 src/struts.xml
In der obigen Konfiguration habe ich vier Aktionsdefinitionen verwendet. Sie sind alle im Namespace "/Buch". Auf diese Weise kann ich die vier Aktionsmethoden der Buchaktion für CRUD -Operationen von "http: // localhost: 8080/struts2_crud/book/list.action", "http: // localhost: 8080/struts2_crud/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/book/boy. "http: // localhost: 8080/struts2_crud/book/remove.action". Dies ist natürlich nur eine persönliche Präferenz. Sie können nur eine Aktion definieren (unter der Annahme, dass der Name "Buch" ist), und dann über "http: // localhost: 8080/struts2_crud/book! List.action" zugreifen. Weitere Informationen finden Sie unter "Struts 2.0 Action Erklärung". Außerdem verwende ich ein Ergebnis der Typ -Umleitung (Weiterleitung), da ich nach Abschluss der Bearbeitung oder Löschung zur Listenseite zurückkehren möchte.
Hier ist der Code für die Listenseite:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Book List</title><style type="text/css">table {border: 1px Solid Black; Border-Collapse: Collapse;} TABELLE THE TR TH {BORE: 1PX Solid Black; Polster: 3px; Hintergrundfarbe: #ccccc;} Tabelle tbody td {Border: 1PX Solid Black; Padding: 3px;} </style> </head> <H2> Buchliste </H2> <S: Form Action = "REIGHT". cellpacing = "0"> <Thead> <tr> <TH> SELECT </TH> <TH> ISBN </TH> <TH> TITEL </TH> <TH> PREIS </TH> <TH> Operation </th> </tr> </thead> <tbody> <s: iterator value = "books"> </tr> </thead> <tbody = "pechbox" "name" name "is" is ". /> ' /> < /td> <td> <s: Eigenschaft value = "isbn" /> /> < /td> <td> $ <s: Eigenschaftswert = "price" /> < /td> <td> <a href =' <S: url action = " href = '<s: url action = "remove"> <s: param name = "isbn" value = "isbn"/> </s: url>'> delete </a> </td> </tr> </s: iterator> </tbody> </table> <s: sure value = "remove"/> <a href = " </body> </html>Listing 5 Webcontent/book/list.jsp
Im obigen Code ist erwähnenswert, dass ich die Themeneigenschaft in der <S: Form> -Tag auf "einfach" festgelegt habe, damit sie das Standard -Tabellenlayout abbrechen kann. Früher fragten mich einige Freunde: "Was soll ich tun, wenn ich nicht möchte, dass der Sendenknopf rechts platziert wird?" Das obige Schwitzen ist eine der Antworten. Natürlich ist es besser, ein Thema anzupassen und standardmäßig auf die gesamte Website anzuwenden, damit Sie einen einheitlichen Site -Stil erhalten. Ich werde dies in zukünftigen Artikeln ausführlich beschreiben.
Der Seitencode zum Bearbeiten oder Hinzufügen von Büchern lautet wie folgt:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Book</title></head><body> <h2><s:if test="null == book "> Buch hinzufügen < /s: if> <s: else> book < /s: else> < /h2> <s: Form action =" Store "> <s: textfield name =" book /> </s: Form> </body> </html>
Listing 6 Webcontent/book/edit.jsp
Wenn das Buch null ist, bedeutet dies, dass die Seite zum Hinzufügen von Büchern verwendet wird, und umgekehrt ist die Bearbeitungsseite.
Um alle für die Ausführung der Beispiele zu erleichtern, habe ich wie folgt auch den Code von Web.xml gepostet:
<? Version = "2.4" xmlns = "http://java.sun.com/xml/ns/j2ee" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><Display-name>struts 2 FileUpload </display-name> <filter> <filter-name> struts2 </filter-name> <filterklasse> org.apache.struts2.dispatcher.filterDispatcher </Filter-Klasse> </filter> <filtermapping> <Filter-name> Struts2 </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <Welcome-File-List> <Welcome-File> Index.html </Welcome-Datei
Listing 7 Webcontent/web-inf/web.xml
Die Aufgabe erfolgt, die folgende Ausführung der Anwendung, Typ: http: // localhost: 8080/struts2_crud/book/list.action Im Browser und die in der folgende Abbildung gezeigte Seite erscheint:
Listing 8 Listing -Seite
Klicken Sie auf "Buch hinzufügen" und die in der folgende Abbildung gezeigte Seite wird angezeigt:
Auflistung 9 Buchseite hinzufügen
Kehren Sie zur Liste zurück und klicken Sie auf "Bearbeiten", und auf die in der folgende Abbildung gezeigte Seite wird angezeigt:
Auflistung 10 Buchseite bearbeiten
Zusammenfassen
In diesem Artikel wird nur kurz die CRUD -Implementierungsmethode von Struts 2 vorgestellt, so dass viele Funktionen nicht implementiert werden, wie beispielsweise Internationalisierung und Datenüberprüfung. Sie können es basierend auf dem obigen Beispiel verbessern, und es ist auch gut zu üben. Wenn Sie nicht verstehen, hinterlassen Sie mir bitte eine Nachricht. Der Herausgeber wird alle rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin Network -Website!