Por un lado esta de mas decir que struts 2 no es un continuación de struts 1 sino una unificación de dos framework como lo son webwork y struts. Por un lado struts es un MVC usado en un porcentaje alto de proyectos que hoy se encuentran implementados y funcionales por su fácil implantación y una curva de aprendizaje aceptable para todo desarrollo.
El desarrollo de Struts 2 está pensado para mejorar Struts aportando flexiblidad, sencillez y robustez a los elementos que se emplean en el desarrollo, facilitar el desarrollo de nuevas aplicaciones y el mantenimiento de aquellas que se desarrollen.
Por ello se hace una nueva arquitectura, una nueva API, nuevos Tags, etc., a partir de un framework existente WebWork, pero manteniendo todo lo bueno que tenía Struts.
El resultado lo vamos a analizar en una serie de por lo menos 10 artículos que nos posibiliten conocer este framework sencillo y fiable.
Características de struts 2
1.
Diseño Simplificado: en la versión 2 en
la cual se hace uso de Interfaces provee una
mayor facilidad
para la extensión y la adaptación, ya que los interfaces son más fáciles
de adaptar que las clases abstractas utilizadas por struts.
Los actions se convierten en POJOs, elementos que además estarán
poco acoplados. Los POJOs son clases que cuentan con getter y
setter para poder recibir valores desde páginas, y cuentan con algunos
métodos en los cuáles pondremos la lógica de negocio.
2.
Simplificación de los actions: Como hemos dicho los actions son
POJOs , cualquier clase
java con un método execute puede actuar como un Action. Así no se
hace necesario implementar ningún interfaz.
3.
Desaparecen los ActionForms: se ven reemplazados por simples JavaBeans que son
usados para leer las propiedades directamente. Lo usual es que el propio
Action actúe de JavaBean, con lo que se facilita el
desarrollo.
Además de ha mejorado la lectura de parámetros con el objetivo de no
tener únicamente propiedades de tipo String.
4.
Test simplificados: como los actions engloban la lógica de negocio
y los JavaBeans, es más
sencillo hacer test unitarios.
5.
Fácil selección de opciones por defecto: casi todos los elementos
de configuración
tienen definidos un valor por defecto que se puede parametrizar, lo
que facilita la elección de acciones por defecto.
6.
Results mejorados: a diferencia de los Action Forwards, los
results de Struts 2 son más
flexibles a la hora de poder definir múltiples elementos de la vista.
Además desaparece la complejidad de utilizar ActionForwards,
ya que se sustituye por la devolución de Strings.
7.
Mejoras en Tags: struts 2 permite añadir capacidades utilizando
tags que permite hacer
páginas consistentes sin añadir código. Los tags presentan más
opciones, están orientados a los results y pueden ser
cambiados de
forma sencilla. Además se añaden tags de marcado (markup) los
cuáles son editables usando templates FreeMarker. Esto significa que
podemos hacer que un mismo tag se comporte de forma
diferente sin
tener que hacer ninguna tarea de programación.
8.
Se introducen anotaciones: las aplicaciones en struts 2 puede usar anotaciones como
alternativa a XML y configuraciones basadas en properties.
9.
Arranque rápido: muchos cambios se pueden hacer sin necesidad de reiniciar el
contenedor web.
10.
Parametrización del controlador: Struts 1 permitía parametrizar el procesador de
peticiones a nivel de módulo. Struts 2 lo permite a nivel de action.
11.
Fácil integración con Spring.
12.
Soporte de Ajax: se incluye un theme AJAX que nos permite hacer
Como funciona Struts 2
Un usario envía una petición: Un usuario realiza la petición de un recurso dentro del servidor.
El elemento FilterDispatcher determina la acción que deberá responder: El framework dispone de los elementos requeridos para que el dispatcher sea capaz de determinar qué action es el responsable de recibir la petición y procesarla. Para ello se apoya en el framework para la publicación del recurso, y para su ejecución.
Se aplican los interceptores definidos: Existen diferentes interceptores que se pueden configurar para que ejecuten diferentes funcionalidades como workflows, validaciones, upload de ficheros, etc.
Se ejecuta el Action: Tras la ejecución de los diferentes interceptores el método específico del Action es ejecutado, realizándose aquellas operaciones y acciones que se hayan definido. El action termina devolviendo un resultado el cúal se utiliza para determiar la página a devolver.
Se renderiza la salida: Tras la ejecución del action se determina cuál es la página que se devuelve y se ejecutan el forward a dicha página.
Se devuelve la petición.: Para realizar la devolución se ejecutan los interceptores que correspondan y se procede a devolver la petición al cliente. De esta forma es posible añadir lógica externa a los servidores
también en la devolución
Se muestra el resultado al cliente final: Finalmente el control es devuelto al cliente quien podrá visualizar el resultado en su navegador.
Responsabilidades del Controlador
Es el responsable de recibir las peticiones de los clientes y es el responsable de:
1. Procesar las peticiones, determinando qué clase es la que tiene que responder.
2. Modificar el modelo en función de los parámetros que recibe ejecutando la lógica de negocio que el desarrollador haya definido.
3. Redirigir a la vista en función de la lógica de negocio. Como no podía se de otro forma, el controlador permite el uso de tecnologías estándares tales como Java Filters, Java Beans, ResourceBundles, XML, etc.
Responsabilidades del Modelo
Es la parte responsable de la gestión de la información. En este punto se suelen incluir aquellas clases, herramientas, librerías, etc., que permiten el acceso a los datos, así como el modelado de los mismos. Algunas de las tecnologías que se suelen emplear son JDBC, EJB, Hibernate o JPA, entre otros.
Responsabilidades de la Vista
Es la responsable de la percepción que tienen los usuarios finales de la aplicación. Se incluyen las páginas Html, JS, etc, y en general todos los elementos de visualización de la aplicación. Se nutre de la información que el controlador ha captado del modelo para pintar las páginas finales. Algunas de las tecnologías que se emplean son Html, JSP, XSLT, PDF,
templates,etc.
En un nivel mas profundo
Para aclarar ideas y mostras
cómo es la arquitectura de Struts 2 se añade un diagrama en el cual se puede
ver de forma gráfica qué elementos son los que intervienen dentro del
procesamiento de una peticón HTTP, distinguiéndose cuáles son elementos de
estándares de J2EE, cuáles son elementos propios de
Struts 2 y cuáles son creados por el usuario.
1. Una petición llega a un
servlet (HttpServletRequest) el cual es la parte del controlador que va a
recibir la petición.
2. El servlet delega en el
ActionMapper para determinar cúal es la acción que se va a ejecutar.
3. A continuación se ejecuta
la “cadena de filtros”, entre los que destacamos:
- Action Context Clean Up Filter. Éste filtro se emplea cuando hay que realizar una integración con otras tecnologías (compartición de cookies,etc.)
- FilterDispatch. Éste es encargado de determinar si la resolución de la petición requiere la ejecución o no de un action. Hemos de tener en cuenta que existen redirecciones u otros que no necesitan de un action que las implemente. En el caso de que haya que usar un action, se delega en el Action Proxy.
4. Action Proxy: se ejecuta
cuando la petición requiere la ejecución de un action. Lo que hace es
utilizar el Gestor de Configuraciones para crear ActionInvocation. Éste es una
clase que implementa el patrón
Command, el cuál se ejecuta.
5. Action Invocation: se
lanza tras leer el fichero de configuración, y por tanto es conocedor de qué
clase se debe ejecutar, así como de los interceptores que
intervienen. Por ello es responsable de ejecutar cada
uno de los interceptores, y
luego ejecutará el Action correspondiente. Éste Action contendrá la
lógica de negocio que se debe ejecutar. Como resultado de la
ejecución del Action se obtendrá un Result, el
cual se emplea para
determinar cuál de los elementos de la vista se deben llamar.
6. Se ejecuta el elemento que
debe configurar la vista y el resultado se devuelve deshaciendo el camino hasta el cliente.
Ahora que ya contamos con una introducción de struts 2 podemos preparar nuestro entorno de trabajo
.
como para comenzar deberíamos tener instalador Tomcat 7 y enlazado a eclipse Helio, si no sabes como hacerlo Aquí hay una guia a disposicion
Deberíamos tener instalado
Web Tools Platform SDK (WTP SDK) en nuestro Helio para facilitar el desarrollo web, por ello procederemos a realizar la instalación del mismo.
Primero que nada deberemos instalar WPT en nuestro caso realizaremos la instalación en eclipse de la versión 3.2.5 y a continuacion mostraremos el proceso de instalación.
The Eclipse Web Tools Platform (WTP) software repository -
El proceso de instalación nos solicitara reiniciar eclipse para que los cambios tengan efecto.
Podremos verificar la instalación desde eclipse.
podríamos decir que ahora tenemos el entorno de trabajo preparado para trabajar en desarrollo web, por un lado contamos con el tomcat 7 instalado, configurado y eclipse con lo necesario para trabajar de manera cómoda.
Ahora el siguiente paso es descargar struts 2 desde
En mi caso opte por la versión full que contiene todo el material del framework
Al descomprimir el archivo podremos ver el contenido del mismo.
En esta primera entrega:
- conocimos struts 2, sus virtudes y funcionamiento
- Instalamos el servidor de aplicaciones para trabajar
- Preparamos Eclipse para trabajar
- Descargamos struts 2
No hay comentarios:
Publicar un comentario