Struts 2 Hello World-Anmerkungsbeispiel

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.

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

  1. Scannen Sie die mit Anmerkungen versehenen Klassen, die sich im Paket mit dem Namen "struts, struts2, action or actions" befinden.

  2. 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).

2. Namenskonverter

Das Struts 2-Konventions-Plugin konvertiert den Namen der mit Anmerkungen versehenen Aktionsdatei in ein bestimmtes Format.

Zum Beispiel:LoginAction.java

  1. Entfernen Sie zuerst das Wort "Aktion" am Ende des Dateinamens, falls vorhanden.

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

Struts2 hello world annotation

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

Struts 2 annotation login screen

Struts 2 annotation welcome screen