Buscar

Livro Digital - Programação para Web II 7

Prévia do material em texto

• Gerenciamento do ciclo de vida dos componentes visuais e a
responsabilidade na geração do HTML a partir deles.
• Disponibilização de uma biblioteca de componentes visuais básicos análogos
aos componentes HTML.
• Suporte à templates de tela para reuso de estruturas de interfaces Web;
• Desenvolvimento de componentes visuais personalizados;
• Suporte embutido à ajax.
• Validação, conversão e formatação de dados de formulários.
• Tratamento de eventos entre telas Web.
• Gerenciamento da navegabilidade da aplicação.
FONTE: Disponível em: <bit.ly/>. Acesso em: 20 set. 2015.
Da mesma forma que as demais tecnologias que fazem parte da plataforma Java, o
JSF é de�nido por uma especi�cação mantida pelo JCP através de JSRs. Ele de�ne
uma API padrão e extensível através de classes e interfaces, simpli�cando o
desenvolvimento e aumentando a produtividade de aplicações em Java para Web.
As principais funcionalidades que o JSF traz para uma aplicação web incluem
(SOFTPLAN, 2015):
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
2 of 30 26/06/2024, 16:25
https://bit.ly/3R7jWzK
https://bit.ly/3R7jWzK
Fonte: O autor.
A próxima etapa consiste em con�gurar o projeto de forma que ele permita a
utilização das tecnologias que veremos ao longo do caderno. A Figura 35 ilustra a
interface de con�guração deste tipo de projeto. Os números 1, 2 e 3 destacam o
nome do projeto, o AS que utilizaremos e quais APIs farão parte do projeto,
respectivamente.
Para o nome do projeto, você pode colocar o que achar mais adequado. O Servidor
de Aplicação que utilizaremos será o mesmo que instalamos no tópico anterior, o
WildFly. A con�guração, entretanto, exige um pouco mais de cuidado. Clicando no
botão modify, a imagem da Figura 36 permite que selecionemos somente as APIs
que utilizaremos no projeto. Para o nosso projeto, selecione as mesmas APIs da
�gura e clique no botão OK.
FIGURA 35 - CONFIGURAÇÃO DO PROJETO
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
4 of 30 26/06/2024, 16:25
Fonte: O autor.
FIGURA 37 - CONFIGURAÇÃO DO JPA
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
6 of 30 26/06/2024, 16:25
FONTE: O autor
Para criar nosso primeiro JSF, clique com o botão direito do mouse no diretório
WebContent e selecione a opção New XHTML Page. Dê o nome formulario.xhtml
para a mesma e clique no botão Next. Na tela apresentada a seguir, mantenha a
con�guração mostrada na Figura a seguir e clique em Finish. Isso criará um
template XHTML vazio para nossa aplicação.
FIGURA 40 - CONFIGURAÇÃO DO TEMPLATE XHTML
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
8 of 30 26/06/2024, 16:25
visuais do JSF. O InputText é mapeado diretamente para um atributo do
formularioMB e o Button é mapeado diretamente para um método do mesmo
arquivo. No exemplo em questão, não faremos a criação do model e utilizaremos o
controller para simular esta função.
Note que este mapeamento de um componente de formulário diretamente para
um atributo e de um botão diretamente para um método aumenta muito a
produtividade no desenvolvimento. Em algumas IDEs, é possível inclusive gerar
Views e Controllers automaticamente a partir de classes de domínio.
FIGURA 41 - IMPORTAÇÃO DAS BIBLIOTECAS
FONTE: O autor
FIGURA 42 - CÓDIGO FONTE DO ARQUIVO JSF
FONTE: O autor
Mas o que é o formularioMB? O JSF funciona através de uma arquitetura MVC, o
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
10 of 30 26/06/2024, 16:25
simpli�cação. Na verdade, o MB segue a convenção Java Bean: métodos getters e
setters para todos os atributos, um construtor vazio e a implementação da
interface Serializable. O método executar serve simplesmente para ilustrarmos o
funcionamento do botão. 
Para criar esta classe, expanda o diretório Java Resources de seu projeto e clique
com o botão direito do mouse no diretório src. Selecione a opção Java Class e copie
o código-fonte contido na imagem do MB. Atenção para o nome do pacote, pois o
utilizaremos nos exemplos posteriores. Uma vez que a classe esteja pronta, clique
com o botão direito do mouse no arquivo formulario.xhml e selecione a opção Run
on Server. 
FIGURA 44 - DEPLOYMENT E EXECUÇÃO DO PROJETO
FONTE: O autor
Ao seguir este procedimento, a aplicação então é exibida no navegador interno do
Eclipse. Ao testá-la, podemos ver mensagens sendo exibidas no console do AS.
33 CCIICCLLOO DDEE VVIIDDAA EE EESSCCOOPPOOSS DDOO JJSSFF
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
12 of 30 26/06/2024, 16:25
vem com um valor alfanumérico. Neste passo, caso alguma das validações
não seja bem sucedida, o JSF interrompe seu ciclo de vida retornando para o
navegador do usuário com uma mensagem de erro.
4. Caso a validação seja bem sucedida, o próximo passo é atualizar os valores
dos campos dentro do Managed Bean. Neste momento, todos os métodos
setters dentro do MB serão invocados.
5. Neste passo os métodos associados a ações de botões são executados
dentro do MB.
6. Aqui o JSF gera o HTML a ser enviado para o usuário com base na árvore de
componentes. Antes disso, os valores dos componentes são extraídos do MB,
através da invocação de todos os métodos getters. Quando o processo
encerra, o HTML é �nalmente enviado ao navegador.
O Front Controller é um padrão de projeto relacionado a aplicações web.
Consiste basicamente de um ponto central de entrada que gerencia as
requisições de usuários. É o que ocorre com o JSF. Maiores detalhes podem
ser obtidos em: <mmaarrttiinnffoowwlleerr..ccoomm//eeaaaaCCaattaalloogg//ffrroonnttCCoonnttrroolllleerr..hhttmmll>.
Faremos a seguir algumas modi�cações em nosso exemplo anterior que
permitirão a compreensão deste mecanismo. A primeira etapa já está pronta e
consiste na impressão de uma mensagem no momento em que o construtor vazio
do MB é invocado.  Colocaremos mensagens ainda dentro do método getNome() e
do método setNome(), conforme ilustrado na Figura 46. 
Agora faremos novamente a publicação da aplicação, clicando com o botão direito
do mouse sobre o arquivo formulario.xhtml e selecionando a opção Run As->Run
On Server. Essa ação permitirá a visualização das alterações em nosso exemplo.
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
14 of 30 26/06/2024, 16:25
http://www.martinfowler.com/eaaCatalog/frontController.html
http://www.martinfowler.com/eaaCatalog/frontController.html
FIGURA 47 - CICLO DE VIDA DO JSF
FONTE: O autor
Mas o que acontece quando colocamos um valor para Nome e clicamos em
executar? Faça o teste em sua aplicação que eu explicarei os resultados  obtidos
aqui. Depois da primeira requisição, ciclo de vida do JSF é executado sempre da
mesma forma, como podemos avaliar observando a Figura 48. 
Cada número indica um passo do ciclo de vida. A linha destacada pelo número 1
ilustra a criação de uma nova instância do MB, enquanto a linha 2 trata da busca
da árvore dos componentes visuais e dos valores dos atributos do MB. Por
enquanto o nome continua nulo. Na linha destacada pelo número 3, os métodos
setters do MB são invocados e, como agora possuímos o valor “Catarina” no
componente associado ao nome, o MB recebe este valor. O número 4 mostra as
duas linhas que são impressas ao invocarmos o método executar. Lembre-se de
que a ação que efetivamente faz essa invocação é o clique no botão. Por �m, o
número 5 trata da renderização dos componentes em HTML para envio aoUnidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
16 of 30 26/06/2024, 16:25
Session. Basta alterar a annotation @RequestScoped para @SessionScoped.
Perceba que o comportamento da primeira e segunda vez que executamos (1) é o
mesmo do @RequestScoped, entretanto, no terceiro acesso (2),  o método 
getNome busca o valor já existente no MB, agora persistente entre as requisições
do usuário. No próximo passo, o método setter é invocado e o nome Catarina é
substituído por Cecilia no MB (3). O método executar é invocado novamente (4) e,
�nalmente, o HTML é renderizado com o valor atualizado no componente, obtido
através do método getNome (5).
FIGURA 49 - MANAGED BEAN COM ESCOPO DE SESSÃO
FONTE: O autor
Uma experiência interessante para comprovar o funcionamento deste escopo é
pegar a URL do navegador interno do Eclipse, copiá-la e acessar a aplicação através
de um navegador externo. Mas espere aí... os valores que eu coloquei não
aparecem fora do Eclipse. Isto ocorre porque o AS trata este acesso como um
segundo acesso feito por outro usuário. Se você observar os logs do servidor,
perceberá que ele obedecerá o mesmo ciclo de vida. Mas e por que ele não cria
uma nova instância do MB?  Isto signi�ca que os valores se confundirão entre os
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
18 of 30 26/06/2024, 16:25
Até lá e bons estudos!
LLEEIITTUURRAA CCOOMMPPLLEEMMEENNTTAARR
Artigo disponível em: <ddeevvmmeeddiiaa..ccoomm..bbrr//iinnttrroodduuccaaoo--aaoo--ppaaddrraaoo--mmvvcc//2299330088>.
IINNTTRROODDUUÇÇÃÃOO AAOO PPAADDRRÃÃOO DDEE PPRROOJJEETTOO MMOODDEELL,, VVIIEEWW,, CCOONNTTRROOLLLLEERR
    
