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.
Téléchargez-le -Struts2-Hello-World-Annotation-Example.zip
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
-
Scannez les classes annotées qui se trouvent dans le pack nommé «struts, struts2, action or actions».
-
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
-
Tout d'abord, supprimez le mot «Action» à la fin du nom de fichier, s'il est présent.
-
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
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