eight=34 alt=imagem_pdf.jpg src="/imagens/imagem_pdf.jpg" width=34 border=0>

Java Server Faces e MVC

Implementando o modelo MVC com JSF (e um comparativo com .NET)

Atualmente, o desenvolvimento de soluções web é cada vez mais comum e, em muitos casos, indispensável. Com isso, tem se observado o surgimento de inúmeros mecanismos que visam facilitar este tipo de desenvolvimento (chamados de framework). Dentre os mais populares, temos o framework JSF (Java Server Faces) e o framework .NET (Microsoft).

Estes possuem uma característica marcante: são fortemente baseados no modelo MVC (Model View Controller). Desta forma, tornou-se imprescindível ao desenvolvedor, qualquer que seja a sua linguagem de preferência, conhecer mais esta sigla e saber utilizar suas vantagens.

Outra característica desses frameworks é que a maioria não se restringe somente ao desenvolvimento de páginas web. O framework JSF, por exemplo, pode ser utilizado para o desenvolvimento de programas tradicionais (software desktop) ou então para o desenvolvimento de aplicativos web para serem acessados principalmente por dispositivos móveis, como palms e celulares.

Este artigo apresenta como implementar uma aplicação web utilizando os conceitos de MVC. Essa aplicação consiste de uma pequena página que interage com o usuário implementada através do framework JSF. Feito isto, vamos também mostrar como se implementa o mesmo aplicativo através do .NET Framework, com a linguagem C#. No final do artigo realizamos uma comparação entre o JSF e o framework .NET. Esta comparação visa mostrar a equivalência das duas tecnologias (ambas podem dar suporte ao modelo MVC), apesar de utilizarem mecanismos de desenvolvimento distintos (arquivos de configuração, organização dos arquivos e classes compiladas).

O modelo MVC

O modelo MVC é uma forma de organizar a arquitetura da aplicação a ser desenvolvida criando três camadas distintas: Modelo, Visão e Controlador. Essas camadas são independentes uma das outras e são compostas por classes distintas para manipular cada parte do software: um conjunto de classes para trabalhar com os dados, outro para interagir com a interface gráfica e outro conjunto com os elementos de controle.

Essa solução arquitetural é bem comum no desenvolvimento de software. Ela é utilizada, por exemplo, nos componentes da API Java/Swing.

Resumindo, podemos atribuir as seguintes responsabilidades para cada componente do modelo MVC:

·         Modelo: manipular os dados da aplicação, sejam eles dados persistidos ou os dados informados pelo usuário;

·         Visão: implementar a aparência da interface gráfica da aplicação;

·         Controlador: implementar as regras de negócio. Ele é composto por componentes que utilizam os dados do modelo como dados de entrada para a lógica da aplicação.

 

A Figura 1 permite ilustrar essas responsabilidades.

Ao fazer uma relação com uma aplicação web, temos os seguintes mapeamentos (Nota 1):

·         Modelo: manipula dados do banco de dados e dados digitados pelo usuário em formulários;

·         Visão: implementada através de tags HTML;

·         Controlador: implementado através de componentes ou scripts que rodam no servidor (exemplo: ASP, JSP, PHP).

 

Figura 1. As três camadas do MVC. O Controlador atualiza os dados do Modelo para que a Visão possa atualizar a interface visível ao usuário

 

Nota 1. Separação em 3 camadas

É interessante salientar que seguir este modelo implica em jamais utilizarmos código de programação (java, asp, php etc.) ou em fazermos acessos a bancos de dados em meio às tags HTML. Em um software desktop, implica em jamais colocarmos a lógica da aplicação diretamente em um manipulador de evento como o manipulador do evento click de um botão gráfico.

Utilizando Java e JSF na implementação de uma aplicação MVC

Para exemplificar uma aplicação utilizando os conceitos de MVC, implementaremos uma funcionalidade web utilizando Java e JSF. Para testar essa aplicação, o container web Tomcat 5.5 foi utilizado.

O JSF é um conjunto de ferramentas criadas com o intuito de facilitar o desenvolvimento de aplicações Java/JSP. Ele é formado por um conjunto de tags usadas na criação de páginas JSP que oferecem ao desenvolvedor diversas funcionalidades como a obtenção de forma automática dos dados digitados pelo usuário nos formulários da aplicação.

 Para se desenvolver uma aplicação JSP utilizando JSF é necessário instalar um conjunto de bibliotecas (arquivos .jar) na pasta WEB-INF/lib e a realização de algumas configurações nos arquivos WEB-INF/web.xml e WEB-INF/faces-config.xml (Nota 2).

Essas bibliotecas podem ser obtidas no site da Sun, junto com toda a documentação ensinando a realizar a configuração do JSF. Para facilitar, disponibilizaremos para download os arquivos deste exemplo já incluindo os arquivos .jar necessários (veja seção Links Interessantes).

Devido à simplicidade do nosso exemplo (visto que o nosso objetivo não é ensinar o uso de JSP ou JSF, mas sim como utilizar os conceitos MVC em aplicações web), a principal funcionalidade oferecia pelo JSF que implementaremos será a obtenção de forma automática dos dados digitados pelo usuário no formulário.

Uma aplicação JSP geralmente possui, para cada formulário, um objeto correspondente no servidor conhecido como bean. Este corresponde a uma representação não visual do formulário visível na interface gráfica. No JSF, temos uma configuração que informa quais são os beans utilizados. O formulário é então montado na tela utilizando-se as tags do JSF e cada campo é associado ao campo correspondente no bean. Com isso, pode-se trabalhar com os dados do formulário de forma direta (através do bean) sem a necessidade de uma leitura explícita dos parâmetros (valores dos campos) enviados pela requisição.

Exemplo em JSF

Para demonstrar a utilização do padrão MVC, implementaremos uma pequena aplicação composta por apenas uma tela e um formulário:

1.             Inicialmente, um campo para entrada de texto e um botão são visualizados;

2.             Ao pressionar o botão, uma ação é disparada para o controlador. Esta ação corresponde a um método implementado em uma classe Java;

3.             O método correspondente à ação irá alterar o estado dos beans correspondentes aos elementos visuais da tela. No caso:

a.             O valor digitado no campo de entrada será exibido no rótulo de saída;

b.             O campo de entrada será ocultado;

c.             O botão será ocultado.

 

Após o botão ser pressionado, a tela irá refletir um dos dois possíveis estados da aplicação: exibir uma mensagem informando que o campo deve ser preenchido, ou mostrar o valor que havia no campo. A  Figura 2 exibe o diagrama de seqüência correspondente a estas ações.

Figura 2. O Diagrama de Seqüência seguindo a notação da UML 2.0.

 

Nosso exemplo em JSF utiliza três elementos visuais:

...

Quer ler esse conteúdo completo? Tenha acesso completo