Arquivo por categoria JSTL

O Ciclo de Vida das Requisições no JavaServer Faces

De acordo com a especificação da arquitetura JSF, toda requisição possui um ciclo de vida, em que cada requisição é tratada de uma maneira. Existem seis diferentes fases, entretanto nem toda requisição percorre todas elas. Dependendo do tipo de requisição, ou ações a serem executadas, algumas fases simplesmente são puladas. A Figura abaixo representa o ciclo de vida de uma requisição no JSF.

Após uma requisição o JSF restaura uma cópia da página do cliente armazenada no FacesContext, no lado servidor ou cria uma nova página caso ela ainda não exista. Essa fase é chamada de Restore View (Restaurar a Visão). Após essa fase o JSF atualiza os valores da página  do servidor com os novos valores dos componentes da página do cliente, como por exemplo, valores de campos de formulários, cookies etc. Essa fase é chamada de Apply Request Values (Aplicar Valores da Requisição).

Figura 6 – O Ciclo de Vida das Requisições no JavaServer Faces

Adaptado de: GEARY & HORSTMANN, 2010

Após as fases anteriores é iniciada a fase Process Validations (Processar Validações) nela é feita a conversão e/ou a validação dos novos valores dos componentes. Por exemplo, na página do cliente quando ele digita uma data em um <p:inputCalendar>,  este valor é atribuído como String  ao componente, antes deste valor ser atribuído à sua classe Java correspondente é necessário convertê-lo para o tipo Date. A validação de campos também é efetuada nessa fase, por exemplo, a validação de um e-mail ou se uma data final não é menor que a data inicial. Logo em seguida ocorre a Update Model Values (Atualização os Valores do Modelo) fase na qual os valores dos componentes enviados pelo cliente são atribuídos às classes Java correspondentes.

Posteriormente ocorre a fase Invoke Application (Invocar a Aplicação) nela os métodos (action ou actionListener) dos botões e links que estão configurados nos formulários da página do cliente são finalmente invocados. Nessa fase todos os valores já estão convertidos e validados, e é possível manipular todos os dados inseridos pelo usuário.

Por fim, a Render Response (Renderizar a resposta) última fase do ciclo de vida do JSF é executada e todos os componentes são exibidos com seu estado corrente atualizado. Nessa etapa o estado da view é salvo no objeto FacesContext para a próxima requisição ou para operações no lado do servidor. Dessa forma o processamento da requisição termina e a resposta é renderizada. Além dessas seis fases existem outras subfases menores mas que não é tão relevante explicá-las neste post.

Referências:

GEARY, David; HORSTMANN, Cay. Core JavaServer faces. 3ed. Redwood Shores: Prentice Hall, 2010.

Tags: , , , ,

O JavaServer Faces (JSF)

Desde o surgimento de Servlets e JSPs, muitas tecnologias Java e frameworks foram surgindo com o objetivo de aumentar a produtividade e prover mais recursos ao desenvolvimento de aplicações web. Entretanto como se pode observar na figura abaixo os Servlets continuam sendo a base de todas as aplicações Java para a web. Assim como as outras tecnologias o JavaServer Faces cria apenas um nível de abstração sobre os Servlets, tornando o desenvolvimento de aplicações mais fácil, escalável e robusto. Outro ponto positivo disso tudo está em possibilitar o uso de tags JSP, JSTL ou mesmo Servlets dentro de aplicações JSF.

A Arquitetura do JavaServer Faces

Fonte: ORACLE, 2010

Nesse sentido o JSF é um framework para o desenvolvimento de aplicações web MVC e oferece uma separação clara entre a lógica da aplicação e a de apresentação (ORACLE, 2010).  Ele permite o desenvolvimento de aplicações web com uma separação mais refinada entre a lógica e a apresentação do que é tradicionalmente oferecido por outras tecnologias. Esta separação também permite que cada membro de uma equipe de desenvolvimento possa se concentrar em uma única parte do processo de desenvolvimento. Além de possibilitar uma maior facilidade de integração entre os componentes.

A partir da versão 2.0 do JSF houve a introdução do Facelets que permite uma maior “componentização” das páginas JSF. Dentre as vantagens oferecidas pelo Facelets pode se destacar que:

  • O Código pode ser reutilizado e estendido para os componentes através  de templates e composições;
  • Possibilita a utilização de @annotations para registrar automáticamente os mannaged beans, backing beans, validators e outros;
  • As regras de navegação implícitas permitem aos desenvolvedores configurar rapidamente a navegação entre as páginas. Esses recursos reduzem consideravelmente a necessidade de fazer configurações em arquivos XML;
  • Por fim, o JSF oferece uma rica arquitetura para o gerenciamento de estado dos componentes, processamento de dados, validação de entrada do usuário e manipulação de eventos.

Uma aplicação JSF típica é composta de páginas web, managed beans, backing beans, validadores, conversores e regras de navegação. Há uma certa confusão na definição entre os managed beans e backing beans. Para a ORACLE (2010) managed beans são todos os beans de suporte a aplicação, já Mann(2005), por sua vez, afirma que os beans de suporte são backing beans. Nesse trabalho foi considerada a definição dada por Geary & Horstmann(2010). Para eles managed beans diferenciam-se de backing beans considerando suas características no suporte a aplicação. Todos aqueles que encapsulam regras de negócio e efetuam algum, processamento de informações são denominados managed beans. Aqueles que oferecem apenas suporte a página são considerados backing beans.

O próprio JSF possui seus conversores e validadores entretanto algumas vezes é necessário a criação de conversores e validadores específicos para a aplicação. Eles servem para verificar por exemplo se um campo de senha é igual a outro campo de confirmação de senha antes de cadastrar um usuário. Já os conversores são responsáveis por efetuar conversão de tipos. As regras de navegação, por sua vez, servem para definir o fluxo de navegação do usuário dentro da aplicação. Até a versão 1.2 as regras de navegação e o mapeamento de managed beans eram feitos via XML no arquivo “faces-config.xml” a partir da versão 2.0 é possível configurá-las dentro dos próprios managed beans. Outro ponto relevante do JSF é o ciclo de vida das requisições que será tema do próximo tópico.

Referências:

ORACLE. The Java EE 6 Tutorial. Redwood City: ORACLE, 2010

MANN, Kito D. JavaServer Faces In action. 1ed. Greenwich: Manning, 2005.

GEARY, David; HORSTMANN, Cay. Core JavaServer faces. 3ed. Redwood Shores: Prentice Hall, 2010.

Tags: , , , , , , ,