[JAVA] [Für Super-Anfänger] Struts2 Super Primer - Ausgabe 2018

Einführung

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.

1. Was ist Streben?

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.

1.1 Hintergrund von Struts2

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.

1.2. Vorteile der Einführung von Struts2

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.

2. Bau der Entwicklungsumgebung

Von nun an werden wir eine Entwicklungsumgebung erstellen, um Hello World mit Struts2 zu realisieren. Es gibt drei Möglichkeiten, es zu erstellen.

  1. Bauen Sie selbst
  2. Mit Maven gebaut
  3. Verwenden Sie das offizielle leere Projekt

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!

2.1. Erstellen eines Eclipse-Projekts

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. p1.jpg

② 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

p2.jpg

③ Fügen Sie einen Ordner "Ressourcen" hinzu, indem Sie einen Ordner hinzufügen, und fahren Sie mit dem nächsten fort. p3.jpg

(4) Überprüfen Sie die Generierung des Deployment-Deskriptors web.xml und schließen Sie ihn ab. p4.jpg

⑤ Wenn Sie ein Projekt wie in der Abbildung unten gezeigt erstellen können, ist die Projekterstellung abgeschlossen. p5.JPG

2.2 Einführung von Struts2

Führen Sie Struts2 in das erstellte Projekt ein.

2.2.1. Struts2 herunterladen

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. p6.jpg

"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.

2.2.2 Platzierung der erforderlichen Bibliotheken

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. p7.JPG

2.2.3 Platzierung der Einstellungsdatei

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 <! - Aktionspaketdefinition-> <! - Hallo Weltbeispielaktion-> /view/sample/HelloWorld.jsp

Platzieren Sie die Einstellungsdatei "log4j2.xml" der Protokollausgabebibliothek "log4j2".

■ Inhalt von log4j2.xml (Bitte stellen Sie den Kommentarteil willkürlich wieder her.) <! - Appender-Einstellungen für die Protokollierung-> [%d{yyyy-MM-dd HH:mm:ss.SSS}], %-5p, %t, %c, %m%n

<! - 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.

2.3 Bestätigung der Konfiguration

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

3. Implementierung der Anwendung

Nachdem wir die Entwicklungsumgebung erstellt haben, werden wir mit der Implementierung der Anwendung selbst beginnen.

3.1 Vorbereitung der Startseite

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. p8.jpg

■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->

