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:
...
Confira outros conteúdos:
Programador Mobile
Desenvolvimento de aplicativos para...
Conceitos básicos para programar para...
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.
