O padrão MVC, de modo geral, divide uma aplicação em três camadas: modelo, visão e controle. A visão é responsável por apresentar a interface ao usuário. O modelo, pela representação dos objetos do negócio e fornecimento de acesso aos dados do negócio. E o controle define o comportamento da aplicação interpretando as ações de modo a realizar as devidas chamadas ao modelo. De modo simplificado, é dito que o controle fornece uma ligação entre visualização e modelo.
Esse padrão contribui para uma melhor separação de tarefas em uma equipe de desenvolvedores. Pois, tendo a aplicação separada por camadas, é mais fácil direcionar pessoas com habilidades diferentes para se concentrarem em partes diferentes do código.
Veja o diagrama abaixo que demostra a relação entre modelo, visão e controle onde as linhas sólidas indicam associação direta e as tracejadas indicam associação indireta.
O que é JSF?
O JavaServer Faces (JSF), é uma especificação do framework MVC Java padrão que tem como principal objetivo simplificar a construção de componentes de interface gráfica para aplicações web.
Desenvolvido pela Java Community Process (JCP), tem como uma de suas características mais relevantes a presença do modelo de componentes, semelhante ao que acontece no desenvolvimento Desktop. Essa orientação tende a facilitar o reuso pois, além dos vários componentes já existentes, é possível criar novos componentes.
Outras características marcantes são a existência de validadores e conversores de dados (facilitando a manipulação de tais), navegabilidade entre páginas oferecida por arquivos de configuração, suporte a internacionalização, entre outras.
MVC no JSF
No JavaServer Faces, o controle fica por conta de um servlet chamado Faces Servlet, por arquivos de configuração (ex.: faces-config.xml), pelos Backing Beans e pelos validadores e conversores. O Faces Servlet se designa a receber requisições, encaminhá-las ao modelo e enviar as respectivas repostas. Os arquivos de configuração são responsáveis por definirem a navegação entre páginas e o mapeamento de ações. Já os validadores e conversores permitem um maior controle sobre os dados que serão enviados. Importante ressaltar que, mesmo sendo referenciados nas páginas, os conversores e validadores fazem parte do processamento de eventos, logo também fazem parte do controlador e não da visão.
O modelo é constituído por classes de entidade e de negócio, que por sua vez, recebem dados da camada de visualização e executam regras pertinentes ao negócio.
Já a visualização, remete ao que o usuário vê, ou seja: a interface - páginas JSP e kits renderizadores (HTML, WML, XML, etc.). Mas, como o JSF se utiliza de componentes, pode se dizer que esta é composta por uma hierarquia de componentes organizados.
De modo simplificado, o MVC em aplicações web é distribuído da seguinte forma:
Visão:
• Componentes UI em páginas JSP/XHTML
• Kits renderizadores (HTML, WML, XML, etc.)
Controlador:
• Faces Servlet (Front Controller)
• Backing Bean (Page Controller ou Modelo)
Modelo:
• entidades e regras de negócio
• Objetos gerais da aplicação (dados, etc.)
Gostei bastante, eu mesmo estava com dificuldade para separar o que faz parte de cada camada.
ResponderExcluirBom em outros lugares, vi citações de uma outra camada a "P" de persistência.
Valeu.
A visão sobre JSF e MVC que você tem está correta, porém, MVC e camadas são coisas totalmente diferentes.
ResponderExcluirO artigo foi muito útil, era exatamente o que eu estava procurando. Obrigada.
ResponderExcluirEu que agradeço!
ExcluirBastante interessante suas colocações.
ResponderExcluir