rapid application development com tapestry 5

Post on 17-May-2015

1.280 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação de slides da minha monografia da pós-graduação.

TRANSCRIPT

Marcelo Rodrigues Costa - 2009

Rapid Application Developmentcom Tapestry 5

• 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

• Java• Applets• Servlets• Java Server Pages (JSP)• Expression Languages (JSP 2.0)

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

• 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

• 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

• Propriedades dentro de propriedades• ${currentTime.hashCode}

• Componentes• t:TextField• t:PageLink

• Annotations• @InjectPage• @Persist• @OnEvent(value="submit", component="userInputForm")

• Controlador de eventos• onSubmit() • void onSubmitFromUserInputForm()

• 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

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

• 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).

• O componente BeanEditForm• <t:beaneditform t:id="celebrity"/>• Remover campos (id)• Reordenar• Validação• CSS• DateField• SelectLists com Enums• Agilidade

• CRUD de produtos• Tela de login• Navegação• Área do administrador• Autenticação• Criação de um Componente• Uso do componente “Layout”

• 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

• Criação do componente “Repetidor”• Utilizado para paginação

• Autenticação• Utiliza ASO• Páginas protegidas herdam a classe

“ProtectedPage”

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

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

• 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”.

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

top related