Entender os recursos dos principais frameworks do universo Java, como por exemplo, o JSF – JavaServer Pages, desenvolvido pela comunidade JCP – Java Community Process, é de extrema importância. Primeiro porque o ecossistema de desenvolvimento web para Java é abrangente e cada vez mais comum. Segundo porque somente tendo algum conhecimento sobre eles podemos decidir com assertividade quais utilizar em cada tipo de projeto.

Assim, é neste contexto de frameworks para facilitar o desenvolvimento de interfaces de aplicações web que o JavaServer Pages, um framework MVC – Model-View-Controller se insere. O JSF tem como característica o trabalho orientado a componentes de tela e seus eventos. E foi justamente a grande quantidade de componentes e um design totalmente flexível que fez com que este framework se destacasse entre seus pares. Tornando-o grande ao ponto de acomodar em seu cerne novas tecnologias.

O modelo de programação orientada a componentes e dirigida a eventos do JSF tem na grande abstração de detalhes da interface o seu maior atrativo.  É o que, de certa forma, nos permite associar seus componentes a diversos aspectos da nossa aplicação (objetos Java). Visto que assim, de forma muito simples ele é capaz de promover uma interessante separação entre lógica e regras de negócio, conexões, navegações e acesso a recursos externos.

CARACTERÍSTICAS DO JSF

O JSF – JavaServer Pages, constitui-se de um conjunto de componentes que referenciam a UI – User Interface (Interface do Usuário). Um modelo de programação orientado a eventos ou como gostamos de falar orientado a componentes e dirigido a eventos. E o que certamente muito contribui para o crescimento da comunidade do JSF, um modelo de componentes que permite que desenvolvedores do mundo todo possam criar e fornecer componentes adicionais.

Mas não apenas isso, dentro do contexto de acomodar em seu cerne novas tecnologias, o JSF fornece um conjunto de tags JSP – JavaServer Pages, para acessar os componentes. E mais, utiliza Ajax – Asynchronous JavaScript and XML, em alguns de seus componentes tornando alguns processos mais rápidos e eficientes.

Sobre o JSP, vale ressaltar que se trata de uma tecnologia para desenvolver páginas da Web que oferece suporte a conteúdo dinâmico, e que, fazendo uso de tags possibilita que desenvolvedores consigam inserir código Java em páginas HTML.

Ao passo que o Ajax que em português é JavaScript e XML Assíncronos, fornece  um conjunto de técnicas de desenvolvimento voltado para a web que permite que aplicações trabalhem de modo assíncrono. Tsto é, processando qualquer requisição ao servidor em segundo plano.

O JSF, permite ainda a reutilização de componentes da página. Associa os eventos que ocorrem do lado do cliente com os manipuladores de eventos do lado do servidor. Outro aspecto bastante relevante do JSF é a forma como ele está integrado ao padrão Java EE estando, desse modo, incluído em cada servidor de aplicação Java EE.

JSF E O MVC

O JSF é um framework MVC – Model-View-Controller, que divide o sistema em três camadas, a saber, camada de controle, visão e modelo.

Qualquer ação de interação do usuário a partir da interface da aplicação, está diretamente ligada ao “Managed Beans” – os controles da camada de controle (Controller), que por sua vez são controlados pela classe “Faces Servlet”. São os controles responsáveis por controlar todo o fluxo da página JSF da camada de visão. Toda página JSF possui uma estrutura XHTML,

De acordo com a solicitação do usuário as camadas de visão e de modelo podem ter seu status alterado. E quem comanda a mediação entre entrada e saída que alteram este status é a camada de controle. O Controller é o responsável pelos dados que irão trafegar para a tela e da tela para a camada de persistência.

A View é a responsável por exibir os dados solicitados do Model (modelo). E aidan um botão gerado pela camada de visão pode, quando acionado, provocar algum evento no Controller, provocando dessa forma interações com o usuário, que interage com o Controle (Controller)

Entenda, quando você clica em uma ação de “Salvar”, estes dados que chegam no Controller são posteriormente injetados no Model ou camada de modelo. O Model é uma classe Java que representam estes dados. Esta classe poderia ser também uma classe de serviço, ou uma classe responsável por salvar os dados na base de dados e exibidos pela View (visão). O Model pode também pode ser entendido como modelo de dados.

EM POUCAS PALAVRAS

Uma forma simples de compreender a dinâmica entre as três camadas é partindo do exemplo de uma consulta ao banco de dados. Assim, quando uma consulta precisa ser realizada o Controller busca pelos dados no Model que os retorna para serem exibidos na View.