Beispiel für die Annotation von Struts 2 Hello World
In diesen Tutorials wird das vorherige Beispiel vonStrust 2 Hello World (XML version)wiederverwendet und in eine Anmerkungsversion konvertiert.
Laden Sie es herunter -Struts2-Hello-World-Annotation-Example.zip
Struts 2 Anmerkungskonzept
Die Annotation von Struts 2 wird vom Struts 2-Konventions-Plugin unterstützt. Sie müssen also die Magie hinter den Mechanismen „Scanning Methodology“ und „Naming Converter“ verstehen.
1. Scan-Methodik
In vielen Artikeln oder Büchern zu Struts 2 wurde angegeben, dass Sie die "init-param" oder "struts.convention.action.packages" des Filters konfigurieren können, um Struts 2 mitzuteilen, wo die mit Anmerkungen versehenen Klassen gescannt werden sollen. Zum Beispiel,
web.xml
struts2 org.apache.struts2.dispatcher.FilterDispatcher actionPackages com.example.common
Nach meinen Tests (Struts2 Version 2.1.6 und 2.1.8) ist dies nicht der Fall, unabhängig davon, was Sie in "param-value" oder "struts.convention.action.packages" eingeben. Struts 2 ignoriert dies einfach und Scannen Sie nur die angegebenen Ordner mit dem Namenstruts, struts2, action or actions.
So funktioniert das Scannen
-
Scannen Sie die mit Anmerkungen versehenen Klassen, die sich im Paket mit dem Namen "struts, struts2, action or actions" befinden.
-
Scannen Sie als Nächstes die Datei, die einem der folgenden Kriterien entspricht:
-
Implementierung dercom.opensymphony.xwork2.Action-Schnittstelle.
-
Erweitert die Klassecom.opensymphony.xwork2.ActionSupport.
-
Der Dateiname endet mit Action (z. B. UserAction, LoginAction).
-
Siehe dieseStruts 2 convention plugin documentation.
2. Namenskonverter
Das Struts 2-Konventions-Plugin konvertiert den Namen der mit Anmerkungen versehenen Aktionsdatei in ein bestimmtes Format.
Zum Beispiel:LoginAction.java
-
Entfernen Sie zuerst das Wort "Aktion" am Ende des Dateinamens, falls vorhanden.
-
Konvertieren Sie zweitens den ersten Buchstaben des Dateinamens in Kleinbuchstaben.
Nachdem Sie das Ende entfernt und den Fall des ersten Buchstabens konvertiert haben, ändern sich dieLoginAction.action inlogin.action.
Die Funktionen "Scan-Methode" und "Namenskonverter" des Struts 2-Konventions-Plugins bieten wirklich viele Vorteile, nur wenn Ihr Struts 2-Projekt die Namenskonvention ordnungsgemäß befolgt. sonst wird es eine totale Katastrophe sein.
Beispiel für Struts 2 Annotation
Es ist Zeit, den Konvertierungsprozess zu starten.
Endgültige Projektstruktur
1. Aktualisieren Sie pom.xml
Um die Annotationsfunktion Struts 2 verwenden zu können, müssen Sie diestruts2-convention-plugin.jar.
pom.xml herunterladen
...org.apache.struts struts2-core 2.1.8 ... org.apache.struts struts2-convention-plugin 2.1.8
2. LoginAction
Erstellen Sie einLoginAction erweitertActionSupport und tun Sie nichts. Die Standardeinstellung vonActionSupportgibt eine "Erfolgs" -String zurück, die mit dem @Result übereinstimmt und zu "pages/login.jsp" umleitet.
Anmerkungsversion
package com.example.user.action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.ResultPath; import com.opensymphony.xwork2.ActionSupport; @Namespace("/User") @ResultPath(value="/") @Result(name="success",location="pages/login.jsp") public class LoginAction extends ActionSupport{ }
XML-Äquivalent
pages/login.jsp
3. WelcomeUserAction
Überschreiben Sie die execute () -Methode und geben Sie die Annotation @Action und @Result an.
Anmerkungsversion
package com.example.user.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.ResultPath; import com.opensymphony.xwork2.ActionSupport; @Namespace("/User") @ResultPath(value="/") public class WelcomeUserAction extends ActionSupport{ private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Action(value="Welcome", results={ @Result(name="success",location="pages/welcome_user.jsp") }) public String execute() { return SUCCESS; } }
XML-Äquivalent
pages/welcome_user.jsp
Die Struts 2-Annotationen -@Action,@Result und@Namespace sind selbsterklärend. Sie können sie jederzeit mit dem XML-Äquivalent vergleichen. Die@ResultPath müssen möglicherweise etwas erklärt werden, siehe diese@ResultPath example.
4. JSP-Ansichtsseiten
Normale JSP-Ansichtsseiten akzeptieren einen Benutzernamen und ein Kennwort und leiten zu einer Willkommensseite weiter, sobald auf die Schaltfläche zum Senden geklickt wird.
login.jsp
Struts 2 Hello World Annotation Example
welcome_user.jsp
Struts 2 Hello World Annotation Example Hello
5. struts.xml
Es ist nicht erforderlich, die Datei struts.xml zu erstellen. Alle Klassen sind mit Anmerkungen versehen.
6. web.xml
Erstellen Sie einfach eine klassische web.xml-Datei und deklarieren Sie denFilterDispatcher-Filter als normal.
Struts 2 Web Application struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*
7. Starte es
LoginAction.action wird inlogin.action geändert, siehe „Namenskonverter“ oben.
http://localhost:8080/Struts2Example/User/login.action