viernes, 26 de junio de 2009

STRUTS 2

Apache Struts2 es un framework MVC, pertenece a la segunda generación de frameworks de aplicaciones web, su versión anterior no tuvo mucha aceptación debido a su complejidad. Struts2 no se basa en el código de Struts1, originalmente se había conocido como Webwork2 pero después de varios años, Struts y Webwork unieron fuerzas para crear Strtus2 razón por la cual el mismo se basa en WebWork. Struts2 se construyo basado en las mejores practicas y patrones de diseño aceptados por la comunidad programadora. Esta herramienta provee una implementación clara del patron MVC.

Los principales componentes de framework son:

DispatcherFilter: Es el punto de entrada del framework. A partir de el se lanza la ejecución del procesamiento para cada request que involucre al framework. Sus principales responsabilidades son la de ejecutar los actions, comenzar la ejecución de la cadena de interceptors asociados al request, limpiar el contexto sobre el cual se ejecuta un action, a esto ultimo se le conoce como ActionContext.

Interceptors: Son clases que siguen el patrón interceptor, realizan tareas muy similares a los advice de AOP. Se encargan de interceptar la invocación a un Action. Permiten realizar operaciones antes y después de la invocación de un Action. También permiten evitar que un Action se ejecuto. Nos sirve para reutilizar cierta funcionalidad que queremos aplicar a un conjunto de Actions. Struts2 trae definidos un conjunto de interceptors por defecto, que le permite realizar un conjunto de acciones sobre los Actions. el Request y Response.

Actions: Serán lo encargados de ejecutar la lógica necesaria para manejar un reques determinado. Los Actions no estan obligados a implementar o heredar de una interfaz o clase ya definida. Pueden ser POJOs. Igualmente, struts2 posee una interfaz Action. Esta interfaz permite definir el método por defecto que se ejecutará sobre el Action para que no tengamos que definirlo por otro medio.

Results: Son Objetos que encapsulan el resultado de un Action. Los Actions de la aplicación simplemente devolverán un String en sus métodos. Un Action puede devolver diferentes resultados luego de su ejecución.

Como se ha mencionado anteriormente, este framework esta basado en el patrón modelo-vista-controlador (MVC), el cual busca reducir el acoplamiento dividiendo las responsabilidades en tres capas:

  • 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ón interacciona con el usuario. En Struts2 equivale a los resultados.

  • El controlador, que comunica la vista y el modelo respondiendo a eventos 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. El controlador se implementa en Struts2 mediante el filtro filterdispatcher.


Entre las ventajas que provee este framework están:
  • Arquitectura simple, fácil de extender.

  • Las librerías son fáciles de manipular con FreeMaker

  • Se pueden utilizar espacios en blanco

  • En la validación, el lado del cliente solo funciona con reglas establecidas para las acciones

  • Brinda facilidad para realizar pruebas

  • Evita configuraciones obias y redundantes

  • Proveee una fácil instalacion de pluging

  • Utiliza las POJOForms en vez de ActionForms, esto provee la facilidad de utilizar cualquier JavaBeans para capturar la entrada de información y trasladarla a una ActionClass

  • Se codifica menos con la forma Stylesheat-driven la cual provee sus propias marcas

  • Brinda un mejor diseño.

La siguiente imagen muestra el funcionamiento básica de Struts2, el usuario primero realiza una peticion, esta pasa por el filtro FilterDespatcher, despues va al ActionMapper, luego al ActionProxy, se dirige al Struts.xml para buscar la clase de acción y por ultimo ejecuta la acción que en este caso es un Login.



Para el funcionamiento de este framework se necesitan cumplir con los siguientes requerimientos:
  • Servlet API 2.4

  • JSP API 2.0

  • Java 5

No hay comentarios:

Publicar un comentario