Introducción

El ejercicio que vamos a realizar es un ejemplo de hola mundo con struts realizado con maven para la librerías y eclipse como IDE.

Requisitos

Procedemos a abrir nuestro IDE eclipse y nos vamos al menú y le damos File->New->Maven Project
java project
Posteriormente a nuestro archivo pom.xml le agregamos la dependencia de struts2
<dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.2</version>
    </dependency>

Nuestro archivo pom.xml quedaría de la siguiente forma:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tutosoftware</groupId>
  <artifactId>HolaStruts</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>HolaStruts Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
  
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.2</version>
  </dependency>
  
  <dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
</dependency>
  
  
  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.1</version>
    <scope>provided</scope>
</dependency>
  
  
  
  
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>HolaStruts</finalName>
    
    
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
           <source>1.8</source>
           <target>1.8</target>
        </configuration>
      </plugin> 
    </plugins>
    
        
  </build>
</project>


Ahora vemos que tenemos un problema nos vamos a nuestro proyecto y le damos clic derecho donde dice Maven->Update Project.. y presionamos OK
Login Test
Ahora vamos crear nuestras carpetas de origen: Hacer clic derecho sobre HolaTest->New->Folder
folder
Sobre HolaTest/src/main creamos la carpeta java y presionamos Finish
folder java
De la misma forma creamos src/test/java y src/test/resources.
En la carpeta src/main/java creamos un paquete llamado com.tutosoftware.holastruts.action
paquete
paquete action
En el paquete com.tutosoftware.holastruts.action creamos la clase HolaAction y escribimos el siguiente código
 package com.tutosoftware.holastruts.action;

import com.opensymphony.xwork2.ActionSupport;

public class HolaAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	
	private String nombre;
	private String mensaje;
	
	
	@Override
    public String execute() throws Exception {
        mensaje = "Hola bienvenido a struts 2:";
        return ActionSupport.SUCCESS;
    }
	
	
	@Override
	public void validate() {
        if (null == nombre || nombre.length() == 0)
            addActionError(getText("error.nombre.requerido"));
        
    }
	
	
	
	
	
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getMensaje() {
		return mensaje;
	}
	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}
	
	
	
	

}
  
  
  
  

Actualizamos index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts2 hola mundo</title>
<s:head/>

</head>


<body>
<h1 style="color : red"> <s:text name="label.saludo"></s:text> </h1>
  <s:if test="hasActionErrors()">
    <div id="campoError">
        <s:actionerror/>
    </div>
  </s:if>

  <s:form action="holaAction" namespace="/" method="post" name="holaForm">
   <s:textfield name="nombre" size="30" maxlength="50" key="label.nombre"></s:textfield>
   <s:submit key="enviar" align="rigth"></s:submit>
  
  </s:form>
</body>
</html>
  
  

Sobre src/main/webapp creamos una carpeta llamada jsp y en el interior de la carpeta jsp
creamos exito.jsp y escribimos el siguiente código:
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts2 maven hola mundo</title>
</head>
<body>

	<h2 style="color: blue">
		<s:property value="mensaje" />
	</h2>

	<h1 style="color: blue">
		Saludos
		<s:property value="nombre" />
	</h1>


	<a href="index.jsp">Inicio</a>

</body>
</html>
  
  
  

creamos en la carpeta scr/main/resources el archivo ApplicationResources.properties y escribimos lo siguiente:
label.saludo = Struts 2 Maven Hola Mundo!
label.nombre =  Nombre
error.nombre.requerido = Nombre es requerido!
   

En scr/main/resources creamos el archivo struts.xml y escibimos lo siguiente:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
 
 
 <struts>
 
 <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
 <constant name="struts.devMode" value="true"></constant>
 <constant name="struts.custom.i18n.resources" value="ApplicationResources"></constant>
 <package name="default" extends="struts-default">
 <action name="">
   <result>index.jsp</result>
 </action>
 <action name="holaAction" class="com.tutosoftware.holastruts.action.HolaAction">
   <result name="error">index.jsp</result>
   <result name="input">index.jsp</result>
   <result name="success">/jsp/exito.jsp</result>  
 </action>
  </package>
 
 </struts>
   

En el web.xml lo actualizamos a la versión 3.1 y agregamos el filtro a struts action
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
  <display-name>Archetype Created Web Application</display-name>


<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
       
    </welcome-file-list>


</web-app>
  
  

En caso de que no te deje pasar de la versión 2.3 a 3.1 del web.xml lo hay es posicionarse en la carpeta .settings de tu proyecto:
java project
Modificamos el archivo org.eclipse.wst.common.project.facet.core.xml
la línea <installed facet="jst.web" version="2.3"/> por
<installed facet="jst.web" version="3.1"/> no olvidar que modificamos el web.xml
quedandonos el archivo de la siguiente manera:
 <?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="jst.web" version="3.1"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="java" version="1.8"/>
</faceted-project>
 

Luego damos un Maven->Update Project.. y listo.
Ahora hacemos clic derecho sobre nuestro proyecto y selecionamos Run As->Run on Server
java project
y presionamos Finish
java project
Abrimos el browser de preferecia en el sigueinte directorio en http://localhost:8080/HolaStruts/
Probamos la validación con un campo en blanco
prueba
Colocamos el nombre y le damos en enviar
prueba
Este es el resultado que nos arroja
prueba

Conclusión

Este es un sencillo ejemplo de struts2 y maven posteriormente se realizaran ejemplos más complejos. No olvidar que esta realizado en eclipse y compilado en java 1.8 además de utlizar tomcat 1.8

Descargar código fuente

descargar código

importar el proyecto maven a eclipse

Hay que importar el proyecto a eclipse y no olvidar que se esta realizado en java 1.8. Como importar un proyecto a eclipse