Por que eu devo ler este artigo: Este artigo tem por objetivo apresentar um tutorial sobre a construção de uma aplicação web com JavaServer Faces e RichFaces. Durante o desenvolvimento serão aplicadas boas práticas e design patterns, como o padrão arquitetural Model-View-Controller, e o uso da ferramenta Maven para construir e gerenciar o projeto.


Em que situação o tema é útil:
Este artigo ajudará o leitor que deseja conhecer mais detalhadamente sobre o desenvolvimento de aplicações web com o framework RichFaces, seguindo o padrão MVC e utilizando o Maven como ferramenta de construção, automação de testes e gerenciamento de dependências do projeto.

O padrão arquitetural MVC (Model-View-Controller) acabou se consolidando como uma unanimidade no desenvolvimento de aplicações web. Baseado neste padrão surgiu a especificação JavaServer Faces (JSF), atualmente considerada pela comunidade Java como uma referência em termos de desenvolvimento de sistemas web.

Entretanto, mesmo com os recursos oferecidos pelo JSF, ainda se faz necessário empregar frameworks que visam simplificar o processo de construção da interface visual da aplicação. O RichFaces é um destes frameworks. Ele disponibiliza uma rica biblioteca de componentes de interface com o usuário (User Interface, ou UI)que são utilizados em aplicações desenvolvidas a partir do JSF. Uma das principais características do RichFaces é o uso integrado de Ajax em seus componentes.

Quando trabalhamos com essa diversidade de tecnologias, torna-se um processo trabalhoso ter que fazer o download de um framework, procurar e baixar todas as suas dependências e, além disso, ter que se preocupar com a compatibilidade entre as versões destas dependências.

O projeto Maven, hospedado pela Apache Software Foundation, é uma ferramenta de automação de compilação que proporciona vários recursos, como o gerenciamento de dependências, a facilitação do processo de construção do projeto, o controle de releases e a execução de testes automatizados. De acordo com seu site oficial, o Maven pode ser usado para construir e gerenciar qualquer projeto baseado em Java, tornando sua construção mais simples e acessível para o desenvolvedor.

Sabendo da importância da aplicação de design patterns, de boas práticas e dos benefícios proporcionados pelo Maven, neste artigo será apresentada a construção de uma aplicação Web para realizar o cadastro de livros e autores de uma livraria, utilizando para isso o JSF 2.0, RichFaces 4.3.1, Maven 3.0.5 e Tomcat 7.0. Também será abordada a configuração e integração de todas estas tecnologias. Apesar de simples, essa aplicação introduzirá o leitor aos principais conceitos dessas tecnologias para que ele possa ter uma base para criar aplicações mais complexas.

O padrão MVC

O padrão arquitetural Model-View-Controller (Modelo-Visão-Controle), ou apenas MVC, introduzido por Trygve Reenskaug em meados dos anos 70, fornece uma maneira de separar a interface com o usuário da lógica de negócio e do acesso a dados, através de um modelo de três camadas.

Basicamente, o MVC consiste em três tipos de objetos:

  • O Modelo, que contém todos os dados, estados e a lógica da aplicação;
  • A Visão, que representa a interface visual do usuário com o sistema;
  • O Controlador, que define o comportamento da aplicação.

Com base na ação do usuário e no resultado do processamento do modelo, o controlador seleciona uma visualização a ser exibida como parte da resposta à solicitação do usuário. Ao final da execução, a visão deve garantir que a apresentação dos dados reflita o estado atual do modelo.

O MVC tem por principal objetivo obter reusabilidade de código, desacoplando completamente o modelo das outras camadas. Mesmo sendo originalmente criado para soluções desktop, este padrão foi adotado com unanimidade no desenvolvimento de aplicações Web pela maioria das linguagens de programação.

Com o uso do JavaServer Faces, por exemplo, podemos facilmente aplicar o padrão MVC quando desenvolvendo uma aplicação Web em Java. Além disso, por esse framework ser baseado em componentes, ele pode ser facilmente estendido, abrindo portas para a criação de outros componentes ainda mais ricos e poderosos, como os do RichFaces.

Conhecendo o Maven

