Spanish flagItalian flagPortuguese flagEnglish flagGerman flagFrench flagJapanese flagDutch flag

Tiempo estimado de lectura 6:01 min. rellotge
Struts: Introducción y arquitectura

Las actuales necesidades que deben soportar y cubrir las aplicaciones web del mercado son cada vez más exigentes y requieren de una base robusta sobre la que montar toda su arquitectura.
 
Es fácilmente distinguible por todos los usuarios de la red de redes que la evolución de los contenidos y posibilidades que Internet nos presenta es cada vez más y más amplio, presentándonos un abanico de servicios entre los que se puede destacar el comercio electrónico, la gestión bancaria, y un largo etcétera de posibilidades que hasta hace poco no podíamos ni imaginar. Este tipo de servicios requiere que el desarrollo de los sistemas web que los brindan sea muy eficiente dado que podríamos catalogarlos como servicios críticos; es por ello por lo que se nos presenta la imperiosa necesidad de contar con un marco de trabajo que nos garantice la robustez y consistencia de nuestras aplicaciones web. Struts es una alternativa fuerte y muy valorada por las empresas que demandan cada vez con más frecuencia el conocimiento de este framework que pasamos a describir a continuación.

Struts inicialmente pertenecía al proyecto Jakarta de la fundación Apache, pero se independizó y pasó a conocerse como Apache Struts. Básicamente, se presenta como un framework de soporte de desarrollo de aplicaciones web siguiendo el conocido patrón MVC (Modelo-Vista-Controlador) corriendo bajo J2EE. Este patrón arquitectónico separa los datos de una aplicación software, su interfaz de usuario y la lógica de cada uno de las entidades conceptuales que la forman, en tres componentes distintos y es muy extendido y recomendable su uso en el desarrollo de aplicaciones web, siendo uno de los más fuertes pilares sobre los que se sustentan actualmente las buenas prácticas de diseño de aplicaciones software para la web donde la vista se centra al HTML de la página contenedora del servicio.

Bajo esta idea, Struts se presenta como un enorme aliado a la hora de construir aplicaciones web de una forma elegante y con un diseño basado en una de las corrientes más influyentes dentro de las buenas prácticas del desarrollo web.

El desarrollo de una aplicación web mediante Struts se puede subdividir en varias tareas, en primer lugar tendremos que definir la lógica de control de una entidad, persistente o no, que necesitemos para implementar la funcionalidad del servicio o aplicación que estemos desarrollando. Por ejemplo, supongamos que deseamos desarrollar un sistema de e-venta de entradas o tickets para determinados eventos culturales. Después de un proceso de elicitación y análisis del software podremos ser capaces de identificar que necesitamos una serie de objetos o entidades en nuestra aplicación capaces de representar los conceptos que manejamos en ese dominio, como pueden ser una entrada, un evento o el mismo usuario de la web que actuará de comprador, y que estos a su vez, deberán almacenar la información necesaria para representar eficazmente a cada uno de ellos. Una vez implementados estos elementos como clases Java con sus correspondientes constructores, y métodos de acceso y consulta a los atributos de estas, los conocidos como getters y setters, necesitaremos mantener una relación con la base de datos que soportará el almacenamiento de cada uno de los registros que se adecuen a esas entidades persistentes. Por lo que generaremos, si es necesario, las correspondientes clases para tal fin, una buena práctica es hacer uso de patrones DAO. El cómo la arquitectura apunta a un determinado JDBC para acceder a una base de datos se lleva a cabo mediante la configuración de un simple fichero de properties.

Con esto tendremos definida la lógica de negocio de nuestra aplicación la cual ha sido apartada totalmente del tipo de aplicación software que hará uso de ella, como podemos observar hasta ahora solo disponemos de clases Java que podremos enlazar con servicios web o con aplicaciones cliente indistintamente sin ningún problema. A continuación vamos a definir la presentación de los datos en la aplicación, para ello deberemos definir una serie de formularios contenedores de lo que necesitemos, volviendo al ejemplo si estamos creando un formulario que una vez introducidos los datos del usuario y del evento al pulsar un botón denominado “Comprar” nos genere un ticket para ese usuario y asociado a ese evento pues tendremos que definir una clase Java para este formulario que podríamos denominar VentaForm que almacenase todos los datos necesarios, en este caso una instancia de un objeto de tipo Entrada, otra de tipo Evento y otra de tipo Ticket, que no son, ni más ni menos, que las anteriormente desarrolladas.

