Artigo Java Magazine 58 - Desenvolvimento Web com Apache Wicket

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

Artigo da Revista Java Magazine - Edição 58.

Esse artigo faz parte da revista Java Magazine edição 58. Clique aqui para ler todos os artigos desta edição

Desenvolvimento web com Apache Wicket

 

Programação Orientada a Componentes em ambientes web

Crie sistemas web com o mesmo estilo de programação dos sistemas desktop

Introdução

O Apache Wicket é um framework orientado a componentes para o desenvolvimento de aplicações web com Java. Essa característica o torna diferente da maioria dos outros frameworks como, por exemplo, Struts ou Spring MVC, que baseiam-se na interceptação de requisições HTTP e a execução de ações associadas a essa requisição. No Wicket, uma ação é iniciada através de um evento enviado para determinado componente. Existem outros frameworks web orientados a componentes, por exemplo, Tapestry e JSF. A Figura 1 apresenta um gráfico que mostra, no eixo X, alguns modelos de programação em ambientes web, e, no eixo Y, o quão fácil é programar nesses modelos. É possível perceber ao longo do gráfico que no modelo de Servlets ou JSPs estamos programando sem utilizar frameworks e, por isso, temos uma menor facilidade de desenvolvimento. Percebe-se também que o WebWork e o Struts são frameworks que se encaixam melhor no modelo MVC, enquanto que o Wicket e o JSF se encaixam no modelo de Componentes.

 

Figura 1. Modelo de Programação x Facilidade de Desenvolvimento[1]

Características

Dentre as características e recursos do Apache Wicket, podemos destacar o seguinte:

·         A configuração do Wicket não exige a criação/manipulação de XMLs;

·         O seu modelo de programação Orientado a Componentes torna o desenvolvimento de sistemas web parecido com o desenvolvimento de sistemas desktop com Swing. As páginas web e componentes do Wicket são objetos Java, que suportam encapsulamento, herança e eventos;

·         O Wicket não mistura HTML com código Java nem faz uso de taglibs. Os arquivos HTML possuem apenas código HTML e são associados com classes Java através de atributos chamados Wicket ids, existentes nos elementos HTML. Como o Wicket trabalha com HTML puro, os trabalhos do desenvolvedor e do web designer realmente podem ser independentes;  

·         Validação de dados simples, flexível e fácl de estender;

·         É possível usar os recursos de localização em páginas HTML, imagens e vários outros recursos;

·         Capacidade de suportar o botão Voltar do navegador através do gerenciamento de versões das páginas. Quando um usuário submete um form ou clica em um link de uma página que foi acessada através do botão Voltar, o Wicket é capaz de identificar se a aplicação ficou em um estado inválido e, nesse caso, redirecionar o usuário para um aviso de página expirada;

·         O Wicket possui componentes que são simples de usar e desenvolver;

·         Possibilidade de funcionamento em ambientes em cluster sem nenhuma configuração adicional. Como o Wicket faz uso de sessão para armazenar os estados dos componentes, pode ser necessário fazer ajustes no mecanismo de replicação do estado dos componentes;

·         O Wicket elimina a necessidade de gerenciar atributos em sessão manualmente. As páginas e componentes são transparentemente armazenados em sessão. Todos os objetos armazenados em sessão podem participar da replicação em um cluster;

·         Capacidade de gerar imagens dinamicamente simplesmente através da implementação de um método paint(), de forma parecida com o Swing;

·         O Wicket possui componentes para listagens de dados que são muito fáceis de usar. Alguns componentes fornecem também suporte a paginação de listas, com ou sem suporte a Ajax;

·         Facilidade de integração com outros frameworks, como Spring e Hibernate.

 

Observando as características apresentadas, percebemos que algumas das mesmas também estão presentes em outros frameworks, conforme exemplos listados na Tabela 1. Entretanto, o que torna o Apache Wicket diferente é a unificação dessas características em um único framework, simples, eficiente e completo.

 

Característica

Framework

Desenvolvimento através de componentes

JavaServer Faces, Tapestry

Utilização de HTML para criação das Views

Tapestry

Configuração sem utilização de XML

Stripes