Com o propósito de facilitar o gerenciamento de dependências e a construção do projeto, iremos criar a aplicação LivrariaDevMedia através do Maven. Por esta ser uma ferramenta Java, é indispensável ter o Java Development Kit (JDK) instalado. Durante o desenvolvimento, utilizaremos ainda algumas das novas funcionalidades que foram incluídas no Java 7, como o gerenciamento automático de recursos, sendo assim, será necessário adotar o JDK 7.

Para instalar o Maven, faça o download no site oficial do projeto, que pode ser consultado na seção Links. A última versão disponível no momento da escrita deste artigo é a 3.0.5. Na página de downloads também podem ser encontradas as instruções de instalação do Maven para cada sistema operacional.

Descompacte o arquivo baixado (ex: apache-maven-3.0.5-bin.zip) no diretório onde você deseja que o Maven seja instalado. Em seguida, adicione a variável de ambiente M2_HOME com seu valor apontando para este diretório (ex: M2_HOME=/home/diego/dev/apache-maven-3.0.5). Por último, adicione esta variável ao seu path. No Linux, por exemplo, seria algo parecido com PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin.

Para verificar se o Maven está funcionando corretamente, digite o comando mvn –v no terminal. Caso tenha problemas na instalação, certifique-se que a variável de ambiente do Java JAVA_HOME) também esteja configurada no PATH.

Se você estiver trabalhando através de proxy, será necessário configurá-lo no Maven, a partir do arquivo settings.xml, localizado dentro da pasta conf no diretório de instalação desta ferramenta. Um exemplo desta configuração é exibido na Listagem 1.

Listagem 1. Configuração do proxy no arquivo settings.xml.

<proxies> 
 <proxy>
    <active>true</active>
    <protocol>http</protocol>
    <host>proxy.somewhere.com</host>
    <port>8080</port>
    <username>proxyuser</username>
    <password>somepassword</password>
    <nonProxyHosts>localhost</nonProxyHosts>
 </proxy>
</proxies>

Criando o projeto

Iniciaremos a construção da aplicação Web a partir do uso da ferramenta de geração de projetos baseados em templates do Maven conhecida como Archetype. Para isso, por meio de um terminal, navegue até o diretório onde deseja que o projeto seja criado e execute o comando:


mvn archetype:generate -DgroupId=com.devmedia -DinteractiveMode=false -DartifactId=LivrariaDevMedia -DarchetypeArtifactId=maven-archetype-webapp

Este comando faz com que o Maven crie a estrutura de diretórios de uma aplicação web Java baseada no template declarado no parâmetro -DarchetypeArtifactId, ou seja, maven-archetype-webapp. Além deste, outros dois parâmetros necessários para a execução desse comando são:

  • –DgroupId: diz a qual grupo de projetos da companhia esta aplicação irá pertencer. A própria Apache recomenda que seu valor siga a mesma convenção de nomeação que é feita para os pacotes do projeto;

  • –DartifactId: define o nome da aplicação, e deve ser um identificador único entre o grupo de projetos.

Para concluir essa etapa, precisamos completar a estrutura de diretórios gerada automaticamente pelo template maven-archetype-webapp, adicionando a ela dois pacotes: um para códigos fonte e outro para códigos de teste. Como ainda não importamos esse projeto em uma IDE, os pacotes deverão ser criados manualmente, o que pode ser feito por meio de um terminal, ou pelo próprio Explorer (caso o leitor esteja usando o Windows). Para isso, acesse a pasta src, localizada no diretório do projeto LivrariaDevMedia, e crie a pasta java dentro de main. Em seguida, volte à pasta src, e nela crie a pasta test. Por último, crie a pasta java dentro de test.

Ao final destes procedimentos, devemos ter uma estrutura de diretórios semelhante à exibida na Figura 1.

Estrutura de diretórios do projeto criado

Figura 1. Estrutura de diretórios do projeto criado.

Importando o projeto no Eclipse

Com o objetivo de facilitar a codificação, vamos integrar o projeto recém-criado ao Eclipse. Para que isso seja possível, no entanto, é necessário gerar os arquivos de configuração desta IDE na pasta raiz do projeto, ou seja, a pasta onde se encontra o arquivo pom.xml.

Felizmente, o Maven possui uma ferramenta que gera as configurações necessárias para que seja possível importar este projeto no Eclipse. Para isso, em um terminal, navegue até a pasta raiz do projeto e execute o comando:

...

Quer ler esse conteúdo completo? Tenha acesso completo