Apache Struts es un framework MVC gratuito y de código abierto para crear aplicaciones web Java elegantes y modernas.
Prioriza las convenciones sobre la configuración, es extensible mediante una arquitectura de plugins e incluye plugins compatibles con REST, AJAX y JSON.
Es utilizado para desarrollar aplicaciones web basadas en la arquitectura MVC (Modelo-Vista-Controlador).
Struts fue muy popular antes de la llegada de Spring Framework y sobre todo de Spring Boot. Sin embargo, debido a su gran rendimiento aún es usado en muchas empresas.
Requerimientos:
- JDK 8 o superior.
- Apache Maven 3.8.6 o superior.
- Tener nociones de Java y JSP.
- Se puede usar un IDE como Eclipse, Visual Studio Code o cualquier otro.
- Sirve de mucho conocer algo de Spring Boot.
Nosotros usaremos la terminal para crear y ejecutar el proyecto.
Creando nuestra primera aplicación con Apache Struts2
Vamos a crear una sencilla aplicación de "Hola, mundo".
Creamos el proyecto Apache Struts2 con Maven y nos ubicamos en el directorio creado:
$ mvn archetype:generate -B
-DgroupId=org.cursomaven
-DartifactId=auditor -DarchetypeGroupId=org.apache.struts
-DarchetypeArtifactId=struts2-archetype-blank
-DinteractiveMode=false
$ cd auditor
Abrimos el proyecto. Tendrá más o menos está estructura de carpetas:
auditor/
pom.xml
src/
main/
webapp/
index.html
WEB-INF/
example/
web.xml
resources/
example.xml
log4j2.xml
struts.xml
java/
Debemos eliminar los archivos innecesarios como: Login.java, HelloWorld.java, ExampleSupport.java. Esto para que solo quede una nueva clase llamada HolaMundo.java. Esto en la carpeta de java/org/cursomaven/example:
package org.cursomaven.example;
import com.opensymphony.xwork2.ActionSupport;
public class HolaMundo extends ActionSupport{
public String execute() throws Exception {
setMessage(getText(MESSAGE));
return SUCCESS;
}
public static final String MESSAGE = "HolaMundo.message";
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Tambien eliminaremos las páginas JSP del directorio webapp/WEB-INF/example. Esto para que solo quede una página JSP llamada HolaMundo.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title><s:text name="HolaMundo.message"/></title>
</head>
<body>
<h2><s:property value="message"/></h2>
</body>
</html>
Editamos los archivos: package.properties y example.xml. Los cuales se encuentran en los directorios src/main/resources y src/main/resources/org/cursomaven/example
package.properties
server.port= 8081
HolaMundo.message =Bienvenido a ApacheStruts2.
example.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<!--
- This file is included by the struts.xml file as an example
- of how to break up the configuration file into multiple files.
-->
<struts>
<package name="example" namespace="/example" extends="struts-default">
<default-action-ref name="HolaMundo" />
<action name="HolaMundo" class="org.cursomaven.example.HolaMundo">
<result>/WEB-INF/example/HolaMundo.jsp</result>
</action>
<!-- Add additional "example" package actions here. -->
</package>
</struts>
Tambien editamos el archivo XML struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"/>
<include file="example.xml"/>
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index"/>
<action name="index">
<result type="redirectAction">
<param name="actionName">HolaMundo</param>
<param name="namespace">/example</param>
</result>
</action>
</package>
<!-- Add addition packages and configuration here. -->
</struts>
Construimos con Maven:
$ mvn clean install -X
Ejecutamos con el servidor emembido Jetty:
$ mvn jetty:run -Djetty.port=8081
Abrimos el navegador en la dirección:
http://localhost:8081/auditor/example/HolaMundo
¡Hemos creado nuestra primera aplicación con Apache Struts2!
Continuaremos con esta serie sobre Frameworks web en próximas entregas.
Enlaces:
https://struts.apache.org/index.html