Tabela 1. Exemplos de características do Wicket presentes em outros frameworks de desenvolvimento web

Alguns conceitos importantes

Para facilitar o entendimento do Wicket é importante definir dois conceitos que serão bastante utilizados no processo de desenvolvimento de software com o mesmo: os componentes e os modelos.

Componentes

Um componente é um artefato reutilizável de software que implementa uma interface, que pode ser substituído por outro que implementa a mesma interface. No Wicket, componentes são coisas como links, text fields, formulários, etc. Os componentes do Wicket são organizados de forma hierárquica, da mesma forma que componentes HTML são organizados. A Figura 2 mostra, em forma de árvore, um exemplo dessa essa estrutura hierárquica, na qual existe um componente Page que possui como filhos um ListView (utilizado para listagens de dados) e um Form (que representa um formulário). O Form possui ainda três componentes filhos, um TextField (campo de texto com uma linha), uma TextArea (campo de texto com várias linhas) e um Button (botão). 

 

Figura 2. Exemplo de organização hierárquica de componentes

Todos os componentes do Wicket foram desenvolvidos para serem estendidos. Essa extensão é realizada comumente através da utilização de classes anônimas, conforme será apresentado posteriormente na seção “Testando mais recursos”.

Modelos

Os componentes do Apache Wicket manipulam e exibem dados de um domínio específico. Uma possível forma de realizar essa manipulação ou exibição dos objetos do domínio seria passar esses objetos para os componentes. Entretanto, isso não seria conveniente, pois o componente não saberia que atributos desses objetos ele deveria apresentar e/ou manipular em uma página web. Para essa apresentação e/ou manipulação, precisamos de uma abstração entre o componente e o objeto de domínio, que é fornecida no Wicket através dos modelos. Esses modelos encapsulam objetos de domínio e fornecem aos componentes os mecanismos específicos para que eles saibam trabalhar com tais objetos. Um objeto encapsulado em um modelo é chamado de model object.

Quem trabalha com desenvolvimento desktop utilizando Swing, por exemplo, já deve estar familiarizado com o conceito de modelos. Para quem nunca teve a oportunidade de trabalhar com eles, a sua utilização poderá ser melhor entendida durante a explicação do exemplo apresentado posteriormente, na seção “Testando mais recursos”.         

Desenvolvendo com o Wicket

Iremos agora mostrar, através de exemplos, as características do Wicket apresentadas anteriormente. Inicialmente será criado um programa “Hello, World!”, para que o leitor possa entender o estilo de programação do Wicket e, em seguida, será criada uma aplicação completa, que explora o framework de forma mais ampla.

Um simples “Hello, World!”

Inicialmente, deve-se criar um projeto web com o nome HelloWicket, que possuirá um pacote chamado br.com.jeebrasil.wicket para conter as classes que serão utilizadas no exemplo. Para finalizar a criação da estrutura básica do projeto, é necessário fazer o download do Wicket e colocar os seus jars (Listagem 1) no diretório WEB-INF/lib. O site para download dos jars pode ser encontrado na seção Links.

 

Listagem 1. Jars utilizados na aplicação

log4j-1.2.14.jar

slf4j-api-1.4.2.jar

slf4j-log4j12-1.4.2.jar

wicket-1.3.1.jar

 

Devemos criar agora a página web que irá exibir o “Hello, World!”. A partir desse ponto já é possível ver uma das diferenças do Wicket em relação a outros frameworks: para cada página web da aplicação, será necessário definir uma classe Java e um arquivo HTML. Os dois arquivos criados deverão ter o mesmo nome e estar localizados no mesmo pacote. Em virtude dessa característica, criaremos a classe HelloWorld e o arquivo HelloWorld.html no pacote citado anteriormente.

O arquivo HelloWorld.html pode ser visto na Listagem 2. O seu código é bastante simples e possui, na linha 3, uma tag <span> que contém um atributo wicket:id. Esse atributo indica que essa tag está relacionada a um componente definido na classe Java correspondente ao HTML, neste caso, a um componente chamado ”mensagem”. O conteúdo da tag, “Um texto qualquer...”, não é importante para a aplicação, pois ele será substituído pelos dados que forem associados ao componente na classe Java.

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?