Y por último tendremos que definir la acción asociada al evento de pulsar el citado botón, que es donde realmente se define la funcionalidad explícita en el caso de uso que estamos comentando. Esta acción se define como una clase especial denominada AccionComprar que deberá heredar de una clase del sistema denominada Action y que únicamente posee un método: execute. El método execute es aquel que modela la funcionalidad que el cliente desea para con un determinado objeto de un formulario, sea o no un formulario web, insistimos en la independencia total hasta ahora del patrón con respecto a la tecnología. Una vez definido el método este devolverá un valor denominado actionForward, algo así como resultado de ejecución de la funcionalidad implícita en la acción a modelar. En nuestro ejemplo podríamos decir que este valor es “ok” cuando la venta se realiza de forma correcta (los datos del usuario son válidos, el evento seleccionado dispone aún de tickets a la venta, etc.) y “error” en otro caso.
 
Ahora es cuando Struts entra en el juego. Únicamente tendremos que definir con este soporte el plano de correlaciones entre los beans de formularios, las acciones a ejecutar y la redirección en función de los valores del actionForward, con lo que con la edición de un sencillo código en formato XML tendremos toda la estructura montada. Esta edición no tiene porque ser “a pelo” existiendo múltiples plugins para aplicaciones como Eclipse o IBM Websphere que nos introducen asistentes para una más fácil, si cabe, resolución de asociaciones. La asociación consiste en definir lo siguiente: dada esta acción (AccionComprar) que trabaja sobre el formulario (VentaForm) que contiene los datos siguientes (los relativos al evento y al usuario, así como al ticket a generar, que inicialmente será una entidad vacía), redirige el flujo de la aplicación a la localización X si el forward obtenido es “ok” o sino a la localización Y, si el forward es “error”. De tal forma la arquitectura posee conocimiento de todo el flujo de posibilidades que se pueden presentar en la aplicación.

Como podemos ver aún no hemos metido mano al código HTML propio de la aplicación web, y es que es mucho más recomendable que esto el desarrollo de un etiquetado propio en JSP y montar la aplicación mediante este lenguaje de cliente, con lo que mediante el paso de parámetros por el contexto del dominio de aplicación entre la zona del cliente y del servidor será el puente entre ambos para compartir información.

Lo único que nos queda es poder definir de que forma invocar a una de las ramas de flujo definidas en el fichero XML de correlaciones de acción. Esto se llevará a cabo invocando desde un determinado evento, en este caso el evento onclick del botón “Comprar”, mediante un sencillo código JavaScript la rama a invocar mediante el nombre de la acción concatenada con la extensión “.do”, esta dirección será interpretada por el servidor y buscará dentro de los diversos ficheros de correlación cúal es la acción a ser ejecutada invocando Struts automáticamente el código del método execute.
Así pues, vemos que la arquitectura de Struts nos permite definir toda la aplicación web de forma independiente a cómo se presentará en la web, centrándose exclusivamente en la funcionalidad o servicio a brindar.

Entre los inconvenientes a citar, la necesidad de montar un servidor de tipo Apache Tomcat para interpretar el JSP, el cual consume más recursos que un típico Apache sencillo con soporte para lenguajes como PHP.

La conclusión, un marco de trabajo idóneo para realizar buenas y consistentes aplicaciones para la web y con una expansión enorme, alta demanda en el mercado y con un competidor no menos fuerte: Spring, que hace que el ritmo de actualización de Struts y de incremento de funcionalidades nuevas para este sea constante, lo cual siempre es una buena noticia para los desarrolladores web.

1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (1 votos, promedio: 4 de 5)
Cargando ... Cargando ...



...por Ildefonso Montero ...por Ildefonso Montero


Enlaces Patrocinados:



Otros Reportajes:

Otros Reportajes RSS: Sindicación de contenidos »
Otros Reportajes Tests de intrusión: ¿Hasta cuándo puedes aguantar? »






Publicidad


Publicidad




PortalMundos Factory, S.L. | 2000 - 2008 | Hosting Profesional por isyourhost.com isyourhost.com