Sie sind auf Seite 1von 15

Struts2

8 de Febrero de 2008

1 STRUTS2
Arquitectura de 5 capas

Nombre de la capa Responsabilidad Implementación tecnológica

Presentación Interfaz de usuario JSP/HTML/Javascript


Swing, SWT, Eclipse RCP
Flex (Adobe)

Aplicación Flujo de navegación, validación Servlets, Apache Struts v1/v2, Spring


sintáctica, interactuación con la capa de MVC, Tapestry, Java Server Faces ,
servicio Spring Web Flow

Servicios Control de transacciones, flujo de lógica EJB sesión sin estado. POJO + AOP
de negocio, rol de fachada

Dominio Modelo de dominio, lógica del dominio POJO


de negocio, validación semántica

Persistencia Persistencia de objetos de dominio Hibernate, Ibatis, Java Persistence API


(JPA), TopLink

2 STRUTS2
Model-View-Controller
Model1

Model2

3 STRUTS2
Cuidado!!!

4 STRUTS2
¿Por qué Struts2?
 Desarrollo
 Fácil arranque. Arquitetipo Maven2
 Soporte para Ajax como ciudadano de primera clase.
 Fácil integración con Spring. Dependency Injection
 Tecnología de renderizado: JSP, Freemarker, Velocity, JasperReports, …
 Los formularios son clases Java planas (POJO).
 Las acciones son clases Java planas (POJO).

 Despliegue
 Tecnología basada en plugins. Únicamente es necesario añadir la librería. No más configuración.
 Profiling integrado
 Gestión de errores precisa.

 Mantenimiento
 Facilidad de realizar pruebas sobre las acciones
 Convención sobre configuración
 Integrada herramienta de depuración
 Integración con Freemarker para desarrollo de tags. No es necesario la API de librería de tags

5 STRUTS2
Arquitectura Struts2

6 STRUTS2
Comparativa Struts1/Struts2

Característica Struts1 Struts2


Action Extiende de una clase base abstracta. No No es necesario que extienda de una
permite interfaces. clase base. Puede implementar el interfaz
Action. Extiende de ActionSupport para
tareas comunes.
Modelo de threading Las acciones de Struts1 son singleton y Las acciones de Struts2 son instanciadas
deberían ser thread-safe. Requiere por cada petición. No supone una
especial cuidado a la hora del desarrollo. penalización importante del rendimiento
ni impacto en la recolección de basura
Dependencia con la especificación de Struts1 presenta dependencia puesto que Presenta objetos de contexto para poder
servlets es pasado como parámetro el objeto acceder al request y al response si es
HttpServletRequest y preciso.
HttpServletResponse
Facilidad de pruebas Está más acoplado al contenedor, por Las acciones de Struts2 no están
tanto, dificulta la prueba. Existe un acopladas al contenedor, con lo que es
framework llamado StrutsTestCase que más sencillo el desarrollo de las pruebas.
usa MockObjects para facilitar las pruebas Aplica Dependency Injection.
Encapsulación de los parámetros de Se realizan mediante el ActionForm. Struts2 usa las propiedades de las
entrada Aumenta la cantidad de codigo necesaria. acciones como propiedades de entrada.
Dificultad de reutilización

7 STRUTS2
Comparativa Struts1/Struts2 (II)

Característica Struts1 Struts2


Lenguaje de expresiones Struts1 integra con JSTL y EL. EL presenta Struts2 puede usar JSTL, pero el
escasez a la hora de tratar con framework soporta un lenguaje de
colecciones y propiedades indexadas expresiones más flexible llamado OGNL
(Object Graph Navigation Language)
Enlace de valores en la vista Struts1 usa el mecanismo estandar JSP Struts2 usa una tecnología basada en un
para enlazar objetos en el contexto de la modelo de pila “ValueStack” para que las
página. librerías de tags accedan a los valores.
Permite desacoplar la vista del tipo de
objeto que va a ser renderizado
Dependencia con la especificación de Struts1 presenta dependencia puesto que Presenta objetos de contexto para poder
servlets es pasado como parámetro el objeto acceder al request y al response si es
HttpServletRequest y preciso.
HttpServletResponse
Conversión de tipos Las propiedades del ActionForm son Struts2 usa OGNL para conversión de
normalmente String. Se apoya de tipos. El framework incluye una colección
Commons-BeanUtils para conversión de de converters
tipos.
Validation Struts1 soporta validación declarativa Struts2 presenta validación declarativa
(commons-validator) y programática (Xwork Validation Framework) y
programática.
Control de la ejecución de la acción Permite configurar direferentes Permite controlar el ciclo de vida de cada
RequestProcessor por módulo acción mediante la pila de interceptores

8 STRUTS2
Tecnología de rendering

Freemarker

Action JSP

JasperReports

9 STRUTS2
Configuración Zero

El objetivo es no tener que realizar ningún paso de


configuración (struts.xml), asumiendo un conjunto de
convenciones para la ejecución de las acciones y el
renderizado de vistas

Codebehind Plugin.

10 STRUTS2
Integración con SiteMesh

Antes de SiteMesh

11 STRUTS2
Integración con SiteMesh (II)

Después de SiteMesh

12 STRUTS2
¿Qué es AJAX?

 ¿Qué es AJAX?
 Introduce el modelo de aplicación Web asíncrona.

13 STRUTS2
AJAX en Struts2

Ajax Tags con Dojo Toolkit

Validación cliente con DWR ( Actualmente migrando a una


solución con interceptores – JSONValidationWorkflowStack)

JSON Plugin

GWT plugin

14 STRUTS2
Consejos para la productividad

 Usa patrones (wildcards) para definir las vistas y acciones


 Usa alternativas de mapeo de URI’s con el objeto de simplificar la configuración
 Usa distintas tecnologías de renderizado (result types)
 Usa conversión de datos
 Usa el soporte para datos tabulares
 Usa validación declarativa cuando sea posible
 Mueve las acciones CRUD a una misma acción
 Usa anotaciones donde sea posible (Tener en cuenta que no refresca en caliente)
 Usa configuración zero
 Usa resultados globales para vistas comunes
 Usa manejo de excepciones declarativo

15 STRUTS2

Das könnte Ihnen auch gefallen