Struts 2 - Anotaciones

Como se mencionó anteriormente, Struts ofrece dos formas de configuración. La forma tradicional es utilizar elstruts.xmlarchivo para todas las configuraciones. Hemos visto muchos ejemplos de eso en el tutorial hasta ahora. La otra forma de configurar Struts es mediante la función de anotaciones de Java 5. Usando las anotaciones de struts, podemos lograrZero Configuration.

Para comenzar a usar anotaciones en su proyecto, asegúrese de haber incluido los siguientes archivos jar en su WebContent/WEB-INF/lib carpeta -

  • 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

Ahora, veamos cómo puede eliminar la configuración disponible en el struts.xml archivo y reemplácelo con anotaciones.

Para explicar el concepto de Anotación en Struts2, tendríamos que reconsiderar nuestro ejemplo de validación explicado en el capítulo Validaciones de Struts2 .

Aquí, tomaremos un ejemplo de un Empleado cuyo nombre, edad se capturaría usando una página simple, y colocaremos dos validaciones para asegurarnos de que ÜSER siempre ingrese un nombre y la edad debe estar entre 28 y 65 años.

Comencemos con la página JSP principal del ejemplo.

Crear página principal

Escribamos el archivo JSP de la página principal index.jsp, que se utiliza para recopilar la información relacionada con los empleados mencionada anteriormente.

<%@ 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>

El index.jsp hace uso de la etiqueta Struts, que aún no hemos cubierto, pero las estudiaremos en capítulos relacionados con las etiquetas. Pero por ahora, suponga que la etiqueta s: textfield imprime un campo de entrada y s: submit imprime un botón de envío. Hemos utilizado la propiedad de etiqueta para cada etiqueta que crea una etiqueta para cada etiqueta.

Crear vistas

Usaremos archivo JSP success.jsp que se invocará en caso de que la acción definida regrese 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>

Crear acción

Este es el lugar donde se usa la anotación. Redefinamos la clase de acciónEmployee con anotación y luego agregue un método llamado validate () como se muestra a continuación en Employee.javaarchivo. Asegúrese de que su clase de acción amplíe elActionSupport class, de lo contrario, su método de validación no se ejecutará.

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;
   }
}

Hemos utilizado algunas anotaciones en este ejemplo. Déjame repasarlos uno por uno.

  • Primero, hemos incluido el Resultsanotación. Una anotación de Resultados es una colección de resultados.

  • Debajo de la anotación de resultados, tenemos dos anotaciones de resultados. Las anotaciones de resultado tienen lanameque corresponden al resultado del método de ejecución. También contienen una ubicación en cuanto a qué vista se debe servir correspondiente al valor de retorno de execute ()

  • La siguiente anotación es la Actionanotación. Esto se usa para decorar el método execute (). El método Action también toma un valor que es la URL en la que se invoca la acción.

  • Finalmente, he usado dos validationanotaciones. He configurado el validador de campo requerido enname campo y el validador de rango de enteros en el agecampo. También he especificado un mensaje personalizado para las validaciones.

Archivos de configuración

Realmente no necesitamos struts.xml archivo de configuración, así que eliminemos este archivo y comprobemos el contenido de web.xml archivo -

<?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>

Ahora, haga clic derecho en el nombre del proyecto y haga clic en Export > WAR Filepara crear un archivo War. Luego, implemente este WAR en el directorio de aplicaciones web de Tomcat. Finalmente, inicie el servidor Tomcat e intente acceder a la URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Esto producirá la siguiente pantalla:

Ahora no ingrese ninguna información requerida, simplemente haga clic en Submitbotón. Verá el siguiente resultado:

Ingrese la información requerida pero ingrese un campo De incorrecto, digamos el nombre como "prueba" y la edad como 30, y finalmente haga clic en Submitbotón. Verá el siguiente resultado:

Struts 2 tipos de anotaciones

Las aplicaciones Struts 2 pueden usar anotaciones Java 5 como alternativa a la configuración de propiedades XML y Java. Puede consultar la lista de anotaciones más importantes relacionadas con diferentes categorías:

Struts 2 tipos de anotaciones .