11 IInnttrroodduuççããoo
Na fase de Projeto começamos a nos preocupar com a arquitetura da aplicação.
Nesta fase damos realmente valor à tecnologia, diferente da fase de análise onde
ainda estamos esboçando o problema a ser resolvido. De�nimos a plataforma e
como os componentes do sistema irão se organizar. Evidentemente que os
requisitos ainda são importantes, pois, por exemplo, um sistema Web ou então
uma aplicação de tempo real deverá in�uenciar na arquitetura.
Mesmo não possuindo uma de�nição consensual, a�nal diversos livros, artigos ou
autores de�nem o que é arquitetura da sua forma, a arquitetura de software de
um sistema computacional pode ser de�nida como as suas estruturas, que são
compostas de elementos de software, de propriedades externamente visíveis
desses componentes, e do relacionamento entre eles. Ou seja, a arquitetura de�ne
os elementos de software e como eles interagem entre si.
Para realizar a arquitetura de uma aplicação não basta estar num dia inspirado ou
acordar com bastante vontade de realizar uma arquitetura, muito pelo contrário,
precisamos de bastante experiência em diferentes organizações, diferentes tipos
de projetos, conhecimentos de diferentes arquiteturas etc. A experiência prática
ainda é a melhor solução. O trabalho em equipe também é uma forma excelente
de de�nir uma arquitetura. Muitas vezes, alguns programadores possuem outras
experiências ou conhecimentos e a troca dessa experiência é sempre válida,
mesmo quando temos um arquiteto bastante experiente na equipe.
A arquitetura de um sistema tem diversos elementos como: elementos utilitários,
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
20 of 30 26/06/2024, 16:25
http://www.devmedia.com.br/introducao-ao-padrao-mvc/29308
http://www.devmedia.com.br/introducao-ao-padrao-mvc/29308
FIGURA 1: MAPEAMENTO DAS TRÊS PARTES DE UMA APLICAÇÃO PARA O MVC
A �gura abaixo demonstra que a entrada do usuário, a modelagem do mundo
externo e o feedback visual para o usuário são separados e gerenciados pelos
objetos Modelo (Model), Visão (View) e Controlador (Controller).
FIGURA 2: OBJETOS UTILIZADOS NO MVC E SUAS INTERAÇÕES
Explicando cada um dos objetos do padrão MVC tem-se primeiramente o
controlador (Controller) que interpreta as entradas do mouse ou do teclado
enviado pelo usuário e mapeia essas ações do usuário em comandos que são
enviados para o modelo (Model) e/ou para a janela de visualização (View) para
efetuar a alteração apropriada. Por sua vez o modelo (Model) gerencia um ou mais
elementos de dados, responde a perguntas sobre o seu estado e responde a
instruções para mudar de estado. O modelo sabe o que o aplicativo quer fazer e é
a principal estrutura computacional da arquitetura, pois é ele quem modela o
problema que está se tentando resolver. Por �m, a visão (View) gerencia a área
retangular do display e é responsável por apresentar as informações para o
usuário através de uma combinação de grá�cos e textos. A visão não sabe nada
sobre o que a aplicação está atualmente fazendo, tudo que ela realmente faz é
receber instruções do controle e informações do modelo e então exibir elas. A
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
22 of 30 26/06/2024, 16:25
muito utilizados em diversos projetos. Entre eles temos o JSF, Struts 1 e Struts 2,
Spring MVC, Play Framework, Tapestry, e diversos outros. Existem diversos artigos
e sites especializados que comparam as diferenças e vantagens entre esses
diferentes frameworks. No entanto, o melhor é sempre veri�car o que cada
framework disponibiliza para os desenvolvedores e analisar se ele atende às
nossas expectativas.
Outras linguagens/plataformas também possuem frameworks que aderem ao
padrão arquitetural MVC. Isso não inviabiliza que uma equipe crie o seu próprio
framework, mas é preciso lembrar que um desenvolvedor novo precisa de tempo
para aprender a desenvolver em determinada arquitetura e caso a empresa/
projeto já utilize um framework bastante popular a curva de aprendizado será bem
menor ou praticamente nula. Isso inclusive ajuda na contratação de novos
funcionários, onde a empresa já pode exigir como pré-requisito conhecimentos
neste framework.
   
