Download - Rapid Application Development com Tapestry 5
![Page 1: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/1.jpg)
Marcelo Rodrigues Costa - 2009
Rapid Application Developmentcom Tapestry 5
![Page 2: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/2.jpg)
• Framework: Benefícios e funcionalidades• A necessidade
• Empresas online• Frameworks
• O objetivo deste trabalho• Avaliar a utilização do Tapestry
• A metodologia• Criação de uma loja virtual
• O escopo deste trabalho• Apresentar recursos do framework
• A estrutura deste trabalho• 5 capítulos
![Page 3: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/3.jpg)
• Java• Applets• Servlets• Java Server Pages (JSP)• Expression Languages (JSP 2.0)
![Page 4: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/4.jpg)
• Frameworks Java para web• Rapid Application Delevopment
• A J2EE• Web• Serviços
• Frameworks
EchoCocoon Millstone OXF
Struts SOFIA Tapestry WebWorkRIFE Spring MVC Canyamo MaverickJPublish JATO Folium JucasVerge Niggle Bishop BarracudaAction Framework Shocks TeaServlet wingSExpresso Bento jStatemachine jZonicOpenEmcee Turbine Scope WarfareJWAA Jaffa Jacquard MacawSmile MyFaces Chiba JBananaJeenius JWarp Genie MelatiDovetail Cameleon JFormular XoplonJapple Helma Dinamica WebOnSwingNacho Cassandra Baritus StripesClick GWT
frameworks J2EE:
![Page 5: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/5.jpg)
• Tapestry• Howard Lewis Ship• HTML & Java• Componentes customizados• Integração com AJAX• Validação• Internacionalização• Inversão de controle
• Detalhes técnicos• Conjunto de páginas (POJO)• Navegação• Estado da aplicação
![Page 6: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/6.jpg)
• Conjunto de páginas• A página Tapestry
Start.tml<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> <head>
<title>Título da página inicial</title> </head> <body>
<h1>Tapestry</h1> <p> Esta é a página inicial</p> <p> A data e hora atual é: ${tempoAgora}. </p> <p> [<t:pagelink t:page="Start">atualiza</t:pagelink>] </p>
</body></html>
Obs:Case insensitive
![Page 7: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/7.jpg)
• Propriedades dentro de propriedades• ${currentTime.hashCode}
![Page 8: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/8.jpg)
• Componentes• t:TextField• t:PageLink
• Annotations• @InjectPage• @Persist• @OnEvent(value="submit", component="userInputForm")
• Controlador de eventos• onSubmit() • void onSubmitFromUserInputForm()
![Page 9: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/9.jpg)
• Páginas (página x classe de página)• Usuários concorrentes (escalabilidade)• O Tapestry reinicia páginas
• onActivate() & onPassivate() – url• OnPassivate() retorna o contexto de ativação
para os métodos onActivate()• Velhas páginas comunicam-se com
novas páginas
@Persist?
Usuario &Valores
Session – 30 min
![Page 10: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/10.jpg)
• O ciclo de vida de uma página• @PageLoaded
método: pageLoaded.• @PageAttached
método: pageAttached.• @PageDeatached
método: pageDeatached”.
Pool de páginas
Página carregada (loaded)
1º Requisição
Página anexada (Attached)(anexada a requisição)
Requisição
Resposta
Página desanexada (Deatached)(retirada da requisição após a resposta)
![Page 11: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/11.jpg)
• Estrutura da aplicação• Páginas em pastas & classes em pacotes
• Nomes lógicos (SecurePage = secure/page)
• ASO (Application State Object)• @ApplicationState
private User user;• ${user.firstName}• Verificar a existência de um ASO: UserExists
(valor booleano convertido automaticamente para true caso este ASO seja criado).
![Page 12: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/12.jpg)
• O componente BeanEditForm• <t:beaneditform t:id="celebrity"/>• Remover campos (id)• Reordenar• Validação• CSS• DateField• SelectLists com Enums• Agilidade
![Page 13: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/13.jpg)
• CRUD de produtos• Tela de login• Navegação• Área do administrador• Autenticação• Criação de um Componente• Uso do componente “Layout”
![Page 14: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/14.jpg)
• O componente “Layout”• Determina que a página utiliza um esqueleto
fixo• <html t:type="Layout" …
• Para determinar a área de conteúdo dinâmico• <t:body>
• Utilização do ciclo de vida de páginas• listar produtos na página incial• Customizar o BeanEditForm
![Page 15: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/15.jpg)
• Criação do componente “Repetidor”• Utilizado para paginação
• Autenticação• Utiliza ASO• Páginas protegidas herdam a classe
“ProtectedPage”
![Page 16: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/16.jpg)
• CRUD de produtos• CREATE: Inserir produtos – componente “BeanEditForm”.• READ: Listar produtos – componente “Loop”.• UPDATE: Atualizar produtos – componente “BeanEditForm”
& id no contexto.• DELETE: Deletar produto – id no contexto.
![Page 17: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/17.jpg)
• CRUD de produtos• CREATE: Inserir produtos – componente “BeanEditForm”.• READ: Listar produtos – componente “Loop”.• UPDATE: Atualizar produtos – componente “BeanEditForm”
& id no contexto.• DELETE: Deletar produto – id no contexto.
![Page 18: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/18.jpg)
• Framework dinâmico e robusto• Padrões de projetos implementados
• Soluções comuns (validação, navegação, controle de erros, ...)
• Suporte em múltiplas plataformas• Model-view-controller (recursos em classes de página, HTML e Beans)
• Extensibilidade• Diferentes implementações (criação de componentes próprios)
• Servidor de aplicação neutro• Sem restrições (servlet conteiner, geralmente usa o Jetty para testes)
• Configurável• Basicamente: Web.xml e a classe de configuração do pacote
“services”.
![Page 19: Rapid Application Development com Tapestry 5](https://reader036.vdocuments.pub/reader036/viewer/2022062405/55581485d8b42a5e468b49c4/html5/thumbnails/19.jpg)
• Útil mas não intrusivo• Não força metodologias (deve usar Java, J2EE consistente e
previsível)
• Geração de código• Não há geração de código (ótimo debugging, tratamento de
exceções)
• Serviços dependentes• Vários serviços e componentes acopláveis (nada
mandatório)
• Desenvolvimento rápido• O futuro do Tapestry