Está en la página 1de 7

Struts 2 Hola Mundo Tutorial Lo bsico de Struts 2

Struts 2 es un framework de desarrollo del lado web, como framework est basado en automatizar las tareas comunes y
proveer un marco comn de trabajo para el desarrollador, en otras palabras, define la arquitectura de la aplicacin o
componente.
A diferencia de Struts 1, Struts 2 es un marco completamente nuevo, basado en los proyectos OpenSymphony y Web
Works Framework. Usa el modelo MVC y es lo bastante flexible para poder escalarlo con otros frameworks como
Hibernate, Spring, etc.
Struts 2 define el Controlador con el FilterDispatcher, el cual procesa todas las peticiones (request) por parte del cliente,
se encarga de verificar en el struts.xml los filtros y acciones a llevar a cabo segn corresponda.
El Modelo lo implementan las clases Action, las cuales son bsicamente simples POJO (plain old java object), los cuales
no necesariamente deben implementar una interfaz, pero s implementar el mtodo execute(); sin embargo es una buena
prctica que implemente la interfaz ActionSupport, de esa forma nos aseguramos automticamente de implementar otras
interfaces que nos permiten validar y no sobre cargar el mtodo exectue(). Cabe recordar que el Modelo es la parte que
implementa la lgica del negocio.
Por ltimo, la Vista puede ser definida por varias tecnologas como JSP, Html, XHtml, Velocity, etc.
A continuacin explicar una simple aplicacin conocida por cualquier programador como Hola Mundo, la
desarrollaremos en Eclipse y Apache Tomcat.
Los requisitos para desarrollarla son:

Tener instalada el SDK a partir de 1.5 o superior.


