tapestry 5

29
WEBTOOLS 2009 Santiago Murgolo • Andrés Vicente • Diego Rojas

Upload: gojo34

Post on 24-Jul-2015

193 views

Category:

Documents


1 download

DESCRIPTION

Tapestry 5

TRANSCRIPT

Page 1: Tapestry 5

WEBTOOLS 2009

• Santiago Murgolo• Andrés Vicente• Diego Rojas

Page 2: Tapestry 5

AgendaAgenda

• Introducción

• Características

• Páginas

• Componentes

• Integración

• Historia y Configuración

• Ejemplo

• Factores a tener en cuenta

• Links

Page 3: Tapestry 5

IntroducciónIntroducción

Tapestry es un framework J2EE de código abierto para eldesarrollo de interfaces de aplicaciones Web Java basadas encomponentes y orientadas a objetos siendo:

Dinámicas Robustas Altamente escalables

se basa en el estándar de la API JavaServlet, por lo que funciona en cualquiercontenedor servlet o servidor de aplicaciones.

Page 4: Tapestry 5

CaracterísticasCaracterísticas

• Orientado a componentes:

Una aplicación se compone de un conjunto de páginas Web, cada una de las cuales se construye a partir de componentes que pueden generar diversos eventos ante los que la página puede reaccionar.

Page 5: Tapestry 5

Características (cont.)Características (cont.)

•Implementa la arquitectura modelo-vista-controlador(MVC)

•Sigue el enfoque POJO:• convenciones de nombres• Anotaciones

• Soporte para validación de datos de entrada

• Soporte para inyección de dependencias

•Soporte para inversión de control (IoC) Inyecciones solo por constructor

•Integración con otras tecnologías

Page 6: Tapestry 5

Características (cont.)Características (cont.)

El framework maneja:

• Procesamiento de demandas (analisis, envio)

• Creación de URL

• Control del estado de la página (persistencia de los datos)

• Validación de los datos ingresados por el usuario

• Internacionalización de la información

• Control de errores y generador de reportes de excepciones

Page 7: Tapestry 5

Paginas en TapestryPaginas en Tapestry

Cada Pagina o componente es representada por:

Clase Java Plantilla opcional (XML)

• Ambas deben tener el mismo nombre

• El objetivo de la clase Java es recibir los eventos relativos a la página y el objetivo de la plantilla es generar la vista de la página

Page 8: Tapestry 5

Paginas:Paginas: PlantillasPlantillas

Las plantillas de los componentes son:

•documentos gramaticalmente correctos en XML

•no hay JSP

•la mayoría son archivos XHTML

•Tiene extension “.tml”

•El XML incluirá referencias a componentes y también puede incluir expansiones

Page 9: Tapestry 5

Páginas: Páginas: Ciclo de vidaCiclo de vida

Para obtener eficiencia Tapestry mantiene un pool de instancias para cada página

•Cuando una página es requerida, obtiene una instancia del pool para atender esa petición • Una vez atendida la petición la página es devuelta al pool • Antes de devolverla al pool las variables de la instancia son inicializadas para borrar los datos específicos de esa petición

cada vez que se trabaja con una página puede ser una instancia distinta

Page 10: Tapestry 5

Paginas: Paginas: FiltrosFiltros

Proporcionan un mecanismo estándar para interceptar peticiones y respuestas dentro de un contenedor de Servlets, permitiendo utilizar la información contenida, además:

• Capturan una petición y cambiar su flujo• Realizan transformaciones sobre las respuestas generadas

Se definen con la etiqueta filter:• filter-name• filter-class

La etiqueta filter-mapping indica cuando debe invocarse un Filtro:

• filter-name• url-pattern

Page 11: Tapestry 5

Integracion en un contenedor de Integracion en un contenedor de servletsservlets

Se integra como un filtro de pedidos En el fichero web.xml debe declararse la clase del filtro

org.apache.tapestry.TapestryFilter

• Puede dársele cualquier nombre

• Procesa todas las peticiones relativas a Tapestry y pasa el resto de peticiones al contenedor de Servlets

•La primer pagina que maneja una petición es Index

Page 12: Tapestry 5

web.xmlweb.xml

Page 13: Tapestry 5

Integración: Integración: Tapestry + Spring Tapestry + Spring

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>1.2.8</version></dependency>

<filter> <filter-name>app</filter-name> <!-- Special filter that adds in a T5 IoC module derived from the Spring WebApplicationContext. --> <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class> </filter>

