Struts 2 - Annotations

Comme mentionné précédemment, Struts propose deux formes de configuration. La manière traditionnelle est d'utiliser lestruts.xmlfichier pour toutes les configurations. Nous en avons vu tant d'exemples dans le didacticiel jusqu'à présent. L'autre façon de configurer Struts consiste à utiliser la fonction d'annotations Java 5. En utilisant les annotations Struts, nous pouvons réaliserZero Configuration.

Pour commencer à utiliser des annotations dans votre projet, assurez-vous d'avoir inclus les fichiers jar suivants dans votre WebContent/WEB-INF/lib dossier -

  • struts2-convention-plugin-x.y.z.jar
  • asm-x.y.jar
  • antlr-x.y.z.jar
  • commons-fileupload-x.y.z.jar
  • commons-io-x.y.z.jar
  • commons-lang-x.y.jar
  • commons-logging-x.y.z.jar
  • commons-logging-api-x.y.jar
  • freemarker-x.y.z.jar
  • javassist-.xy.z.GA
  • ognl-x.y.z.jar
  • struts2-core-x.y.z.jar
  • xwork-core.x.y.z.jar

Voyons maintenant comment vous pouvez supprimer la configuration disponible dans le struts.xml fichier et remplacez-le par des annotations.

Pour expliquer le concept d'annotation dans Struts2, il faudrait reconsidérer notre exemple de validation expliqué dans le chapitre Validations de Struts2 .

Ici, nous prendrons un exemple d'employé dont le nom, l'âge seraient saisis à l'aide d'une simple page, et nous mettrons deux validations pour nous assurer que ÜSER entre toujours un nom et que l'âge doit être compris entre 28 et 65 ans.

Commençons par la page JSP principale de l'exemple.

Créer une page principale

Écrivons le fichier JSP de la page principale index.jsp, qui est utilisé pour collecter les informations relatives aux employés mentionnées ci-dessus.

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
   pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Employee Form</title>
   </head>

   <body>
      
      <s:form action = "empinfo" method = "post">
         <s:textfield name = "name" label = "Name" size = "20" />
         <s:textfield name = "age" label = "Age" size = "20" />
         <s:submit name = "submit" label = "Submit" align="center" />
      </s:form>

   </body>
</html>

L'index.jsp utilise la balise Struts, que nous n'avons pas encore abordée mais nous les étudierons dans les chapitres relatifs aux balises. Mais pour l'instant, supposons simplement que la balise s: textfield imprime un champ d'entrée et que s: submit imprime un bouton d'envoi. Nous avons utilisé la propriété label pour chaque balise qui crée une étiquette pour chaque balise.

Créer des vues

Nous utiliserons le fichier JSP success.jsp qui sera invoquée au cas où l'action définie retourne SUCCESS.

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
	pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Success</title>
   </head>
   
   <body>
      Employee Information is captured successfully.
   </body>
</html>

Créer une action

C'est l'endroit où l'annotation est utilisée. Laissez-nous redéfinir la classe d'actionEmployee avec annotation, puis ajoutez une méthode appelée validate () comme indiqué ci-dessous dans Employee.javafichier. Assurez-vous que votre classe d'action étend laActionSupport class, sinon votre méthode validate ne sera pas exécutée.

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.validator.annotations.*;

@Results({
   @Result(name = "success", Location = "/success.jsp"),
   @Result(name = "input", Location = "/index.jsp")
})
public class Employee extends ActionSupport {
   private String name;
   private int age;

   @Action(value = "/empinfo")
   
   public String execute() {
      return SUCCESS;
   }

   @RequiredFieldValidator( message = "The name is required" )
   
   public String getName() {
      return name;
   }
   
   public void setName(String name) {
      this.name = name;
   }

   @IntRangeFieldValidator(message = "Age must be in between 28 and 65", min = "29", max = "65")
   
   public int getAge() {
      return age;
   }
   
   public void setAge(int age) {
      this.age = age;
   }
}

Nous avons utilisé quelques annotations dans cet exemple. Laissez-moi les parcourir un par un -

  • Premièrement, nous avons inclus le Resultsannotation. Une annotation Résultats est une collection de résultats.

  • Sous l'annotation des résultats, nous avons deux annotations de résultats. Les annotations de résultat ont lenamequi correspondent au résultat de la méthode d'exécution. Ils contiennent également un emplacement indiquant quelle vue doit être servie correspondant à la valeur de retour de execute ()

  • La prochaine annotation est la Actionannotation. Ceci est utilisé pour décorer la méthode execute (). La méthode Action prend également une valeur qui est l'URL sur laquelle l'action est appelée.

  • Enfin, j'en ai utilisé deux validationannotations. J'ai configuré le validateur de champ requis surname champ et le validateur de plage d'entiers sur le agechamp. J'ai également spécifié un message personnalisé pour les validations.

Fichiers de configuration

Nous n'avons vraiment pas besoin struts.xml fichier de configuration, supprimons ce fichier et vérifions le contenu de web.xml fichier -

<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee"
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id = "WebApp_ID" version = "3.0">

   <display-name>Struts 2</display-name>
   
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

   <filter>
      <filter-name>struts2</filter-name>
      
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
      
      <init-param>
         <param-name>struts.devMode</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

Maintenant, faites un clic droit sur le nom du projet et cliquez sur Export > WAR Filepour créer un fichier War. Déployez ensuite ce WAR dans le répertoire webapps de Tomcat. Enfin, démarrez le serveur Tomcat et essayez d'accéder à l'URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Cela produira l'écran suivant -

Maintenant, n'entrez aucune information requise, cliquez simplement sur Submitbouton. Vous verrez le résultat suivant -

Entrez les informations requises mais entrez un mauvais champ De, disons le nom comme "test" et l'âge de 30 ans, et enfin cliquez sur Submitbouton. Vous verrez le résultat suivant -

Types d'annotations Struts 2

Les applications Struts 2 peuvent utiliser les annotations Java 5 comme alternative à la configuration des propriétés XML et Java. Vous pouvez consulter la liste des annotations les plus importantes liées aux différentes catégories -

Types d'annotations Struts 2 .