Desde os primórdios do desenvolvimento web, desenvolvedores procuram ferramentas que possam lhe ajudar a desenvolver aplicações com mais eficiência e flexibilidade. Por causa dessa necessidade, acabaram surgindo tecnologias como CGI, PHP, ASP. Após algum tempo, surgiram novas tecnologias como o Java Servlet e o Java Server Pages (JSP) que utilizam conceitos importantes, como a separação de “interesses”.

A separação de interesses consiste em separar a aplicação em camadas, criando uma camada contendo os objetos de negócio, uma camada responsável pela interface com o usuário e uma camada que controla o fluxo da aplicação. O MVC é uma estratégia de separação de interesses.

A partir desse conceito nascem diversos frameworks. Alguns ficaram muito famosos como é o caso do Tapestry, Spring MVC e WebWork. Esse artigo fornece um guia detalhado sobre como construir aplicações web em Java utilizando o framework WebWork.

O Framework WebWork

O WebWork é um poderoso framework MVC para desenvolvimento de aplicações web em Java. O WebWork é baseado em outro framework chamado XWork. A Nota 1 fornece maiores informações sobre o XWork.

 

Nota 1. Conhecendo o XWork

O XWork é um framework open source que implementa o padrão de projeto Command (veja a Nota 2) e forma o núcleo do WebWork. O XWork pode ser utilizado tanto por aplicações web quanto por aplicações desktop.

A grande vantagem do WebWork ser derivado do XWork é poder ter o melhor dos dois frameworks, como o suporte a validação, conversão de tipos e outras funcionalidades do XWork; e o suporte a internacionalização, taglibs, temas, templates e muitas outras funcionalidades do WebWork.

 

Nota 2. Padrão de Projeto Command

O propósito do padrão de projeto Command é encapsular uma requisição como um objeto, permitindo que os clientes parametrizem diferentes requisições, filas ou fazer o registro de log de requisições e dar suporte a operações que podem ser desfeitas.

 

O WebWork foca na simplicidade e produtividade, oferecendo aos desenvolvedores as seguintes opções:

·          Um flexível framework de validação que permite desacoplar regras de validação das ações;

·          Conversão de tipos que lhe permite converter facilmente objetos de uma classe para outra;

·          Uma poderosa linguagem de expressão baseada em OGNL (Object-Graph Navigation Language);

·          Inversão de controle utilizando a integração com o framework Spring. A inversão de controle é uma estratégia onde as dependências são retiradas da classe que as contém. Ao invés da classe instanciar internamente cada objeto que necessita, ela recebe simplesmente as referências;

·          Tags reutilizáveis que permitem o desenvolvimento usando Temas e Templates;

·          Interceptors que fornecem várias funcionalidades, incluindo a prevenção de submissão múltipla de formulários;

·          Internacionalização (i18n);

·          Fácil integração com Hibernate (framework de mapeamento objeto-relacional), Spring (framework JEE ligthweight), SiteMesh (mecanismo de templates) e JSTL (biblioteca padrão de tags);

·          Suporte a vários tipos de camada de apresentação, como JSP, e os mecanismos de templates Java: FreeMarker e Velocity;

·          Suporte avançado a Ajax através de temas.

 

O WebWork é bastante comparado com outros frameworks famosos, como o Struts, JSF, Spring MVC e até frameworks não Java, como é o caso do Ruby on Rails. O concorrente direto do WebWork ainda é o Struts que é bastante utilizado, mas o Struts possui alguns sérios problemas que serão comparados com o WebWork a seguir.

 

Struts

?      Prós

       Há muito mercado para desenvolvedores Struts;

       Enorme quantidade de informação e exemplos;

       TagLib HTML com amplo suporte a renderização de componentes HTML;

?      Contras

       Struts força a programação para classes abstratas ao invés de interfaces;

       Uma ação é difícil de ser testada e requer uma extensão do Junit, o StrutsTestCase;

       O Struts utiliza a JSTL EL como linguagem de expressão enquanto o WebWork possui sua própria linguagem de expressão.

 

WebWork

?      Prós

       Arquitetura simples de entender e customizar;

       TagLib fácil de customizar utilizando FreeMarker e Velocity;

       Uma ação é muito fácil de ser testada com o JUnit, e a utilização do IoC (Inversion Of Control) facilita bastante o teste;

       O WebWork utiliza uma poderosa linguagem de expressão chamada OGNL.

?      Contras

       Comunidade pequena e ainda em crescimento;

       Pouca documentação comparada à documentação do Struts. Mas já existe um livro e bastantes documentos sobre a versão 2.2.2.

 

A partir de agora veremos inicialmente como instalar o WebWork e em seguida a sua utilização.

Instalando o WebWork

Como pré-requisito, precisamos de um container. Nesse artigo utilizaremos o TomCat para hospedar as aplicações. Faça o download do TomCat no seguinte endereço http://tomcat.apache.org/download-55.cgi.

Após isso, faça o download da versão 2.2.2 do WebWork no endereço http://www.opensymphony.com/webwork/download.action.

Para configurar o WebWork, descompacte o arquivo em uma pasta de sua preferência e copie o arquivo webwork-2.2.2.jar que fica na raiz da pasta e os arquivos da pasta lib/default para a pasta lib da sua aplicação.

Adicione o mapeamento descrito na Listagem 1 no arquivo web.xml, localizado na pasta WEB-INF.

 

Listagem 1. Configuração do arquivo web.xml

1.  <filter>

2.     <filter-name>webwork</filter-name>

3.     <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>

4.  </filter>

 

5.  <filter-mapping>

...

Quer ler esse conteúdo completo? Tenha acesso completo