4 Daniel - introdução e comentario.pdf4 Daniel - Introdução e Comentario
Introdução Wicket
-
Upload
adrian-dantas -
Category
Technology
-
view
6.306 -
download
5
description
Transcript of Introdução Wicket
![Page 1: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/1.jpg)
Apache Wicket
![Page 2: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/2.jpg)
Nosso contexto
• Há uma enorme demanda por sistemas web• Os ciclos de desenvolvimento ficaram curtos• As entregas são frequentes
![Page 3: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/3.jpg)
Por que Wicket?
• Wicket é um framework web permite o desenvolvimento rápido e indolor de aplicativos web
![Page 4: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/4.jpg)
O sonho de todo programador programador é
![Page 5: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/5.jpg)
Criar um aplicativo de sucesso
![Page 6: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/6.jpg)
Para ficar bilionário como
![Page 7: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/7.jpg)
Bill Gates
![Page 8: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/8.jpg)
Influente como…
![Page 9: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/9.jpg)
Steve Jobs
![Page 10: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/10.jpg)
Reconhecido como…
![Page 11: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/11.jpg)
Linus Torvald
![Page 12: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/12.jpg)
E viver sossegado como…
![Page 13: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/13.jpg)
Um bebê
![Page 14: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/14.jpg)
Wicket pode fazer isso tudo?
![Page 15: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/15.jpg)
NÃO!!!!
![Page 16: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/16.jpg)
Suas idéias é que trazem o sucesso!
![Page 17: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/17.jpg)
Wicket pode ajudá-lo a torná-las reais
![Page 18: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/18.jpg)
Mais um framework web?
![Page 19: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/19.jpg)
Sobre os “outros” frameworks
![Page 20: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/20.jpg)
Um pouco de história
• A maior parte dos frameworks web Java são baseados num modelo MVC chamado de “Modelo 2”.
![Page 21: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/21.jpg)
O Modelo 2
![Page 22: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/22.jpg)
Deficiências do modelo 2
• Abstração rasa da natureza stateless do procotolo HTTP.
• Administração manual do estado da IU• Excesso de artefatos• Difícil aprendizado• Baixa reutilização de código• Impossibilidade de criar IU complexas
![Page 23: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/23.jpg)
Arquitetura Típica do Modelo 2
![Page 24: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/24.jpg)
Conseqüências
• Induz a criação de código procedural.• Excesso de plumbing code• Progresso lento• Alto custo
![Page 25: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/25.jpg)
Resultado final
• Processo propenso à erros • Dificuldade na evolução e manutenção• Estresse• Desespero• Apátia
![Page 26: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/26.jpg)
Foto do resultado final
![Page 27: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/27.jpg)
Programador em fim de projeto
![Page 28: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/28.jpg)
Você merece mais que isso!!!
![Page 29: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/29.jpg)
Lembra do sonho?
![Page 30: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/30.jpg)
Wicket pode te ajudar.
![Page 31: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/31.jpg)
Como ele difere dos demais?
![Page 32: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/32.jpg)
Uma palavra:
![Page 33: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/33.jpg)
Simplicidade
![Page 34: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/34.jpg)
De que forma?
![Page 35: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/35.jpg)
Utilizando componentes
![Page 36: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/36.jpg)
Sobre orientação à componentes
• A aplicação é construida a partir de componentes reutilizáveis
• Componentes possuem estado• Componentes possuem comportamento
![Page 37: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/37.jpg)
Componentes combinados criam soluções
![Page 38: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/38.jpg)
História
• Criado por um Jonathan Locke, ex-membro da equipe de engenharia do Swing UI da Sun
• Versão 1.0 lançada em 2004• Em 2007 torna-se um projeto da Apache
Software Foundation
![Page 39: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/39.jpg)
Influências
Echo
Swing API
![Page 40: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/40.jpg)
Vantagens
• Código-aberto• Simples• Orientado a componentes• Separação de responsabilidades• Gerenciamento transparente do estado• Não requer configurações em XML• Integração a outros frameworks (Spring,
Hibernate)
![Page 41: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/41.jpg)
Como Wicket faz tudo isso?
![Page 42: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/42.jpg)
+ <HTML>
![Page 43: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/43.jpg)
Na prática
![Page 44: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/44.jpg)
Na práticapublic class OlaMundo extends WebPage {
public OlaMundo() {add(new Label(“mensagem”, “Ola, mundo!!!”));
}}
<html><body>
<h1 wicked:id=“message”>TEXTO A SER SUBSTITUIDO </h1></body></html>
<html><body>
<h1 wicked:id=“message”>Ola, mundo!!!</h1></body></html>
+
=
![Page 45: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/45.jpg)
Conceitos
• Componente• Modelos• Templates• Application• Session
![Page 46: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/46.jpg)
Componente Wicket
• Bloco fundamental da aplicação• Responsável sua própria apresentação• Responde eventos• Componentes podem ser aninhados numa
árvore• Mantém os dados num objeto modelo• Existem mais de 220 componentes no Wicket
Core e no Wicket Extensions
![Page 47: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/47.jpg)
Componentes Wicket
![Page 48: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/48.jpg)
Componentes Wicket
• Cada instância possui um ID único• O template deve conter um markup
equivalente identificado pelo atributo wicket:id
• Javanew Label(“telefone”,”011-222-1111”);
• HTML<span wicket:id=“telefone”>XXX</span>
![Page 49: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/49.jpg)
Componentes Wicket
• Podem estar associados ou não a um template HTML próprio.
![Page 50: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/50.jpg)
Componentes Wicket
• Componentes com templates associados– Page, Panel, Border, Fragment– A classe e template do componente devem estar
no mesmo pacote e ter o mesmo nome
Exemplo:src/com/acme/comp/Slider.javasrc/com/acme/comp/Slider.html
![Page 51: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/51.jpg)
Componentes Wicket
• Componentes sem templates associados– Label, Button, DropDown, Link, Form e outros– Seus templates encontram-se junto a uma
superclasse
![Page 52: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/52.jpg)
Conceitos
• Componente• Modelos• Templates• Application• Session
![Page 53: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/53.jpg)
Modelos
• Implementam a interface Imodel• Encapsulam os objetos de domínio• Ligam os componentes aos objetos do
domínio
![Page 54: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/54.jpg)
Modelos
Exemplos:add(new Label(“nome”, “João”));
add(new Label(“nome”, new PropertyModel(pessoa, “nome”)));
<span wicket:id=“nome”>XYZ</span>
![Page 55: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/55.jpg)
Conceitos
• Componente• Modelos• Templates• Application• Session
![Page 56: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/56.jpg)
Templates
• Escritos em HTML• Os webdesigner pode trabalhar com suas
ferramentas favoritas• As ligações com os componentes são feitas
por meio do atributo wicket:id
![Page 57: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/57.jpg)
Conceitos
• Componente• Modelos• Templates• Application• Session
![Page 58: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/58.jpg)
Application
• Ponto de entrada da aplicação web• Iniciação• Configuração• Configurada no web.xml• Define página home
![Page 59: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/59.jpg)
Conceitos
• Componente• Modelos• Templates• Application• Session
![Page 60: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/60.jpg)
Session
• Mantém o estado da aplicação para um usuário
• Podem ser personalizadas• Com sessões personalizadas pode-se conhecer
o que pode ser armazenado nelas• Sessões personalizadas são type-safe
![Page 61: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/61.jpg)
Criando aplicações com Wicket
![Page 62: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/62.jpg)
Criando aplicações com Wicket
• A forma mais rápida é utilizando um archetype maven$ mvn archetype:create
-DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.3.4 -DgroupId=com.acme-DartifactId=agenda$ cd agenda$ mvn eclipse:eclipse
![Page 63: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/63.jpg)
Criando aplicações com Wicket<html><head><title>Agenda</title></head><body><h1>Endereços</h1><table><tr><td><span>Adrián Dantas</span></td><td><span>880-2600</span></td><td><span>Analista</span></td></tr></table></body></html>
![Page 64: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/64.jpg)
Criando aplicações com Wicket<html><head><title>Agenda</title></head><body><h1>Endereços</h1><table><tr wicket:id="registros"><td><span>Adrián Dantas</span></td><td><span>880-2600</span></td><td><span>Analista</span></td></tr></table></body></html>
![Page 65: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/65.jpg)
Criando aplicações com Wicket<html><head><title>Agenda</title></head><body><h1>Endereços</h1><table><tr wicket:id="registros"><td><span wicket:id="nome">Adrián Dantas</span></td><td><span wicket:id=”telefone">880-2600</span></td><td><span wicket:id=”profissao">Analista</span></td></tr></table></body></html>
![Page 66: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/66.jpg)
Criando aplicações com Wicketpackage com.acme.paginas;
import org.apache.wicket.PageParameters;import org.apache.wicket.markup.html.WebPage;import org.apache.wicket.markup.html.basic.Label;
public class ListaPage extends WebPage {public ListaPage(final PageParameters parameters) {
// Configuracao dos componentes da pagina}
}
![Page 67: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/67.jpg)
Criando aplicações com Wicketpublic class ListaPage extends WebPage {public ListaPage(final PageParameters parameters) {
add(registrosListView = new ListView("registros", registrosList) {protected void populateItem(ListItem item) {
final Registro registro = (Registro) item.getModelObject();item.add(new Label("nome", registro.getNome()));item.add(new Label("telefone",
registro.getTelefone()));item.add(new Label("profissao",
registro.getProfissao()));}
});}
![Page 68: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/68.jpg)
Resumo
• Wicket fornece um ambiente rápido de desenvolvimento de aplicações web
• Os desenvolvedores podem se concentrar na lógica de negócios
• Utiliza componentes em Java e HTML para apresentação
• É simples e divertido!
![Page 69: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/69.jpg)
Referências
• Website– http://wicket.apache.org/
• Wiki– http://cwiki.apache.org/WICKET/
• IRCNos servidores Freenode ##[email protected]
![Page 70: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/70.jpg)
Perguntas
![Page 71: Introdução Wicket](https://reader036.fdocumentos.tips/reader036/viewer/2022081508/55621893d8b42a7d028b56d0/html5/thumbnails/71.jpg)
OBRIGADO!!!