Lo que no me mata, me fortalece
F. Nietzsche

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…

15 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

  11. cesar luis alarcon dijo

    29 de February del 2012 a las 9:02 pm

    Hola como estan la verdad esta bueno, pero en mi caso necesito algo renovado y mas basico, como es la coas? el tema es que necesito info ya que entre a trabajar y yo solo tenia java standard y sql, hicieron una academia para nivelar eso y vimos en 4 horas asi com remate los 4 o 5 framework mas importantes spring strut hibernate maven y algo de log4j y junit, el tema es que yo quiero a pender pero tambien hay que ir a lo practrico creo yo osea ir por el camino que lo que se vea se pueda aplicar, y estoy /estamos /estan trabajando sobre un sistema que ya es medio viejoide usa spring,strut1 hibenate y maven y me dan tiempo pero no encuentro el camino correcto para que sea fructifero lo que estudio con lo que se usa en este lugar asi una cosa va con la otra, si bine el sistema donde se trabaja tambien tiene su propio framework.me recomendaron que pr lo que voy a ahce r en pronto me convendría abordar el tema desde JSP/erlet + jscritp y strut1, pero no entiendo nada, me dieron para hacer un pequeño trbajo y lo pude hacer con ayuda pero lo termine era cambiar unos labels, y vis mas o menos donde se ubicas unas cosas ,lo de claves que se usan para pasar la internacionalización,mas o menos como estan compuestos los jsp y las properties con eso del las claves,y fue tedo con un poco de meter mano pero no me pueden estar dando mas cosa por quie no estoy preparado y quiero encontrar un camino que seguir metódico donde vea que me sirve lo que aprendo en general pero también para el ambiente donde trabajo, así que si me pueden ayudar les agradezco mucho,saludos gracias

  12. yoyoooyoy dijo

    1 de March del 2012 a las 10:09 am

    Buenas César Luis,

    en mi opinión la mejor forma de aprender es aislando cada tecnología: si necesitas aprender struts1, spring, hibernate, maven… es ir una a una recorriendo cada tecnología.

    Para cada una de ellas primero te recomiendo coger la documentación oficial (que suele estar en inglés), opcionalmente te recomiendo algún libro excelente (por ejemplo struts in action, hibernate in action…), después habla con los compañeros que ya sepan algo (porque ahora estarás en mejor posición para entenderles y hacerles mejores preguntas), y cuando te creas suelto en la materia haz una pequeña kata tipo hola mundo.

    Yo te recomendaría que además después de hacer todo eso para cada tecnología, escribieras manuales de lo que has aprendido porque la mejor forma de comprobar si realmente sabes algo es conseguir explicárselo a otra persona.

    En este punto tendrás un nivel básico, y la experiencia y trabajo en equipo te llevarán a perfeccionar tus habilidades.

    En concreto para el caso que comentas, creo que struts 1 (creo que en este blog hay suficiente material, pero si tienes más dudas o necesitas más explicaciones no dudes en pedírmelas) lo puedes aprender sin muchos problemas por tu cuenta y con ayuda de compañeros, para spring y maven siéntate con la o las personas de tu equipo que realmente sepan y en dos tardes te podrán ayudar a conseguir un nivel básico. Hibernate lamentablemente lo considero bastante más complejo, en tu lugar hablaría con tu jefe de proyecto para que te mantenga alejado de la capa de persistencia ya que te será más fácil aportar valor en el resto de capas.

    Lamentablemente no hay un atajo en este mundillo, sólo dedicación, juntarte con los mejores y poner atención.

    Suerte, y si me necesitas para algo contáctame vía correo electrónico.

    Saludos

  13. cesar luis alarcon dijo

    1 de March del 2012 a las 8:06 pm

    Gracias por la respuesta, ja la macana es que en mi casa tengo la pc muerta y en el trabajo usan JBoss creo(perdón el desconocimiento)y creo tener algunas cosas, trabadas, como el tema de usar Tomcat, salvo esperar a que mi pc funcione, por que aquí usan Jboss y cuando hago el proyecto de Lycka no me corre tl tomcat y por otor lado si bien esta super explicado todo lo quen puede tener el web.xml y demás cosas, pero creo que me falta algo previo para poder entender, o el fin de cada cosa, pero charlando muchos me dijeron tanto por el nivel con que se entro y por lo que voy a iniciar haciendo como aporte, se limita a strut y jsp y script y que va a ser mediante el memotecnico clásico de ir y tocar fácticamente jeje, sino no uqeda por que el proyecto es muy grande, y no se puede aprender frameworks y al mismo tiempo aprenderte todo lo funcional del proyectos y sumado a saber donde esta cada cosa, asi que esto lo voy a ahcer en CASA para ir incorporando otras cosas, entonces digo me conviene iniciar con strut o con el spring , o el núcleo de spring y srtut en el caso del modulo mcv,tener en cuenta que tengo poco de configuraciones xml, poco de jsp ,servlet o jsccript, asi que en casa voy poder instalar todo com s eme canta.. eso si aparte de todas las preguntas, mi ultima es tengo Helios e Indigo pero otros me recomiendan Ganimede…que hago? muchísimas gracias

  14. yoyoooyoy dijo

    2 de March del 2012 a las 7:27 am

    Debería ser indiferente qué versión de Eclipse utilizas con estas tecnologías, ya que todas las que mencionas son contemporáneas o posteriores.

    No obstante te recomendaría Helios o Indigo ya que (entre otras mejoras y funcionalidades, ya que son más modernas) tienen una funcionalidad muy útil: si pulsas “control” sobre un método te abre un menú contextual en el que te permite pinchar e ir a la declaración del método o a su implementación (si tiene más de una implementación te muestra todas para que elijas).

    Lo mismo te digo entre Tomcat y JBoss, debería ser indiferente cuál utilices. Tomcat es muy ligero, más popular y está muy extendido, JBoss es más pesado pero permite rearrancar un proyecto en caliente sin parar el resto, lo que está muy bien en un entorno de producción.

  15. how to configure best best wireless cable modem for comcast dijo

    5 de August del 2016 a las 10:56 pm

    how to configure best best wireless cable modem for comcast…

    Primeros Pasos con Struts 1.3.8 | Lycka Bonita…

Comentarios RSS · TrackBack URI

Dejanos tu Comentario

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario:

Comenta