Eclipse (http://www.eclipse.org/downloads/)
Apache Tomcat (http://tomcat.apache.org/index.html)
Descargar las libreras de Struts 2 (http://struts.apache.org/download), es recomendable descargar la ltima y
ms estable versin.

1. Creamos un proyecto dinmico en Eclipse: File New Dynamic web Project

Le damos un nombre: HolaMundo


Ya tengo instalado previamente el Apache Tomcat, el cual lo descargan desde la pgina de Apache, el ejecutable segn el
SO que tengis. Luego lo pueden agregar en Eclipse, ya sea desde la ventana anterior (la parte de Target runtime New
Runtime, y seleccionan la carpeta donde se instal en el disco) o desde el men:
window preferences server runtime enviroments, y agrergar la home del Apache Tomcat.

Luego de creado el proyecto, Eclipse nos mostrar la siguiente estructura:

Donde crearemos el siguiente directorio para las clases:


Click derecho sobre JavaResources src Folder le damos el nombre que deseemos: org.per.trux.actions
Recordando un poco la estructura del proyecto web, apreciemos que tenemos varias carpetas, pero las que nos interesan
son WebContent, WEB-INF, lib y src, por ahora. Las pginas de vista (Jsp, Html, velocity, etc) van en la raz de
WebContent (la mayora de veces, dependiendo de la arquitectura se puede reubicarlas), en la raz de WEB-INF va el
web.xml, dentro de lib van las libreras (.jar) que necesitemos segn las tecnologas a utilizar), y dentro de src van las
clases (.java) y el struts.xml. Todo esto se puede modificar dependiendo de la arquitectura que se defina, pero por defecto
son como las he mencionado.

2. Ahora agregamos las libreras y archivos de configuracin bsicos del proyecto para Struts 2. Primero
descomprimir el .zip con las libreras descargadas de Struts 2 (en esta aplicacin he utilizado: Struts 2.2.3.1),
seleccionamos las siguientes libreras del folder lib:

struts2-core-2.2.3.1.jar
xwork-core-2.2.3.1.jar
ognl-3.0.1.jar
freemarker-2.3.16.jar
commons-logging-1.1.1.jar
commons-fileupload-1.2.2.jar

Para este proyecto tan simple, con estas libreras nos basta por ahora. Copiamos esos archivos, damos click derecho sobre
la carpeta lib del proyecto en Eclipse, y elegimos: pegar. Nos debe quedar as:
Ahora creamos la pgina de inicio (Index.jsp), damos click derecho sobre WebContent New JSP File (si no
encuentran esa opcin directamente, seleccionen Others y busquen en una de las secciones).

Creamos ahora los archivos de configuracin necesarios: web.xml y struts.xml. Click derecho sobre WEB-
INF New File, le damos el nombre de web.xml
Click derecho sobre el directorio src New File, le damos el nombre de struts.xml

Ahora agregamos el contenido en los archivos recin creados, primero en web.xml:

<?xml version="1.0" encoding="UTF-8"?>


<web-
app version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http
://www.w3.org/2001/XMLSchema-
instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-
class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

Esta configuracin es la ms bsica y por defecto para usar struts 2, podemos apreciar que se hace referencia al
controlador (FilterDispatcher ), el mapeo de las urls: /*, el cual indica al controlador que revise todas las peticiones
(request) que enve el cliente, y por ltimo la pgina de inicio por defecto: index.html. Esta es una configuracin muy
bsica, pero podemos explicar que aqu se pueden agregar ms parmetros, como cadenas de conexiones, ms servlets,
etc. Esto depender de la arquitectura del proyecto.
Ahora editamos el archivo struts.xml:

<?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>
<package name="default" extends="struts-default">

<action name="holaMundo"class="org.per.trux.actions.HolaMundo
">
<resultname="SUCCESS">/HolaMundo.jsp</result>
</action>

</package>
</struts>

Aqu podemos apreciar las acciones a ejecutar por Struts 2, previo definimos el paquete, el cual nos proporciona el poder
definir una estructura elegante y separar las diferentes acciones segn sea el caso, cabe destacar que se pueden incluir
(include) ms archivos Xml que hereden de este base, de esa forma podemos organizar la estrutura del proyecto y no
hacer que el archivo por defecto crezca y sea inmanejable, una vez ms acoto que esto depender de la arquitectura del
proyecto.
Dentro del paquete van las acciones, <action>, la cual tiene los atributos bsicos: name, el cual es el nombre de la accin
a realizar, en este caso, cuando en la url termine en: holaMundo.action (notar que en el archivo struts.xml no viene ese
nombre, no es necesario ya que struts es lo suficiente inteligente para mapearla), luego en este caso hay una clase en el
atributo class que ejecutar la accin (Modelo, la clase Action), la cual tiene la Uri donde se
encuentra:actions.HolaMundo. luego tenemos el resultado que se mostrar con el result al cliente en caso que
sea exitosa la accin: <resultname="ok">/bienvenida.jsp</result>, esto nos dice que en caso de
devolver la cadena (String) ok la accin (HolaMundo.java), nos enve a la pgina: bienvenida.jsp
Esta es una simple aplicacin, pero se pueden definir mucho ms complejas acciones a realizar.
Por ltimo creamos un archivo ms: bienvenida.jsp, damos click derecho sobre WebContent New JSP File.
3. Ahora creamos nuestra clase y agregamos contenido a nuestras pginas jsp. Primero la clase que estar en la
carpeta: src/actions/HolaMundo.java

Hay que darle a refresh al proyecto para poder visualizarlo en la carpeta src.
Agregamos las propiedades de tipo String: nombre y saludo, luego usamos la funcionalidad de Eclipse para que nos
autogenere los get y set de ambos atributos de clase:
Implementamos el mtodo obligatorio execute, el cual devuelve por defecto un String:

package org.per.trux.actions;

/**
*
* @author Felipe Vsquez Ganoza
*/

import com.opensymphony.xwork2.ActionSupport;

public class HolaMundo extends ActionSupport{

private static final long serialVersionUID = 1L;


private String saludo;

public String execute() throws Exception {


setSaludo("Hola Mundo en Struts 2");
return "SUCCESS";
}
public String getSaludo() {
return saludo;
}
public void setSaludo(String saludo) {
this.saludo = saludo;
}

4. Ahora editamos nuestras vistas: index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


<html>
<head>
<META HTTP-EQUIV="Refresh"CONTENT="0;URL=holaMundo.action">
</head>

<body>
<h3>Cargando...</h3>
</body>

</html>

y bienvenida.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"


pageEncoding="ISO-8859-1"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1><s:property value="saludo" /></h1>
</body>
</html>

5. Ejecutamos el proyecto: Click derecho sobre el proyecto Run As Run on server

O podemos exportar el .war y copiarlo directamente en el directorio de nuestro servidor, para exportar el .war desde
eclipse, damos click derecho sobre el proyecto Export war file
Espero haya sido explicativo este pequeo tutorial y poder expandir o volverlo ms complejo en futuros posts.

También podría gustarte