44 CCoonncclluussããoo
Neste artigo, vimos o que é a arquitetura de software, quais são seus elementos, o
que são as suas interações. Também vimos mais detalhadamente o padrão de
arquitetura de software MVC (Model-View-Controller) que é muito utilizado nos
projetos de software. Analisamos os seus elementos e como eles interagem entre
si e, além disso, vimos as principais vantagens de adotar um padrão como o MVC
que se caracteriza pela facilidade na obtenção de múltiplas visões dos mesmos
dados, desacoplar a interface da lógica da aplicação, entre outras vantagens. No
entanto, vimos que de�nir a arquitetura de um software é ainda mais do que
escolher o seu padrão arquitetural, precisamos de�nir a tecnologia (JEE ou .Net),
linguagens a integrar, forma de persistência, interfaces com o usuário e muito
mais. Dessa forma, devemos sempre reunir o máximo de pessoas experientes
possíveis, conhecimentos, análise do projeto, todos os seus requisitos funcionais e
não funcionais, a �m de de�nirmos a melhor arquitetura possível para o software
que está sendo desenvolvido.
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
24 of 30 26/06/2024, 16:25
AAUUTTOOAATTIIVVIIDDAADDEESS
A) 
B) 
C) 
Unidade 1 - Tópico 3
1  O JSF é um framework da plataforma Java, cujo funcionamento é baseado em
objetos, os quais são mantidos no servidor de aplicação. Referente ao framework
JSF, analise as a�rmativas a seguir:
   
