Dios no juega a los dados
Albert Einstein

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…

10 Comentarios hasta el momento »

  1. 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 [...]

  2. 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.

  3. 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 !

  4. 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.

  5. 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.

  6. juan dijo

    13 de January del 2009 a las 5:28 pm

    Hola jeronimo,
    igualmente te felicito por tu tutorial, me parece muy claro. Pero me está ocurriendo el mismo error que a lanz, he revisado todos los nombre y parece que son correcto. ¿como se solucionó el problema de lanz?
    Un saludo y gracias

  7. yoyoooyoy dijo

    14 de January del 2009 a las 9:59 am

    Hola Juan,

    gracias. El error de lanz era que tenía mal escrito el nombre del formulario identificarForm. Si te da la misma traza de error (javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot retrieve definition for form bean identificarForm on action identificar) debe ser por lo mismo. Es lo malo del XML, tienes que revisar con cuidado lo que escribes.

    Si no se soluciona así mándame más información del error (trazas, pantallazo) o el código y le echo un vistazo si saco un par de minutos.

    Saludos

  8. JDian dijo

    18 de February del 2009 a las 8:54 pm

    Hola, estoy intentando levantar la app que explicas pero me está arrojando el siguiente error:

    org.apache.jasper.JasperException: Exception in JSP: /identificar.jsp:27

    24:
    25:
    26:
    27:
    28:
    29:
    30: Identificador

    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

    causa raíz
    javax.servlet.ServletException: Exception creating bean of class es.lycka.holamundoStruts138.form.IdentificarForm under form name identificarForm

    Me podrías dar una mano, ya que no logro que funcione.
    Muchas gracias!!
    Dx

  9. JDian dijo

    18 de February del 2009 a las 8:56 pm

    Agrego lo que se perdío…

    org.apache.jasper.JasperException: Exception in JSP: /identificar.jsp:27

    24:
    25:
    26:
    27:
    28:
    29:
    30: Identificador

  10. yoyoooyoy dijo

    19 de February del 2009 a las 11:33 am

    Tiene pinta que el nombre del formulario en el struts-config.xml no está bien declarado, compruébalo. Si no es eso, haz un war y mándamelo por correo electrónico y le hecho un ojo cdo pueda.

    Saludos

Comentarios RSS · TrackBack URI

Dejanos tu Comentario

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario:

Comenta