<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

• La integración permite a los beans definidos en Spring ser inyectados en los servicios de IoC deTapestry, como así también en los componentes

pom.xml

web.xml

Page 14: Tapestry 5

ComponentesComponentes• Son clases concretas ya que no extienden de ninguna clase base ni implementan interfaces•No necesitan configuración via archivos XML• Facil empaquetamiento y reutilización en otras aplicaciones•Con la notación “ @component ” se puede embeber un componente con características especiales dentro de otro

import org.example.app.components.Count;

public class Countdown

{

@Component(parameters = { "start=5", "end=1", "value=countValue" })

private Count count;

@Property

private int countValue;

}

Page 15: Tapestry 5

Componentes: Componentes: GridGrid

<t:grid t:source="allCelebrities" rowsPerPage="5"/>

public List<Celebrity> getAllCelebrities(){return dataSource.getAllCelebrities();

}

Page.tml

Page.java

Page 16: Tapestry 5

Componentes: Componentes: Clases JAVAClases JAVA

Características de las clases java : POJO (Plain Old Java Object)No hay una configuración XML involucrada Solo basta con ponerlas en el paquete adecuado El estado de la página se almacena con propiedades de

objetos Manejadores de eventos sobre componentes Se utilizan convenciones de nombrado o anotaciones

para asociar métodos a eventos generados por

componentes

Page 17: Tapestry 5

Componentes: Componentes: Clases JAVA Clases JAVA ejemploejemplo

Page 18: Tapestry 5

Componentes:Componentes: Manejo de Manejo de eventoseventos

Se usan para dos propósitos: Representan pedidos originados por el usuario Representan el flujo de control dentro de una solicitud

Metodos para manejo de eventos:

Convención de Nombres OnEventFromComponent

Anotación “ @OnEvent ”

@OnEvent(value = "action", component = "select")

void valueChosen(int value)

{

this.value = value;

}

void onActionFromSelect(int value)

{

this.value = value;

}

Page 19: Tapestry 5

Componentes:Componentes: Validación de Validación de datosdatos

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> <head> <title>Login</title> </head> <body> <h1>Please Login</h1>

<form t:id="form"> <t:errors/> <t:label for="userName"/>: <input t:type="TextField" t:id="userName" t:validate="required,minlength=3" size="30"/> <br/> <t:label for="password"/>: <input t:type="PasswordField" t:id="password" t:validate="required,minlength=3" size="30"/> <br/> <input type="submit" value="Login"/> </form>

</body></html>

• Validación declarativa: solo se debe informar a Tapestry que validación se aplicará sobre un determinado campo de un Form y éste se encarga de implementarla

Page 20: Tapestry 5

Tapestry 4 Tapestry 4 Tapestry 5 Tapestry 5

• Desarrollo desde cero

• No hay compatibilidad con versiones anteriores

• T4: dificil T5: facil

• T4: facil T5: Automatico

Page 21: Tapestry 5

Entorno de DesarrolloEntorno de Desarrollo

• Eclipse, NetBeans, IDEA

• Maven

• Jetty (Jetty Laucher)

Page 22: Tapestry 5

Ejemplo: Clases JAVA y Ejemplo: Clases JAVA y PlantillaPlantilla

Guess.java

Guess.tml

Page 23: Tapestry 5

Estructura de la aplicaciónEstructura de la aplicación

Page 24: Tapestry 5

EjecuciónEjecución

Despliegue de la aplicación en el servidor Jetty

Aplicación corriendo en el localHost

Page 25: Tapestry 5

Variedad de FrameworksVariedad de Frameworks

Page 26: Tapestry 5

UsuariosUsuarios

Page 27: Tapestry 5

Factores a tener en cuentaFactores a tener en cuenta

• El tipo de aplicación a construir.

• Nivel de complejidad de la aplicación.

• Comunidad desarrolladora de la herramienta.

• Soporte y Mantenimiento.

• Futuro de la tecnología a emplear.

• Detalles técnicos de cada herramienta.

Page 28: Tapestry 5

LinksLinks

• Sitio Oficial: http://tapestry.apache.org/tapestry5/

• Blog del Autor: http://tapestryjava.blogspot.com/

• Wiki HowTos: http://wiki.apache.org/tapestry/Tapestry5HowTos

• Demos y Ejemplos:

http://jumpstart.doublenegative.com.au:8080/jumpstart/

Page 29: Tapestry 5

PREGUNTASPREGUNTAS