Primeros Pasos con Struts 1.3.8
El Framework de Struts es probablemente el adecuado para que empieces a pelearte con los proyectos web, por su madurez (lleva muchos años siendo la referencia en los proyectos web), su simplicidad, su abundante documentación y la sencillez con la que implementa el patrón Modelo - Vista - Controlador.
Así mismo Struts - Validator y Tiles son complementos perfectos a este framework (para la validación de los datos introducidos por los usuarios web y para modelar y reutilizar los componentes de la Vista).
Por todo esto la versión 1.3.8 (liberada el 10 de Marzo de 2007) es la ideal para comenzar en el mundo del desarrollo web con J2EE.
Herramientas necesarias
Necesitamos nuestras herramientas Java (JDK), un IDE (hoy por hoy Eclipse es el rey y yoxos su profeta) y un servidor de aplicaciones (Tomcat siempre es una buena elección).
Además necesitaremos la distribución 1.3.8 de Struts. La distribución contiene aplicaciones web de ejemplo (empaquetadas en formato .war), entre ellas struts-blank-1.3.8.war, que es una aplicación web vacía preparada para comenzar con Struts, es decir, algo así como el hola mundo que vamos a construir en esta entrada.
holamundoStruts138
Empezamos con el eclipse. Creamos un nuevo proyecto web dinámico, que llamaremos holamundoStruts138. Creamos una página de bienvenida, WebContent > index.jsp.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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>Hola Mundo</title>
</head>
<body>
<h1>Lycka te da la bienvenida!</h1>
<p>Bienvenido a nuestra aplicación de Hola Mundo Struts 1.3.8</p>
</body>
</html>
En el fichero despcriptor de la aplicación web, el WebContent > WEB-INF > web.xml nos aseguramos que esté nuestro fichero en la lista de ficheros de bienvenida. El valor de <display-name> será el que se mostrará en la administración de nuestro servidor de aplicaciones.
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>holamundoStruts138</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Ok, ahora desplegamos la aplicación en nuestro servidor de aplicaciones y deberíamos de ver la pantalla de bienvenida que hemos diseñado.
Comenzando con Struts
Necesitamos incorporar las herramientas de Struts a nuestro proyecto, es decir, las librerías. Cojemos las que vienen en el ejemplo de struts-blank-1.3.8.war, que son más de las que necesitamos pero en un futuro nos podrían venir bien :
- antlr.jar
- commons-beanutils.jar
- commons-chain.jar
- commons-digester.jar
- commons-logging.jar
- commons-validator.jar
- oro.jar
- struts-core.jar
- struts-taglib.jar
- struts-tiles.jar
Ahora debemos declarar la servlet de Struts, e indicar que atenderá las llamadas de nuestras acciones. Típicamente distinguimos las acciones porque su URL termina en la extensión ".do", por ejemplo "altaClientes.do". En el ejemplo utilizaremos la extensión ".lycka".
<!– Standard Action Servlet Configuration –>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!– Standard Action Servlet Mapping –>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.lycka</url-pattern>
</servlet-mapping>
Ahora nuestra aplicación está lista para funcionar bajo Struts.
Para continuar…




























Lycka Bonita » Nuestra primera acción con Struts 1.3.8 dijo
17 de July del 2008 a las 8:23 am
[...] ya sabemos preparar un proyecto web dinámico para utilizarlo con Struts, sabemos descomprimir el struts-blank.war que viene con la distrigución jejeje y utilizarlo [...]
Rigoberto Muñoz Restrepo dijo
23 de July del 2008 a las 9:59 pm
muchachos de verdad les agradesco…
de todas las paginas en las que busque ustedes son los que mejor explican…
los felicito.. su labor es excelente.
yoyoooyoy dijo
24 de July del 2008 a las 9:17 am
Se agradece tu comentario Rigoberto, me has alegrado la mañana
Me alegra que pueda resultar útil a alguien.
No dudes también en mandar sugerencias o crÃticas !
lanz dijo
31 de December del 2008 a las 10:23 pm
Hola Jeronimo.
Antes de todo felicitarte por tu blog y por haber creado un capitulo en él sobre los Struts.
He estado realizando el ejemplo (siguiendo la estructura de archivos que has propuesto), pero no consigo ponerlo en marcha (lo estoy probando sobre Netbeans),y cuando lo ejecuto me sale el siguiente error:
org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/identificar.jsp at line 41
39: </div>
40:
41: <html:form action=”identificar”>
42:
43: <div>
Y en el StackTrace (como errores que dan mas información):
javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot retrieve definition for form bean identificarForm on action identificar
javax.servlet.jsp.JspException: Cannot retrieve definition for form bean identificarForm on action identificar
Por cierto he probado a poner en el lo siguiente: por aquello de que el identificar.jsp cuelga de la carpeta jsp, y en el action path del struts-config.xml
Pero tampoco me ha funcionado.
AgradecerÃa mucho que me pudieras ayudar a poder ejecutar este ejemplo ya que creo que es un muy buen ejemplo para entender como funcionan los Struts, para novatos como yo.
http://download.yousendit.com/bVlERE9qTSt0d0VLSkE9PQ
Muchas gracias y que tengas un Feliz 2009.
yoyoooyoy dijo
5 de January del 2009 a las 10:30 am
Hola lanz,
gracias por las felicitaciones, y lamento no haberte contestado antes, me he tomado un par de semanitas de vacaciones del blog. A partir de ahora lo seguiré a diario.
El error que me comentas se produce en la lÃnea 41 de tu jsp (<html:form action=”identificar”>) cuando Struts intenta instanciar el formulario (”identificarForm”) asociado a la acción “identificar”.
A priori creo que es porque en el struts-config.xml no encuentra una clase que instanciar asociada a “identificarForm”. Si tienes lo mismo que en el ejemplo :
<form-bean name=”identificarForm” type=”es.lycka.holamundoStruts138.form.IdentificarForm” />
deberÃas tener un clase “IdentificarForm” (es sensible a las mayúsculas) en el paquete es / lycka / holamundoStruts138 / form. RevÃsalo porque es fácil que te baile una letra.
Si no lo solucionas asÃ, si quieres crea un war de tu proyecto, cuélgalo del yousendit como la duda y le echo un vistazo.
Dime si te ha servido. Feliz Año
PD, te he ocultado el mail en el comentario para que no tengas problemas de spam.