Exemple d’annotation Hello World de Struts 2

Exemple d'annotation Struts 2 Hello World

Dans ce didacticiel, il réutilisera l'exempleStrust 2 Hello World (XML version) précédent et le convertira en version d'annotation.

Concept d'annotation Struts 2

L'annotation Struts 2 est supportée par le plugin de convention Struts 2, donc, vous devez comprendre la magie derrière ses mécanismes «Scanning Methodology» et «Naming Converter».

1. Méthodologie de numérisation

De nombreux articles ou livres de Struts 2 indiquent que vous pouvez configurer les «init-param» ou «struts.convention.action.packages» du filtre pour indiquer à Struts 2 où analyser les classes annotées. Par exemple,

web.xml


  struts2
  org.apache.struts2.dispatcher.FilterDispatcher
  
    actionPackages
    com.example.common
  

D'après mes tests (Struts2 version 2.1.6 et 2.1.8), ce n'est pas vrai, peu importe ce que vous mettez dans les «param-value» ou «struts.convention.action.packages», Struts 2 va simplement l'ignorer et analyser uniquement les dossiers spécifiés nommésstruts, struts2, action or actions.

Voici comment fonctionne la numérisation

  1. Scannez les classes annotées qui se trouvent dans le pack nommé «struts, struts2, action or actions».

  2. Ensuite, scannez le fichier qui correspond à l'un des critères suivants:

    • Implémentation de l'interfacecom.opensymphony.xwork2.Action.

    • Étend la classecom.opensymphony.xwork2.ActionSupport.

    • Le nom de fichier se termine par Action (par exemple UserAction, LoginAction).

2. Convertisseur de noms

Le plugin de convention Struts 2 convertira tout le nom du fichier d'action annoté dans un format spécifié.

Par exemple:LoginAction.java

  1. Tout d'abord, supprimez le mot «Action» à la fin du nom de fichier, s'il est présent.

  2. Ensuite, convertissez la première lettre du nom de fichier en minuscules.

Ainsi, après avoir supprimé la fin et converti la casse de la première lettre, lesLoginAction.action deviendrontlogin.action.

Les fonctionnalités de «méthodologie de numérisation» et de «convertisseur de dénomination» du plug-in de convention Struts 2 apportent vraiment beaucoup de commodités et d'avantages, uniquement si votre projet Struts 2 respecte correctement la convention de dénomination; sinon ce sera un désastre total.

Exemple d'annotation Struts 2

Il est temps de démarrer le processus de conversion.

Structure finale du projet

Struts2 hello world annotation

1. Mettre à jour pom.xml

Pour utiliser la fonction d'annotation Struts 2, vous devez télécharger lesstruts2-convention-plugin.jar.
pom.xml

...
    
          org.apache.struts
      struts2-core
      2.1.8
    

    
          org.apache.struts
      struts2-convention-plugin
      2.1.8
    
...

2. LoginAction

Créez unLoginAction étendActionSupport et ne faites rien, leActionSupport par défaut renvoie une chaîne de «succès», qui correspondra au @Result et redirigera vers «pages/login.jsp».

Version d'annotation

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{

}

Équivalent XML


    
        pages/login.jsp
    

3. WelcomeUserAction

Substituez la méthode execute () et spécifiez l'annotation @Action et @Result.

Version d'annotation

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;

    }
}

Équivalent XML


   
    pages/welcome_user.jsp
   

Les annotations Struts 2 -@Action,@Result et@Namespace sont explicites, vous pouvez toujours les comparer avec l'équivalent XML. Les@ResultPath peuvent avoir besoin d'une petite explication, voir ce@ResultPath example.

4. Pages d'affichage JSP

Pages d'affichage JSP normales pour accepter un nom d'utilisateur et un mot de passe, et rediriger vers une page d'accueil une fois que le bouton Soumettre est cliqué.

login.jsp

Struts 2 Hello World Annotation Example

welcome_user.jsp

Struts 2 Hello World Annotation Example

Hello

5. struts.xml

Pas besoin de créer de fichier struts.xml, toutes les classes sont annotées.

6. web.xml

Créez simplement un fichier web.xml classique et déclarez le filtreFilterDispatcher comme normal.




  Struts 2 Web Application

  
    struts2
    org.apache.struts2.dispatcher.FilterDispatcher
  

  
    struts2
    /*
  

7. Exécuter

LeLoginAction.action est changé enlogin.action, voir «Convertisseur de nom» ci-dessus.
http://localhost:8080/Struts2Example/User/login.action

Struts 2 annotation login screen

Struts 2 annotation welcome screen