Hallo Welt in Struts2 </ title> </head> <body> <! - Das Eingabeformular verwendet Struts2-Tags-> <s:form action="hello"> <s:textfield name="name" /> <s: submit value = "Zur Hello World-Seite gehen" /> </s:form> </body> </html> <h2>3.2 Umsetzung der Maßnahmen</h2> <p>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.</p> <p>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.</p> <table> <thead> <tr> <th style="text-align:left">Elemente eingeben</th> <th style="text-align:left">Eingegebener Wert</th> </tr> </thead> <tbody> <tr> <td style="text-align:left">Paket</td> <td style="text-align:left">sample</td> </tr> <tr> <td style="text-align:left">Name</td> <td style="text-align:left">HelloWorldAction</td> </tr> </tbody> </table> <p><img src="https://qiita-image-store.s3.amazonaws.com/0/189344/cd06f569-89c9-dd9a-5a00-eb14c7ee6b87.jpeg" alt="p9.jpg" /></p> <pre><code>■HelloWorldAction package sample; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** </code></pre> <ul> <li>[Hallo Weltaktionsklasse] <br> <ul> <li> <br> </li> <li>@author tarosa0001 */ public class HelloWorldAction { / ** Logger * / private Logger logger = LogManager.getLogger(HelloWorldAction.class);</li> </ul> </li> </ul> <p>/** Name */ private String name;</p> <pre><code> /** </code></pre> <ul> <li> <p>[Aktionsausführungsprozess] <br></p> </li> <li> <p>Führen Sie den Prozess aus, um Hello World auszugeben. <br></p> </li> <li> <p>Implementieren Sie die auszuführende Methode unter Verwendung des in struts.xml angegebenen Methodennamens. <br></p> </li> <li> <p>In Struts2 wird das Seitenübergangsziel durch das Verarbeitungsergebnis der Aktion bestimmt.</p> </li> <li> <p>Dieses Mal wird die feste Zeichenfolge "Erfolg" zurückgegeben. <br> * <br> * @return */ public String execute() { logger.info ("Der eingegebene Parameter ist" {} ".", Name); return "success"; }</p> <pre><code> /** </code></pre> </li> <li> <p>[Namenserfassungsprozess] <br></p> </li> <li> <p>Holen Sie sich den Namen. <br></p> </li> <li> <p>Wenn Struts2 den im Formular eingegebenen Wert als Parameter verwendet</p> </li> <li> <p>Da Getter verwendet wird, lautet die Information, die Sie als Parameter verwenden möchten</p> </li> <li> <p>Deklarieren Sie es als Eigenschaft der Action-Klasse und bereiten Sie einen Getter vor. * <br></p> </li> <li> <p>@return name */ public String getName() { return name; }</p> <pre><code> /** </code></pre> </li> <li> <p>[Namenseinstellungsprozess] <br></p> </li> <li> <p>Stellen Sie den Namen ein. <br></p> </li> <li> <p>Bereiten Sie wie bei Getter einen Setter für die Werte vor, die Sie zwischen den Seiten übergeben möchten. <br> * <br></p> </li> <li> <p>@param name name */ public void setName(String name) { this.name = name; } }</p> </li> </ul> <h2>3.3. Implementierung des Übergangsziels</h2> <p>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.</p> <pre><code>■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> </code></pre> <p><! - Zeigt die zwischen Nachrichten übertragenen Daten an. -> Hallo Struts2-Welt, <s: property value = "name" /> </body> </html></p> <h2>3.4. Anwendungseinstellungen aktualisieren</h2> <p>Zu diesem Zeitpunkt wurde die Anwendungsverarbeitung selbst implementiert. Konfigurieren Sie abschließend die implementierte Anwendung so, dass sie als Struts2-Anwendung fungiert.</p> <p>Ändern Sie "web.xml", die im WEB-INF des Projekts vorhanden ist, wie folgt. Da es sich eher um Grundkenntnisse der Webanwendung selbst als um Struts2 handelt, wird die Erklärung von web.xml selbst weggelassen.</p> <pre><code>■web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>Struts2HelloWorld</display-name> <welcome-file-list> </code></pre> <p><! - Dateieinstellungen anzeigen, wenn sie vom Anwendungsstamm gewohnt sind-> <! - Es ist nicht erforderlich, aber dieses Mal verwenden wir nur index.jsp, um Tippfehler in der URL zu vermeiden. -> <welcome-file>index.jsp</welcome-file> </welcome-file-list></p> <p><! - Struts2 Servlet Filter-> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter></p> <p><! - Festlegen des Filters für die URL-> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app></p> <h2>3.5 Abschluss der Implementierung</h2> <p>Die Einstellungen von web.xml wurden ebenfalls aktualisiert und die Implementierung der Struts2-Anwendung ist endgültig abgeschlossen. Zur Bestätigung werde ich den endgültigen Baum auflisten.</p> <p>■ Baum des abgeschlossenen Projekts Projektstamm ├─src │ └─sample │ HelloWorldAction.java │ ├─resources │ log4j2.xml │ struts.properties │ struts.xml │ ├─build │ └─classes │ │ log4j2.xml │ │ struts.properties │ │ struts.xml │ │ │ └─sample │ HelloWorldAction.class │ └─WebContent │ index.jsp │ ├─META-INF │ MANIFEST.MF │ ├─view │ └─sample │ HelloWorld.jsp │ └─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</p> <h1>4. Führen Sie aus</h1> <p>Inzwischen sind die Implementierung und Konfiguration abgeschlossen. Führen Sie abschließend die implementierte Anwendung aus.</p> <h2>4.1 Tomcat vorbereiten</h2> <p>Bereiten Sie einen Servlet-Container vor, um die Webanwendung auszuführen. Dieses Mal werden wir Tomcat als Servlet-Container verwenden.</p> <p>(1) Wählen Sie Fenster> Ansichtsansicht> Andere> Server, um die Oberflächenansicht anzuzeigen. <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/85194334-17c2-42d8-a948-07046747306c.jpeg" alt="p10.jpg" /></p> <p>(2) Klicken Sie mit der rechten Maustaste auf den Rand der angezeigten Serveransicht> Neu> Server auswählen, um den neuen Serverdialog anzuzeigen. Wählen Sie "Tomcat v8.0 Server" und fahren Sie mit dem nächsten fort. <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/7f9d0c59-9921-fd44-c2d9-fdfdfcad098a.jpeg" alt="p11.jpg" /></p> <p>③ Fügen Sie Struts2HelloWorld hinzu und schließen Sie ab <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/b67d289a-c698-6e15-1b33-3db62a2c38a7.jpeg" alt="p12.jpg" /></p> <ul> <li>Wenn Struts2HelloWorld nicht hinzugefügt werden kann, ist die Projekterstellung möglicherweise fehlgeschlagen. Stellen Sie sicher, dass Ihre Projektkonfiguration mit Tomcat 8 kompatibel ist.</li> </ul> <h2>4.2 Tomcat starten</h2> <p>Starten Sie Tomcat. Klicken Sie mit der rechten Maustaste auf den Tomcat, der der Serveransicht hinzugefügt wurde, und starten Sie. <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/003f2b34-3ebc-ee0c-f078-b5cf92b3ea27.jpeg" alt="p13.jpg" /></p> <p>Die folgende Zeichenfolge wird an die Konsole ausgegeben. Es wird rot angezeigt, ist aber kein Fehler.</p> <p>■ Konsolenausgabe * Ignorieren Sie die Warnung. Warnung: [SetPropertiesRule] {Server / Service / Engine / Host / Context} Festlegen der Eigenschaftsquelle 'to'org.eclipse.jst.jee.server: Struts2HelloWorld' hat keine passende Eigenschaft gefunden. [Di 2 13 00:39: 25 JST 2018] Info: Serverversion: Apache Tomcat / 8.0.20 [Di 2 13 00:39:25 JST 2018] Info: Server erstellt: 15. Februar 2015 18:10:42 UTC [Di 2 13 00:39:25 JST 2018] Info: Servernummer: 8.0.20.0 [Di 2 13 00:39:25 JST 2018] Info: Betriebssystemname: Windows 7 [Di 2 13 00:39:25 JST 2018] Info: Betriebssystemversion: 6.1 [Di 2 13 00:39:25 JST 2018] Info: Architektur: amd64 [Di 2 13 00:39:25 JST 2018] Info: Java Startseite: C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ Plejaden \ Eclipse \ jre \ jre [Di 2 13 00:39:25 JST 2018] Info: JVM Version: 1.8.0_40-b25 [Di 2 13 00:39:25 JST 2018] Info: JVM-Anbieter: Oracle Corporation [Di 2 13 00:39:25 JST 2018] Info: CATALINA_BASE: C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ sample \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 [Di 2 13 00:39:25 JST 2018 ]] Info: CATALINA_HOME: C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ tomcat \ 8 [Di 2 13 00:39:25 JST 2018] Info: Befehlszeilenargument: -Dcatalina.base = C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ sample \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 [Di 2 13 00:39:25 JST 2018] Info: Befehlszeilenargument: -Dcatalina.home = C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ tomcat \ 8 [Di 2 13 00:39:26 JST 2018] Info: Befehlszeilenargument: -Dwtp.deploy = C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ sample \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps [Di. 2 13 00:39:26 JST 2018] Info: Befehlszeilenargument: -Djava.endorsed.dirs = C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ tomcat \ 8 \ indossiert [Di 2 13 00:39:26 JST 2018] Info: Befehlszeilenargument: -Dfile.encoding = UTF-8 [Di 2 13 00:39:26 JST 2018] Info: Die APR-basierte Apache Tomcat Native-Bibliothek, die eine optimale Leistung in Produktionsumgebungen ermöglicht, wurde im Pfad java.library.path nicht gefunden: C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ eclipse \ jre \ bin; C. : \ Windows \ Sun \ Java \ bin; C: \ Windows \ system32; C: \ Windows; C: / Benutzer / Nakajima / Desktop / Personal / Skill Up / Plejaden / Eclipse / jre / bin / ../ jre / bin / server; C: / Benutzer / Nakajima / Desktop / Personal / Skill-up / Plejaden / Eclipse / jre / bin / ../ jre / bin; C: / Benutzer / Nakajima / Desktop / Personal / Skill-up / Plejaden / Eclipse / jre / bin / ../ jre / lib / amd64; C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill up \ pleiades \ java \ 8 \ bin; C: \ gradle-4.0 \ bin; C: \ app \ Nakajima \ product \ 11.2.0 \ dbhome_1 \ bin; C: \ Windows \ system32; C: \ Windows; C: \ Windows \ System32 \ Wbem; C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 ; C: \ Program Dateien \ WIDCOMM \ Bluetooth-Software ; C: \ Programme \ WIDCOMM \ Bluetooth-Software \ syswow64; C: \ Programme \ Intel \ WiFi \ bin ; C: \ Programme \ Gemeinsame Dateien \ Intel \ WirelessCommon ; C: \ Programme (x86) \ Justsystems \ JSLIB32 ; C: \ Programme (x86) \ Sony \ VAIO Starteinstellungstool; C: \ Programme (x86) \ Gemeinsame Dateien \ Sony Shared \ FeliCaLibrary; C: \ Programme \ Gemeinsame Dateien \ Sony Shared \ FeliCaLibrary; C: \ Programme (x86) \ Gemeinsame Dateien \ Sony Shared \ FeliCaNFCLibrary; C: \ Programme \ Gemeinsame Dateien \ Sony Shared \ FeliCaNFCLibrary; C: \ Programme (x86) \ GtkSharp \ 2.12 \ bin; C: \ maven \ bin; C: \ Programme \ nodejs \ v6.10.2 \ C: \ cygwin64 \ bin; C: \ Benutzer \ Nakajima \ AppData \ Roaming \ npm; C: \ Programme \ Oracle \ Java \ javapath ;; C: \ Benutzer \ Nakajima \ Desktop \ Personal \ Skill Up \ pleiades \ eclipse ;;. [Di 2 13 00:39:26 JST 2018] Info: Initialisierung von ProtocolHandler ["http-nio-8080"] [Di 2 13 00:39:26 JST 2018] Info: Verwenden eines gemeinsam genutzten Selektors zum Schreiben / Lesen von Servlets [Di 2 13 00:39:26 JST 2018] Information: Initialisierung von ProtocolHandler ["ajp-nio-8009"] [Di 2 13 00:39:26 JST 2018] Info: Verwenden eines gemeinsam genutzten Selektors zum Schreiben / Lesen von Servlets [Di 2 13 00:39:26 JST 2018] Info: Initialisierung in 951 ms verarbeitet [Di 2 13 00:39:26 JST 2018] Info: Service starten Catalina [Di 2 13 00:39:26 JST 2018] Info: Servlet Engine starten: Apache Tomcat / 8.0.20 [Di 2 13 00:39:26 JST 2018] Info: Die Erstellung der SecureRandom-Instanz für die Generierung der Sitzungs-ID mit [SHA1PRNG] dauerte [117] Millisekunden. [Di 2 13 00:39:26 JST 2018] Info: Starten von ProtocolHandler ["http-nio-8080"] [Di 2 13 00:39:30 JST 2018] Information: Starten von ProtocolHandler ["ajp-nio-8009"] [Di 2 13 00:39:30 JST 2018] Info: Serverstart in 4438 ms [Di 2 13 00:39:30 JST 2018]</p> <p>Wenn "Server Startup ~" angezeigt wird, ist der Start abgeschlossen.</p> <h2>4.3. Zugriff auf die Anwendung</h2> <p>Starten Sie Ihren Browser und geben Sie die folgende URL ein, um auf Ihre Webanwendung zuzugreifen. 「http://localhost:8080/Struts2HelloWorld」</p> <p>Anschließend wird der Inhalt der implementierten index.jsp angezeigt. <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/9dffcdec-a57a-7aef-c743-92c8c0bdcf91.jpeg" alt="p14.jpg" /></p> <h2>4.4 Übergang zur Hello World-Seite</h2> <p>Lassen Sie uns nun Hello World ausführen, das wir schon lange implementiert haben. Geben Sie einen beliebigen Wert in das Textfeld ein und klicken Sie auf "Zur Seite" Hallo Welt ".</p> <p>Herzliche Glückwünsche! Der Eingabewert des Textfelds wird vererbt und Hello World kann angezeigt werden! <img src="https://qiita-image-store.s3.amazonaws.com/0/189344/797045f0-f1c9-2c7b-69a0-1a7bf14f837f.jpeg" alt="p15.jpg" /></p> <p>Da der Prozess der Ausgabe des Protokolls an Action implementiert ist, können die übergebenen Daten durch die Protokollausgabe an die Konsole bestätigt werden.</p> <h1>5. Anwendungsbeschreibung</h1> <p>Vielen Dank an alle. Zu diesem Zeitpunkt ist die Implementierung von Hello World abgeschlossen. Von hier aus erklären wir die Anwendung.</p> <h2>5.1. JSPs und Aktionen</h2> <p>Struts2 verwendet das MVC-Modell. In vielen Fällen wird View (Bildschirm) mithilfe von JSP implementiert, und die Verarbeitung jeder Form und Verknüpfung von JSP wird von einer Klasse mithilfe von Java implementiert.</p> <p>5.1.1. Action Aktion ist eine Klasse, die die Geschäftsverarbeitung in Struts2 ausführt. Wenn Sie ein JSP-Formular senden, ruft die Struts2-Funktion Aktion auf. Welche Aktion für welches Formular ausgeführt werden soll, ist im Formular-Tag und in Struts.xml definiert.</p> <p>Dieses Mal wird hier die Aktion von HelloWorld festgelegt.</p> <p><! - Geben Sie die auszuführende Aktion im Aktionsattribut des Formular-Tags an. -> <s:form action="hello"></p> <p>Struts2 bietet eine Tag-Bibliothek, die in JSP verwendet werden kann. Bei der Implementierung einer Anwendung mit Struts2 verwenden viele die von Struts2 bereitgestellte Tag-Bibliothek. Die Aktion, die beim Senden des Formulars verwendet werden soll, wird im Aktionsattribut des Tags \ <s: form> angegeben, und die spezifische Einstellung der Aktion wird in Struts.xml beschrieben. Struts.xml wird später beschrieben, daher werde ich es dort ausführlich erläutern.</p> <h3>5.1.2 Zu übergebende Daten</h3> <p>Die im nächsten Bildschirm und in der Aktionsklasse verwendeten Daten, z. B. das auf dem Bildschirm eingegebene Formular, werden als Eigenschaft in der Aktionsklasse gespeichert. Wenn Sie eine Eigenschaft mit einem Namen festlegen, der mit dem im Tag in der JSP festgelegten Namensattribut übereinstimmt, wird der Wert in der Eigenschaft festgelegt, die dem Formular durch die Funktion Struts2 entspricht.</p> <p>Dieses Mal wird nur der in index.jsp eingegebene Name übergeben. Je größer die Seite, desto mehr Daten müssen übergeben werden. In einem solchen Fall möchten Sie möglicherweise eine Klasse erstellen, die die Daten als Block enthält. Fügen Sie in diesem Fall dem Attribut name ". (Dot)" hinzu und beschreiben Sie es im Format "class name.property name".</p> <p>■ Beispiel: Beim Festlegen eines Werts für den Namen der LoginInfo-Klasse <s:textfield name="LoginInfo.name" /></p> <p>5.2. Struts.xml Struts.xml ist eine Konfigurationsdatei, die das Verhalten von Struts2 steuert. Hier werden die zuvor erläuterten Aktionseinstellungen im Formular-Tag und die in der Anwendung verwendeten Konstanten definiert. Ich habe nur Konstanten angesprochen, aber Sie können sie auch alle zusammen in struts.properties auflisten.</p> <p>Es gibt verschiedene andere Einstellungen, aber hier werden nur die in Hello World verwendeten Aktionen erläutert. In Struts.xml finden Sie hier die Einstellungen für die HelloWorld-Aktion.</p> <p>■ Speicherort der Hello World-Aktionseinstellung <! - Hallo Weltbeispielaktion-> <action name="hello" class="sample.HelloWorldAction" method="execute"> <result name="success">/view/sample/HelloWorld.jsp</result> </action></p> <p>Legen Sie in Struts2 den Namen der Aktion, die zu verwendende Klasse und die Methode fest. In der definierten Aktion wird das nächste Übergangsziel durch den Rückgabewert der Aktionsklasse definiert. Dieses Mal wird es nur definiert, wenn der Rückgabewert "Erfolg" ist. Wenn Sie das Übergangsziel jedoch nach dem Ergebnis der Verarbeitung in Aktion aufteilen möchten, beschreiben Sie das Tag \ <Ergebnis> für jeden Rückgabewert.</p> <p>Die Übergangsziel-JSP beschreibt den Baum nach WebContent als root (/). Sie können auch einen relativen Pfad aus der Übergangsquellen-JSP festlegen, dieser kann sich jedoch verschieben. Daher ist es besser, ihn mit einem absoluten Pfad aus dem Anwendungsstamm zu beschreiben.</p> <p>5.3. web.xml web.xml ist eine Datei, die die Einstellungen einer Webanwendung beschreibt. Wenn Sie jedoch Struts2 verwenden, müssen Sie einen Servlet-Filter und eine Zuordnung für Struts2 definieren. Dies ändert sich nicht gegenüber dem oben erwähnten Inhalt von web.xml, es sei denn, Sie tun etwas Besonderes.</p> <h1>Schließlich</h1> <p>Bisher sind die Beispiel-Webanwendung mit Struts2 und die Anwendungsbeschreibung alle. Dieses Mal ist es nur ein Beispiel, also habe ich es mit der minimalen Konfiguration implementiert. Es ist vielleicht nicht einfach, eine neue Struts2-Anwendung von Grund auf neu zu erstellen, aber es gibt viele andere Funktionen. Wenn Sie also interessiert sind, probieren Sie es bitte aus.</p> <h1>EX. Referenz Web</h1> <p>Beim Schreiben dieses Artikels habe ich auf die unten stehende Webseite verwiesen.</p> <p>・ Einführung in die Entwicklung von Java-Webanwendungen mit der 2014er Version Eclipse + Struts2 http://www.cyokodog.net/blog/first-struts2/</p> <!-- ENDDDDDDDDDDDDDDDDDDDDDDDDDDDDD --> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- ng_ads_new_ui --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6575041992772322" data-ad-slot="8191531813" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <div style="margin-top: 30px;"> <div class="link-top" style="margin-top: 1px;"></div> <p> <font size="4">Recommended Posts</font> <!-- BEGIN LINK ************************* --> <div style="margin-top: 10px;"> <a href="/de/889faa2ab5853005f26b">[Für Super-Anfänger] Struts2 Super Primer - Ausgabe 2018</a> </div> <div style="margin-top: 10px;"> <a href="/de/70a1efa9edac2d83ba1a">[Für Super-Anfänger] DBUnit Super-Einführung</a> </div> <div style="margin-top: 10px;"> <a href="/de/93c19155bc803f10cea0">[Für Super-Anfänger] Ameise Super-Einführung</a> </div> <div style="margin-top: 10px;"> <a href="/de/e5667cfa857529900216">[Für Super-Anfänger] Maven Super-Einführung</a> </div> <div style="margin-top: 10px;"> <a href="/de/8b500ff605fe9246bd28">[Für Super-Anfänger] Mirage SQL Super-Einführung</a> </div> <div style="margin-top: 10px;"> <a href="/de/80cb21319531ae2e02b9">[Für Super-Super-Anfänger] Was ist Objektorientierung?</a> </div> <div style="margin-top: 10px;"> <a href="/de/db3badd0810f39d97cba">[Für Super-Anfänger] Verwendung des Autofokus: true</a> </div> <div style="margin-top: 10px;"> <a href="/de/f6d155f8c431033b37b2">Wie man GitHub für Super-Anfänger benutzt (Teamentwicklung)</a> </div> <div style="margin-top: 10px;"> <a href="/de/3c43b674e2b7c4b5c5cb">Java-Debug-Ausführung [für Java-Anfänger]</a> </div> <div style="margin-top: 10px;"> <a href="/de/8b1dfa2204dc3890f5f1">(Für Anfänger) [Rails] Installieren Sie das Gerät</a> </div> <div style="margin-top: 10px;"> <a href="/de/a0566982022983d0305e">Mehr verwendbar Aufzählbar für Anfänger</a> </div> <div style="margin-top: 10px;"> <a href="/de/b660bb9744e26b95a209">Java für Anfänger, Daten verstecken</a> </div> <div style="margin-top: 10px;"> <a href="/de/ec79fc901e956ae90b30">Java-Anwendung für Anfänger: Stream</a> </div> <!-- END LINK ************************* --> </p> </div> </div> </div> <div class="footer text-center" style="margin-top: 40px;"> <!-- <p> Licensed under cc by-sa 3.0 with attribution required. </p> --> </div> <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.1.2/build/highlight.min.js"></script> <!-- ads --> <script data-ad-client="ca-pub-6575041992772322" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- end ads --> </body> </html>