I - O JSF funciona através da arquitetura MVC.
II - O Managed Bean (MB) funciona como intermediário entre as camadas Model e
View.
III - O Managed Bean (MB) não consegue instanciar objetos no lado do servidor,
porém reage a eventos da camada View.
IV - A classe que implementa um ManagedBean (MB) não deve ser serializável, o
que permite o acesso aos componentes.
   
Agora assinale a alternativa que apresenta as a�rmaticas CORRETAS:
I e II
II e III
I, II e III
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
26 of 30 26/06/2024, 16:25
Responder
A) 
4  A linguagem de programação Java permite o desenvolvimento de aplicações
robustas, atendendo tanto pequenas quanto grandes empresas., disponibilizando
a vários frameworks de desenvolvimento. Referente ao framework JSF (Java Server
Faces), estudado nesta disciplina, analise as a�rmativas a seguir:
   
I - O JSF permite o desenvolvimento de aplicações web.
II - O JSF utiliza a arquitetura de desenvolvimento de componentes chamado MVC
(Model-View-Controller).
III -  O JSF não possui o gerenciamento do ciclo de vida dos componentes visuais.
IV - O JSF não possui suporte a funcionalidade ajax.
   
Agora assinale a alternative CORRETA:
Apenas as a�rmativas I e II estão corretas
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
28 of 30 26/06/2024, 16:25
A) 
B) 
C) 
D) 
Responder
Tópico 2  Unidade 2
Conteúdo escrito por:
Apenas as a�rmativas I e II estão corretas.
Apenas as a�rmativas II e III estão corretas.
Apenas as a�rmativas I, II e III estão corretas.
Apenas as a�rmativas II, III e IV estão corretas.
Todos os direitos reservados © Prof. Cristiano Roberto Franco
Unidade 1 - Tópico 3 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
30 of 30 26/06/2024, 16:25
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html

Mais conteúdos dessa disciplina

  • Relacionados
  • Inteligência Artificial