Sunteți pe pagina 1din 29

WEBTOOLS 2009

Santiago Murgolo

Andrs Vicente Diego Rojas

Agenda
Introduccin Caractersticas

Pginas
Componentes Integracin

Historia y Configuracin
Ejemplo Factores a tener en cuenta Links

Introduccin
Tapestry es un framework J2EE de cdigo abierto para el desarrollo de interfaces de aplicaciones Web Java basadas en componentes y orientadas a objetos siendo: Dinmicas Robustas Altamente escalables se basa en el estndar de la API Java Servlet, por lo que funciona en cualquier contenedor servlet o servidor de aplicaciones.

Caractersticas
Orientado a componentes:

Una aplicacin se compone de un conjunto de pginas Web, cada una de las cuales se construye a partir de componentes que pueden generar diversos eventos ante los que la pgina puede reaccionar.

Caractersticas (cont.)
Implementa la arquitectura modelo-vista-controlador(MVC)

Sigue el enfoque POJO: convenciones de nombres Anotaciones


Soporte para validacin de datos de entrada Soporte para inyeccin de dependencias Soporte para inversin de control (IoC) Inyecciones solo por constructor Integracin con otras tecnologas

Caractersticas (cont.)
El framework maneja: Procesamiento de demandas (analisis, envio)

Creacin de URL
Control del estado de la pgina (persistencia de los datos) Validacin de los datos ingresados por el usuario Internacionalizacin de la informacin Control de errores y generador de reportes de excepciones

Paginas 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 pgina y el objetivo de la plantilla es generar la vista de la pgina

Paginas: Plantillas
Las plantillas de los componentes son: documentos gramaticalmente correctos en XML no hay JSP la mayora son archivos XHTML Tiene extension .tml El XML incluir referencias a componentes y tambin puede incluir expansiones

Pginas: Ciclo de vida


Para obtener eficiencia Tapestry mantiene un pool de instancias para cada pgina Cuando una pgina es requerida, obtiene una instancia del pool para atender esa peticin Una vez atendida la peticin la pgina es devuelta al pool Antes de devolverla al pool las variables de la instancia son inicializadas para borrar los datos especficos de esa peticin

cada vez que se trabaja con una pgina puede ser una instancia distinta

Paginas: Filtros
Proporcionan un mecanismo estndar para interceptar peticiones y respuestas dentro de un contenedor de Servlets, permitiendo utilizar la informacin contenida, adems:
Capturan una peticin 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

Integracion en un contenedor de servlets


Se integra como un filtro de pedidos
En el fichero web.xml debe declararse la clase del filtro org.apache.tapestry.TapestryFilter Puede drsele 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 peticin es Index

web.xml

Integracin: Tapestry + Spring


La integracin permite a los beans definidos en Spring ser inyectados en los servicios de IoC de Tapestry, como as tambin en los componentes
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>1.2.8</version> </dependency>

pom.xml

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

web.xml

Componentes
Son clases concretas ya que no extienden de ninguna clase base ni implementan interfaces No necesitan configuracin via archivos XML Facil empaquetamiento y reutilizacin en otras aplicaciones Con la notacin @component se puede embeber un componente con caractersticas 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; }

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

Page.tml

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

Page.java

Componentes: Clases JAVA


Caractersticas de las clases java : POJO (Plain Old Java Object)
No hay una configuracin XML involucrada Solo basta con ponerlas en el paquete adecuado El estado de la pgina se almacena con propiedades de objetos Manejadores de eventos sobre componentes

Se utilizan convenciones de nombrado o anotaciones


para asociar mtodos a eventos generados por componentes

Componentes: Clases JAVA ejemplo

Componentes: Manejo de eventos


Se usan para dos propsitos: Representan pedidos originados por el usuario
Representan el flujo de control dentro de una solicitud Metodos para manejo de eventos: Convencin de Nombres OnEventFromComponent Anotacin @OnEvent
@OnEvent(value = "action", component = "select") void valueChosen(int value)

{
this.value = value; }

void onActionFromSelect(int value) { this.value = value; }

Componentes: Validacin de datos


Validacin declarativa: solo se debe informar a Tapestry que validacin se aplicar sobre un determinado campo de un Form y ste se encarga de implementarla
<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>

Tapestry 4 Tapestry 5

Desarrollo desde cero No hay compatibilidad con versiones anteriores T4: dificil T5: facil T4: facil T5: Automatico

Entorno de Desarrollo

Eclipse, NetBeans, IDEA


Maven Jetty (Jetty Laucher)

Ejemplo: Clases JAVA y Plantilla


Guess.java Guess.tml

Estructura de la aplicacin

Ejecucin
Despliegue de la aplicacin en el servidor Jetty

Aplicacin corriendo en el localHost

Variedad de Frameworks

Usuarios

Factores a tener en cuenta

El tipo de aplicacin a construir.


Nivel de complejidad de la aplicacin. Comunidad desarrolladora de la herramienta. Soporte y Mantenimiento. Futuro de la tecnologa a emplear. Detalles tcnicos de cada herramienta.

Links

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/

PREGUNTAS

S-ar putea să vă placă și