15
Struts2 1 STRUTS2 8 de Febrero de 2008

Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Struts2

1 STRUTS2

8 de Febrero de 2008

Page 2: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

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

sintáctica, interactuación con la capa de

servicio

Servlets, Apache Struts v1/v2, Spring

MVC, Tapestry, Java Server Faces ,

Spring Web Flow

2 STRUTS2

Servicios Control de transacciones, flujo de lógica

de negocio, rol de fachada

EJB sesión sin estado. POJO + AOP

Dominio Modelo de dominio, lógica del dominio

de negocio, validación semántica

POJO

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

(JPA), TopLink

Page 3: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Model-View-Controller

Model1

Model2

3 STRUTS2

Page 4: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Cuidado!!!

4 STRUTS2

Page 5: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

� 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.

¿Por qué Struts2?

5 STRUTS2

� 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

Page 6: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Arquitectura Struts2

6 STRUTS2

Page 7: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Característica Struts1 Struts2

Action Extiende de una clase base abstracta. No permite interfaces.

No es necesario que extienda de una clase base. Puede implementar el interfaz Action. Extiende de ActionSupport para tareas comunes.

Modelo de threading Las acciones de Struts1 son singleton y deberían ser thread-safe. Requiere especial cuidado a la hora del desarrollo.

Las acciones de Struts2 son instanciadas por cada petición. No supone una penalización importante del rendimiento ni impacto en la recolección de basura

Dependencia con la especificación de servlets

Struts1 presenta dependencia puesto que es pasado como parámetro el objeto HttpServletRequest y

Presenta objetos de contexto para poder acceder al request y al response si es preciso.

Comparativa Struts1/Struts2

7 STRUTS2

HttpServletRequest y HttpServletResponse

preciso.

Facilidad de pruebas Está más acoplado al contenedor, por tanto, dificulta la prueba. Existe un framework llamado StrutsTestCase que usa MockObjects para facilitar las pruebas

Las acciones de Struts2 no están acopladas al contenedor, con lo que es más sencillo el desarrollo de las pruebas. Aplica Dependency Injection.

Encapsulación de los parámetros de entrada

Se realizan mediante el ActionForm. Aumenta la cantidad de codigo necesaria. Dificultad de reutilización

Struts2 usa las propiedades de las acciones como propiedades de entrada.

Page 8: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Comparativa Struts1/Struts2 (II)

Característica Struts1 Struts2

Lenguaje de expresiones Struts1 integra con JSTL y EL. EL presenta escasez a la hora de tratar con colecciones y propiedades indexadas

Struts2 puede usar JSTL, pero el framework soporta un lenguaje de expresiones más flexible llamado OGNL (Object Graph Navigation Language)

Enlace de valores en la vista Struts1 usa el mecanismo estandar JSP para enlazar objetos en el contexto de la página.

Struts2 usa una tecnología basada en un modelo de pila “ValueStack” para que las 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 servlets

Struts1 presenta dependencia puesto que es pasado como parámetro el objeto

Presenta objetos de contexto para poder acceder al request y al response si es

8 STRUTS2

servlets es pasado como parámetro el objeto HttpServletRequest y HttpServletResponse

acceder al request y al response si es preciso.

Conversión de tipos Las propiedades del ActionForm son normalmente String. Se apoya de Commons-BeanUtils para conversión de tipos.

Struts2 usa OGNL para conversión de tipos. El framework incluye una colección de converters

Validation Struts1 soporta validación declarativa (commons-validator) y programática

Struts2 presenta validación declarativa (Xwork Validation Framework) y programática.

Control de la ejecución de la acción Permite configurar direferentesRequestProcessor por módulo

Permite controlar el ciclo de vida de cada acción mediante la pila de interceptores

Page 9: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Tecnología de rendering

Action JSP

Freemarker

9 STRUTS2

JasperReports

Page 10: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

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

Configuración Zero

10 STRUTS2

Codebehind Plugin.

Page 11: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Integración con SiteMesh

Antes de SiteMesh

11 STRUTS2

Page 12: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Integración con SiteMesh (II)

Después de SiteMesh

12 STRUTS2

Page 13: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

¿Qué es AJAX?

� Introduce el modelo de aplicación Web asíncrona.

� ¿Qué es AJAX?

13 STRUTS2

Page 14: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

Ajax Tags con Dojo Toolkit

Validación cliente con DWR ( Actualmente migrando a una solución con interceptores – JSONValidationWorkflowStack)

AJAX en Struts2

14 STRUTS2

JSON Plugin

GWT plugin

Page 15: Seminario Struts2 8 Febrero 2008 - PBworksparadigmatecnologico.pbworks.com/f/Microsoft_PowerPoint... · 2008. 2. 12. · Lenguajede expresiones Struts1integra con JSTL y EL. EL presenta

� 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

Consejos para la productividad

15 STRUTS2

� 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