Struts2

Introducción

Struts 2 es, como el nombre sugiere, la nueva versión del popular framework dedesarrollo del Java Apache Struts. Sin embargo, contrariamente a lo que cabría esperar, el código de ambos tiene poco que ver, dado que Struts 2 no se basa en el código de Struts 1, sino en el de otro framework de desarrolloweb en Java llamado WebWork, un framework que el creador de Struts consideraba superior a Struts 1 en varios aspectos.

Struts 2 está basado en el patrón MVC (Modelo-Vista-Controlador) , una arquitectura que busca reducir el acoplamiento dividiendo las responsabilidades en 3 capas claramente diferenciadas:

  • El modelo, que hace referencia a los datos que maneja la aplicación y las reglas de negocio que operan sobre ellos y que se traducen en Struts2 en las acciones.
  • La vista, encargada de generar la interfaz con la que la aplicacióninteracciona con el usuario. En Struts 2 equivale a los resultados.
  • El controlador, que comunica la vista y el modelo respondiendo aeventos generados por el usuario en la vista, invocando cambios en el modelo, y devolviendo a la vista la información del modelo necesaria para que pueda generar la respuesta adecuada para el usuario. Elcontrolador se implementa en Struts 2 mediante el filtro FilterDispatcher.
Struts2 está pensado para facilitar las tareas propias del ciclo de vida del software, incluyendo la construcción, desarrollo y mantenimiento de lasolución. Es fácilmente extensible, ya que todos los elementos están basadosen interfaces y clases bases.La plataforma básica que requiere Struts 2 requiere las versiones Servlet API 2.4,JSP API 2.0 y Java 5.Otra característica nueva que incluye Struts2 es un conjunto de librerías desarrolladas para facilitar la creación de aplicaciones web dinámicas,facilitando la creación de elementos de cliente que permitan mostrar información, validarla , localizarla de forma sencilla y sin que impacte en los tiempos de desarrollo, haciendo los desarrollos más sencilos de mantener.
Aquí podemos descargar el framework y consultar documentación: http://struts.apache.org/2.x/
Caracteristicas generales
La nueva versión de Struts 2 es una mezcla entre los Action de Struts yWebwork, lo cual le confiere de las siguientes características y diferencias respecto a struts1:
  1. Diseño Simplificado: Uno de los principales problemas que tenía el framework Struts 1 era el uso de clases abstractas, cosa que cambia en la versión 2 en la cual se hace uso de Interfaces. Esto le 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. Otro cambio es que se busca que las clases que sean lo más simples posible con lo que 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 unAction. Así no se hace necesario implementar ningún interfaz. Además se introduce la Inversión de control en la gestión de los actions.
  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 se 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 losJavaBeans, es más sencillo hacer test unitarios.
  5. Fácil selección de opciones por defecto:casi todos los elementos deconfiguración tienen definidos un valor por defecto que se pueden parametrizar, lo que facilita la elección de acciones por defecto.
  6. Results mejorados: a diferencia de los Action Forwards, los results deStruts 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 dereiniciar 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 nivelde action.
  11. Fácil integración con Spring.
  12. Fácilidad para añadir plugins.
  13. Soporte de Ajax: se incluye un theme AJAX que nos permite hacer aplicaciones interactivas de forma más sencilla.

 

Conclusión
Se han mejorado notablemente los aspectos que más quebraderos de cabeza daban en la versión de struts1 y se ha aligerado notablemente la disciplina que había que tener al gestionar formularios con los actionforms, un poco rigido permitiendo solo datos de tipo String y dificil de seguir , la gestion los results y los distintos niveles de namespace permite agrupar las llamadas de forma funcional y elegante, se resuelven además muy bien aspectos como la internacionalización, la gestión de properties que van desde uno general o default configurado hasta el nivel del paquete o del propio action de forma priorizada (si no encontramos nada en el nivel actual entonces probamos en el anterior), se ha demostrado como una experiencia grata ir descubriendo las soluciones que desde el framework se proponen para algunos problematicas que existian con struts1 aunque tampoco se puede decir que este sea un sucesor estricto de él.

One thought to “Struts2”

  1. Pingback: 情趣用品

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *