Einige mögen es Legacy nennen, aber dies ist ein einführender Artikel über Struts 2. In letzter Zeit haben sich neue clientseitige Technologien entwickelt, und einige Leute mögen sagen, dass die serverseitige Technologie selbst, geschweige denn Struts2, ein Vermächtnis ist.
Wenn Sie jedoch auf etwas stoßen, das gerade in Betrieb ist, müssen Sie es wirklich verstehen. Ich bin kürzlich auf ein solches Muster gestoßen und habe intensiv studiert.
Als ich versuchte, HelloWorld zu erstellen, fiel es mir schwer, ein Dokument zu finden, das alles abdeckte. Daher werde ich diesen Artikel als Erinnerung an diese Zeit schreiben.
Struts2 scheint viele Upgrades zu erhalten, auch wenn es sich um ein Vermächtnis handelt, und es ist noch neu. Zum Zeitpunkt des Schreibens dieses Artikels möchte ich über Hello World vorstellen, wie Sie eine Struts2-Entwicklungsumgebung mit der neuesten Version erstellen können.
Ein Webanwendungsframework, das das in Java implementierte MVC-Modell verwendet. Das MVC-Modell ist die Idee, Modell (Daten), Ansicht (Bildschirm) und Controller (Geschäftslogik) zu trennen. Obwohl Struts2 eine Funktion zum Trennen von V und C hat, bietet es keine Funktion zum Trennen von M von C, so dass dies häufig durch die separate Einführung eines ODER-Mappers usw. realisiert wird.
In der Vergangenheit gab es ein Framework namens Struts, und es gab eine Zeit, in der es vorherrschte, aber Struts 2 ist grundlegend anders. Der ursprüngliche Entwicklungsprozess ist völlig anders. Es scheint, dass er unter dem Namen "WebWork2" entwickelt wurde und dieser Name mit dem Ende der Unterstützung für Struts in Struts2 geändert wurde.
Struts2 wird weiterhin unterstützt und neue Versionen werden ziemlich oft veröffentlicht.
Es ist ein wenig abseits des Themas, aber durch die Bereitstellung von Struts 2 in großen Webanwendungen wie Unternehmenssystemen können Sie Ihre Produktivität erheblich verbessern. Obwohl es nicht auf Struts2 beschränkt ist, ist es durch die Einführung eines Frameworks möglich, die Unterschiede in den Implementierungsrichtlinien aufgrund der Gewohnheiten der Entwickler zu absorbieren und auszugleichen. Der Autor ist jedoch der Ansicht, dass es nicht für die Entwicklung im kleinen Maßstab geeignet ist, da die Einführung einige Zeit in Anspruch nimmt.
Von nun an werden wir eine Entwicklungsumgebung erstellen, um Hello World mit Struts2 zu realisieren. Es gibt drei Möglichkeiten, es zu erstellen.
Dieses Mal werde ich es selbst bauen.
2 erfordert zuerst das Studium von Maven und ist in einigen Umgebungen möglicherweise nicht verfügbar. Selbst wenn Sie versuchen, 3 zu verwenden, können Sie es nicht mit einem Fehler aus dem Standardzustand starten. Daher ist es schneller, es selbst zu erstellen, als es zu verwenden.
Lassen Sie es uns deshalb selbst bauen, indem wir unsere Hände bewegen und uns daran erinnern!
Der Autor verwendet eine integrierte Entwicklungsumgebung für die grundlegende Entwicklung. Ich denke, dass Eclipse für die Java-Entwicklung verwendet wird, aber dieses Mal werde ich auch Eclipse verwenden.
Die von mir verwendete Umgebung ist "Eclipse 4.4 (Luna)". Die Versionen von Eclipse können unterschiedlich sein, daher sollten Leser diejenigen verwenden, die ihnen nahe stehen.
① Wählen Sie Datei > Neu > Andere > Web > Dynamisches Webprojekt und fahren Sie mit dem nächsten fort.
② Geben Sie die folgenden Informationen ein, um mit dem nächsten fortzufahren.
Elemente einstellen | Wert einstellen |
---|---|
Projektname | Struts2HelloWorld ※Projektnameは自由に決めていただいて構いません |
Ziellaufzeit | Tomcat8 (Java8) |
Dynamische Webmodulversion | 3.1 |
Verfassung | Tomcat8 (Java8)デフォルトVerfassung |
③ Fügen Sie einen Ordner "Ressourcen" hinzu, indem Sie einen Ordner hinzufügen, und fahren Sie mit dem nächsten fort.
(4) Überprüfen Sie die Generierung des Deployment-Deskriptors web.xml und schließen Sie ihn ab.
⑤ Wenn Sie ein Projekt wie in der Abbildung unten gezeigt erstellen können, ist die Projekterstellung abgeschlossen.
Führen Sie Struts2 in das erstellte Projekt ein.
Laden Sie Struts2 von [hier] herunter (https://struts.apache.org/download.cgi). Zum Zeitpunkt des Schreibens dieses Artikels scheint die neueste Version "2.5.14.1" zu sein. Obwohl in HelloWorld nicht verwendet, laden Sie "struts-2.5.14.1-all.zip" mit einer Beispielanwendung herunter. Laden Sie "log4j-core-2.9.1.jar" auch separat herunter, da Sie es später benötigen. Bitte stimmen Sie die hier heruntergeladene Version der JAR-Datei mit log4j-api ab.
"Struts-2.5.14.1-min-lib.zip" ist ein leeres Struts2-Projekt mit einer Mindestkonfiguration. In meiner Umgebung konnte ich nicht von Anfang an mit einem Fehler beginnen. Es war mühsam zu lösen, also habe ich es von Anfang an selbst gebaut, aber ich würde es begrüßen, wenn Sie einen Kommentar abgeben könnten, wenn Sie es gut nutzen könnten.
Führen Sie Struts 2 in Ihr Projekt ein. Entpacken Sie die heruntergeladene Datei struts-2.5.14.1-all.zip und kopieren Sie die folgende JAR-Datei aus dem Ordner lib in den Ordner "Project root / Struts2HelloWorld / WebContent / WEB-INF / lib".
Dateiname | Bemerkungen |
---|---|
commons-fileupload-1.3.3.jar | |
commons-io-2.5.jar | |
commons-lang-2.4.jar | |
commons-lang3-3.6.jar | |
commons-logging-1.1.3.jar | |
freemarker-2.3.26-incubating.jar | |
javassist-3.20.0-GA.jar | |
log4j-api-2.9.1.jar | |
log4j-core-2.9.1.jar | Dies ist eine separat heruntergeladene JAR-Datei. log4j-Bitte stimmen Sie die Version mit API ab. |
ognl-3.1.15.jar | |
struts2-core-2.5.14.1.jar | |
xmlpull-1.1.3.1.jar | |
xpp3_min-1.1.4c.jar | |
xstream-1.4.10.jar |
Dies ist die Mindestbibliothekskonfiguration für die Ausführung von Struts2.
Erstellen Sie eine Struts2-Konfigurationsdatei "struts.xml" unter "/ Struts2 HelloWorld / resources".
Abgesehen davon können Sie mit Struts2 eine Anwendung ohne XML-Konfigurationsdatei implementieren, die als Nullkonfiguration bezeichnet wird. Mögen Entwickler XML? Selbst wenn Struts2 eingeführt wird, sind die meisten Fälle, die ich gesehen habe, in XML geschrieben. Obwohl es einen Vorteil gibt, dass die Anwendungseinstellungen nur durch Betrachten dieser Datei verstanden werden können, ist der Autor der Ansicht, dass es angesichts der Schwierigkeiten beim Schreiben der Einstellungsdatei nichts Besseres gibt als nicht.
Insbesondere in Struts2 wird es, wie eingangs erwähnt, häufig in Kombination mit anderen Frameworks wie Spring und OR Mapper verwendet. Für jedes Framework ist eine XML-Einstellungsdatei erforderlich, sodass die zu verwaltende XML-Menge erheblich zunimmt. Es sollte eine Nullkonfiguration sein, um den Entwickler von dieser XML-Hölle zu befreien, aber aus irgendeinem Grund wird sie nicht verwendet (lacht)
Es ist lange her, aber dieses Mal werde ich die Einstellungsdatei für weitere Fälle zusammen schreiben. Ich habe Kommentare hinzugefügt, aber überspringe es vorerst.
■ Inhalt von struts.xml
Platzieren Sie die Einstellungsdatei "log4j2.xml" der Protokollausgabebibliothek "log4j2".
■ Inhalt von log4j2.xml (Bitte stellen Sie den Kommentarteil willkürlich wieder her.)
<! - Einstellen des für die Ausgabe verwendeten Loggers->
Dies ist nicht erforderlich, aber es ist praktisch, eine Datei mit dem Namen "struts.properties" im selben Ordner abzulegen und "struts.ui.theme = simple" zu schreiben, da dadurch die automatische Generierung von Stylesheet-Tags durch Struts2 unterdrückt werden kann.
Zu diesem Zeitpunkt ist die Einführung von Struts 2 abgeschlossen. Ich habe ziemlich viel Arbeit geleistet, daher werde ich den Baum der Projekte auflisten, die ich konfiguriert habe. Wenn das Projekt den folgenden Baum hat, ist die Erstellung der Entwicklungsumgebung abgeschlossen.
■ Projektbaumstruktur Anwendungsstamm ├─src ├─resources │ log4j2.xml │ struts.properties │ struts.xml │ ├─build │ └ Klassen * Hier werden automatisch dieselben Materialien generiert, die im Quellordner abgelegt sind. │ log4j2.xml │ struts.properties │ struts.xml └─WebContent ├─META-INF │ MANIFEST.MF │ └─WEB-INF │ web.xml │ └─lib commons-fileupload-1.3.3.jar commons-io-2.5.jar commons-lang-2.4.jar commons-lang3-3.6.jar commons-logging-1.1.3.jar freemarker-2.3.26-incubating.jar javassist-3.20.0-GA.jar log4j-api-2.9.1.jar log4j-core-2.9.1.jar ognl-3.1.15.jar struts2-core-2.5.14.1.jar xmlpull-1.1.3.1.jar xpp3_min-1.1.4c.jar xstream-1.4.10.jar
Nachdem wir die Entwicklungsumgebung erstellt haben, werden wir mit der Implementierung der Anwendung selbst beginnen.
Bereiten Sie die oberste Seite vor, wenn Sie auf die Anwendung zugreifen. Dieses Mal werden wir es mit JSP implementieren.
Klicken Sie mit der rechten Maustaste auf WebContent> Neu> JSP, um den Dialog zu öffnen. Geben Sie "index.jsp" in den zu vervollständigenden Dateinamen ein.
■index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<! - Struts2-Tag-Bibliothek aktivieren-> <%@ taglib prefix="s" uri="/struts-tags"%> <! - Verwenden Sie die HTML5-Deklaration->
In Struts2 heißt die Klasse, die für die Verarbeitung von Webanwendungen verantwortlich ist, z. B. wenn sie von JSP gesendet wird, Aktion. Die Aktions- und Übergangszielseite wird in struts.xml definiert. Da die Erklärung jedoch später gegeben wird, implementieren Sie sie im Moment wie folgt.
Klicken Sie mit der rechten Maustaste auf den Ordner src> Neu> Von Klasse, und geben Sie die folgenden Informationen ein, um den Vorgang abzuschließen.
Elemente eingeben | Eingegebener Wert |
---|---|
Paket | sample |
Name | HelloWorldAction |
■HelloWorldAction
package sample;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
/** Name */ private String name;
/**
[Aktionsausführungsprozess]
Führen Sie den Prozess aus, um Hello World auszugeben.
Implementieren Sie die auszuführende Methode unter Verwendung des in struts.xml angegebenen Methodennamens.
In Struts2 wird das Seitenübergangsziel durch das Verarbeitungsergebnis der Aktion bestimmt.
Dieses Mal wird die feste Zeichenfolge "Erfolg" zurückgegeben.
*
* @return
*/
public String execute() {
logger.info ("Der eingegebene Parameter ist" {} ".", Name);
return "success";
}
/**
[Namenserfassungsprozess]
Holen Sie sich den Namen.
Wenn Struts2 den im Formular eingegebenen Wert als Parameter verwendet
Da Getter verwendet wird, lautet die Information, die Sie als Parameter verwenden möchten
Deklarieren Sie es als Eigenschaft der Action-Klasse und bereiten Sie einen Getter vor.
*
@return name */ public String getName() { return name; }
/**
[Namenseinstellungsprozess]
Stellen Sie den Namen ein.
Bereiten Sie wie bei Getter einen Setter für die Werte vor, die Sie zwischen den Seiten übergeben möchten.
*
@param name name */ public void setName(String name) { this.name = name; } }
Implementieren Sie das Übergangsziel, wenn Sie auf die Schaltfläche auf der oberen Seite klicken. Erstellen Sie einen Ansichts- / Beispielordner im WebContent-Verzeichnis und platzieren Sie die Übergangszielseite dort. Das Standortverzeichnis selbst kann sich an einer beliebigen Stelle in WebContent befinden, diesmal jedoch im obigen Verzeichnis. Fügen Sie "HelloWorld.jsp" auf die gleiche Weise wie auf der oberen Seite zum Beispielordner hinzu.
■HelloWorld.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello Struts2 world!</title>
</head>
<body>
<! - Zeigt die zwischen Nachrichten übertragenen Daten an. -> Hallo Struts2-Welt, <s: property value = "name" />