Introducción a Quick Struts 2

1. Introducción

Apache Struts 2 es un marco basado en MVC para desarrollar aplicaciones web empresariales Java. Es una reescritura completa del marco original de Struts. Tiene una implementación de API de código abierto y un rico conjunto de funciones.

En este tutorial, tendremos una introducción para principiantes a los diferentes componentes centrales del marco Struts2. Además, mostraremos cómo usarlos.

2. Descripción general del marco Struts 2

Algunas de las características de Struts 2 son:

  • Acciones basadas en POJO (simples objetos Java antiguos)
  • soporte de complemento para REST, AJAX, Hibernate, Spring, etc.
  • Convención sobre configuración
  • soporte de varias tecnologías de capa de visualización
  • facilidad de creación de perfiles y depuración

2.1. Diferentes componentes de Struts2

Struts2 es un marco basado en MVC, por lo que los siguientes tres componentes estarán presentes en todas las aplicaciones de Struts2:

  1. Clase de acción, que es una clase POJO (POJO significa que no forma parte de ninguna jerarquía de tipos y se puede utilizar como una clase independiente); implementaremos nuestra lógica comercial aquí
  2. Controlador: en Struts2, los filtros HTTP se utilizan como controladores; básicamente realizan tareas como interceptar y validar solicitudes / respuestas
  3. Ver: se utiliza para presentar datos procesados; suele ser un archivo JSP

3. Diseño de nuestra aplicación

Procedamos con el desarrollo de nuestra aplicación web. Es una aplicación en la que un usuario selecciona una marca de automóvil en particular y recibe un mensaje personalizado.

3.1. Dependencias de Maven

Agreguemos las siguientes entradas al pom.xml :

 org.apache.struts struts2-core 2.5.10   org.apache.struts struts2-junit-plugin 2.5.10   org.apache.struts struts2-convention-plugin 2.5.10 

La última versión de las dependencias se puede encontrar aquí.

3.2. Lógica de negocios

Creemos una clase de acción CarAction que devuelve un mensaje para un valor de entrada particular. El CarAction tiene dos campos - carName (utilizado para el almacenamiento de la entrada del usuario) y carMessage (utilizado para almacenar el mensaje personalizado que se mostrará):

public class CarAction { private String carName; private String carMessage; private CarMessageService carMessageService = new CarMessageService(); public String execute() { this.setCarMessage(this.carMessageService.getMessage(carName)); return "success"; } // getters and setters }

La clase CarAction utiliza CarMessageService, que proporciona el mensaje personalizado para una marca de automóvil :

public class CarMessageService { public String getMessage(String carName) { if (carName.equalsIgnoreCase("ferrari")){ return "Ferrari Fan!"; } else if (carName.equalsIgnoreCase("bmw")){ return "BMW Fan!"; } else { return "please choose ferrari Or bmw"; } } }

3.3. Aceptar la entrada del usuario

Agreguemos una JSP que es un punto de entrada en nuestra aplicación. Este es un contenido del archivo input.jsp :

Welcome to Baeldung Struts 2 app

Which car do you like !!

Please choose ferrari or bmw

La etiqueta < formulario > especifica la acción (en nuestro caso es un URI HTTP al que se debe enviar la solicitud GET).

3.4. La parte del controlador

StrutsPrepareAndExecuteFilter es el controlador, que interceptará todas las solicitudes entrantes. Necesitamos registrar el siguiente filtro en web.xml:

 struts2 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter   struts2 /* 

StrutsPrepareAndExecuteFilter filtrará cada solicitud entrante ya que estamos especificando un comodín de coincidencia de URL / *

3.5. Configurar la aplicación

Agreguemos las siguientes anotaciones a nuestra clase de acción Car :

@Namespace("/tutorial") @Action("/car") @Result(name = "success", location = "/result.jsp")

Entendamos la lógica de estas anotaciones. El espacio de nombres @ se utiliza para la separación lógica de la solicitud URI para diferentes clases de acción; necesitamos incluir este valor en nuestra solicitud.

Además, @Action indica el punto final real del URI de solicitud que llegará a nuestra clase Action . La clase de acción consulta CarMessageService e inicializa el valor de otra variable miembro carMessage . Después de que el método execute () devuelve un valor, "éxito" en nuestro caso, coincide con ese valor para invocar result.jsp

Finalmente, @Result tiene dos parámetros. El primero, nombre, especifica el valor que devolverá nuestra clase de acción ; este valor se devuelve del método execute () de la clase Action . Este es el nombre del método predeterminado que se ejecutará .

La segunda parte, ubicación, indica cuál es el archivo al que se hará referencia después de que el método execute () haya devuelto un valor. Aquí, estamos especificando que cuando execute () devuelve una cadena con el valor " éxito ", tenemos que reenviar la solicitud a result.jsp .

La misma configuración se puede lograr proporcionando un archivo de configuración XML:

   /result.jsp   

3.6. La vista

Este es el contenido de result.jsp que se utilizará para presentar el mensaje al usuario:

Hello Baeldung User

You are a

Hay dos cosas importantes a tener en cuenta aquí:

  • enestamos importando la biblioteca struts-tags
  • enestamos usando la biblioteca struts-tags para imprimir el valor de una propiedad carMessage

4. Ejecución de la aplicación

Esta aplicación web se puede ejecutar en cualquier contenedor web, por ejemplo, en Apache Tomcat. Estos son los pasos necesarios para lograrlo:

  1. Después de implementar la aplicación web, abra el navegador y acceda a la siguiente URL: //www.localhost.com:8080/MyStrutsApp/input.jsp
  2. Seleccione una de las dos opciones y envíe la solicitud
  3. Se le reenviará a la página result.jsp con un mensaje personalizado según la opción de entrada seleccionada

5. Conclusión

En este tutorial, analizamos una guía paso a paso sobre cómo crear nuestra primera aplicación web Struts2. Cubrimos diferentes aspectos relacionados con MVC en el dominio Struts2 y mostramos cómo combinarlos para el desarrollo.

Como siempre, este tutorial se puede encontrar en Github como un proyecto de Maven.