fy>

Clique aqui para ler todos os artigos desta edição

 

Desenvolvimento simples e dinâmico com o WebWork

Adicione recursos avançados à sua aplicação de forma simplificada

No artigo anterior, apresentamos o WebWork, um poderoso framework open source para desenvolvimento de aplicações web em Java.

Neste segundo artigo sobre o WebWork, será demonstrada a integração do WebWork com o Spring Framework e os novos recursos que tornam o desenvolvimento mais simples e dinâmico. Os recursos a seguir serão abordados nesse artigo: upload de arquivos, suporte Ajax e tags avançadas.

As novas versões

Nos últimos meses foram lançadas duas novas versões do WebWork, 2.2.3 e 2.2.4. No primeiro artigo sobre o WebWork publicado na edição 11 da WebMobile, utilizamos a versão 2.2.2. A seguir detalharemos as principais característica de cada versão.

?      Versão 2.2.3: possui principalmente correções que foram detectadas na versão 2.2.2. Alguns componentes foram incluídos, como:

-         date picker, uma calendário popup;

-         head, tag que renderiza a tag HTML <head>;

-         form, tag que renderiza a tag HTML <form>;

-         radio, tag que renderiza a tag HTML <radio>;

-         tree, tag que renderiza um menu em árvore;

-         text, tag que renderiza textos

 

          Além disso, outros componentes foram melhorados como o suporte a Ajax.

?      Versão 2.2.4: essa é a atual versão do WebWork. A equipe de desenvolvimento do WebWork trabalhou arduamente para lançar essa versão pois possui uma série de correções de erros provenientes da versão 2.2.3. A maioria desses erros foram encontrados por usuários do framework e foram relatados no sistema de controle de bugs (consulte a seção links no fim do artigo para maiores informações sobre o endereço do sistema de controle de bugs do WebWork).

 

Para maiores informações sobre a instalação do WebWork, consulte o primeiro artigo sobre o WebWork publicado na edição 11 da WebMobile.

A seguir conheceremos a integração do WebWork com outros frameworks, e logo após, as principais novidades das versões 2.2.3 e 2.2.4.

Integrando o WebWork com outros frameworks

O WebWork é um framework que foi construído pensando na fácil integração com outros frameworks, para que o desenvolvedor não precise “reinventar a roda”, e sim reaproveitar o que já existe. A maioria das integrações existentes foca na disponibilização de recursos que muitas vezes não estão disponíveis no próprio framework.

É possível integrar o WebWork com:

?      SiteMesh: é um mecanismo de templates open source que foca na reutilização de layouts através da utilização de Design Patterns na camada de apresentação;

?      Quartz: é um framework open source que fornece aos desenvolvedores uma forma transparente de agendar tarefas. O Quartz pode ser utilizado tanto em aplicações Java EE quanto Java SE;

?      Spring Framework: é, entre tantas outras coisas, um framework de injeção de dependências.

 

 Um ótimo exemplo de integração é o suporte a injeção de dependências do WebWork. O WebWork possui desde suas primeiras versões um suporte a injeção de dependências baseado no framework Apache Avalon, mas com o surgimento de novos frameworks, a equipe de desenvolvimento decidiu recomendar a integração com o Spring, ao invés de criar outro suporte baseado em novos conceitos que estão sendo utilizados pelos novos frameworks. A integração entre o Spring e o WebWork é feita de maneira simples. Detalhes sobre o conceito de injeção de dependências e sobre a integração do Spring com o WebWork serão vistos a seguir.

Injeção de dependências

A injeção de dependências, também conhecida como dependency injection (DI) em inglês, é uma abordagem de programação onde as dependências de uma classe são fornecidas por um mecanismo externo, ou seja, as dependências são injetadas na classe ao invés da classe criar os objetos que ela necessita. A injeção de dependências também é conhecida como “Princípio Hollywood - Não nos chame, nós chamamos você”.

Ao utilizar a injeção de dependências, conseguimos obter algumas vantagens como: baixo acoplamento e facilidade para criar testes unitários.

Existem três formas de injetar dependências em uma classe:

?      Injeção via interface (tipo 1):    onde as dependências são injetadas através de uma interface;

?      Injeção via setter (tipo 2): onde as dependências são injetadas através de métodos setter (seguindo o padrão JavaBean);

?      Injeção via construtor (tipo 3): onde as dependências são injetadas através do construtor.

 

A partir da versão 1.3 do WebWork, o time de desenvolvimento decidiu incluir o suporte a injeção de dependências. Após passar algum tempo generalizando o conceito e se basear na estrutura do Apache Avalon, uma implementação similar foi adicionada ao WebWork. Essa implementação utiliza a injeção de dependências do tipo 1.

Com o passar do tempo, surgiram novos containers IoC, como o PicoContainer e o Spring. Então a equipe de desenvolvimento decidiu adotar o Spring como container de injeção de dependências recomendado para o desenvolvimento com o WebWork a partir da versão 2.2.

Spring

O Spring é um framework criado seguindo o conceito de container leve, pois torna possível usar POJOs (Plain Old Java Object) para realizar tarefas que previamente só eram possíveis com a utilização de EJBs. Porém, a utilização do Spring não se restringe apenas ao lado do servidor. Qualquer aplicação Java pode tirar proveito do dele em termos de simplicidade, testabilidade e baixo acoplamento.

O Spring utiliza a injeção de dependências através de métodos setter e construtores. A injeção através de métodos setter é realizada pela chamada a métodos setPropriedade declarados nas classes. A Listagem 2 exibe um exemplo de injeção de dependências que utiliza injeção através do método setPropriedade e a Listagem 3 exibe um exemplo de injeção através de construtor.

 

Listagem 2. Injeção via métodos setter.

1. public class Locadora {

 

         // dependência da classe Locadora

2.       private Filme filme;

        

         // método set que permite o Spring injetar um Filme

3.       public void setFilme(Filme filme) {

4.                this.filme = filme;

5.       }

 

6. }

 

Listagem 3. Injeção via método construtor.

1. public class Locadora {

 

         // dependência da classe Locadora

2.       private Filme filme;

        

         // construtor que permite o Spring injetar um Filme

3.       public Locadora(Filme filme) {

4.                this.filme = filme;

5.       }

 

6. }

 

A integração do Spring com o WebWork é bem simples. Veremos agora os passos necessários para habilitar a integração. A Nota 1 fornece maiores informações sobre como obter o Spring.

 

Nota 1. Obtendo o Spring Framework

Para baixar o Spring, acesso o seguinte endereço: http://www.springframework.org/download e baixe a última versão estável (a versão utilizada nesse artigo é a 2.0). Você pode optar pela versão com dependências e a versão sem dependências. Dê preferência a versão do Spring Framework que possui todas as dependências inclusas no mesmo arquivo de download. Dessa forma, as dependências necessárias para a execução de todos os módulos do Spring serão baixadas no mesmo arquivo.

Configurando a integração com o Spring Framework

Utilizaremos a estrutura de diretórios da Figura 1 ao longo do artigo para exemplificar como um projeto web deve ser estruturado.

Figura 1. Estrutura de diretórios.

Os passos para configuração são:

1. ...

Quer ler esse conteúdo completo? Tenha acesso completo