Java EE - JSF
Java EE - JSF
Java EE - JSF
9 Java EE - JSF
Documento última vez atualizado em 25/08/2025 às 21:09.
Índice
9.1) Java Server Faces (JSF) - Teoria
Galera, vou contar uma historinha para vocês! Durante muito tempo, usuários se acostumaram
com Aplicações Desktop. O que é isso, professor? É aquele programinha que você baixa e
instala em seu computador local, acessando diretamente bancos de dados ou gerenciadores de
arquivos. Para criar essas aplicações eram utilizadas as tecnologias Visual Basic, Delphi, Swing
(Java), etc.
Pois é, esses programas em geral não necessitam de um navegador para rodar! Eles são
construídos como um conjunto de componentes oferecidos pela plataforma de
desenvolvimento para cada sistema operacional e estão associados a eventos, ações ou
procedimentos que executam lógicas de negócio. Muitas das vezes, são componentes muito
ricos.
Para resolver esse tipo de problema, surgiram as Aplicações Web. Elas rodam em um servidor
central onde os usuários podem acessá las por meio de um navegador (Chrome, Firefox, etc) e
um protocolo HTTP. Nesse caso, todas as regras de negócio da aplicação se encontram no
Servidor, sendo muito mais fácil gerenciá las e, eventualmente, dep
Ora, deu pau em alguma funcionalidade, eu vou lá no servidor central e conserto não preciso ir
em todas as máquinas que têm a aplicação! Claro, nem tudo são flores, é necessário conhecer
diversas tecnologias, linguagens, scripts, entre outros além de seguir um modelo de
requisição/resposta. Agora vejam que interessante, eu posso combinar esses dois universos.
É possível unir as melhores características desses dois mundos, com componentes ricos,
abstraindo protocolos, etc. Vocês já ouviram falar da Arquitetura Model View Controller
(MVC)? Pois é, se de uma arquitetura que divide os componentes de uma aplicação em
camadas independentes (Modelo, Visão e Controle) O Controle faz o meio campo entre a
Visão e o Modelo.
la foi amplamente utilizada plicações esktop até que um dia alguém pensou: Poxa, por que não
utilizá la na web? E resolveu assim fazê ! Como assim? lguém decidiu então combinar rquitetura
MVC com o modelo tradicional de desenvolvimento de páginas web dinâmicas Oual seria esse
modelo, professor? Trata se da utilização de Servlets e JSP
O resultado foi a criação do framework Struts Ele era uma implementação da rquitetura MVC
para desenvolvimento de páginas web dinâmicas! Bacana? Esse framework fez tanto sucesso
Desenvolvimento de Software para Banco do Brasil (Escriturário - Agente de Tecnologia) 3/30
9. Java EE - JSF
que a Sun Microsystems junto com uma comunidade de desenvolvedores resolveu criar uma
especificação padronizada baseada nesse framework, denominado Java Server Faces (JSF)
Cuidado com as questões de prova que afirmam que se trata apenas de uma
especificação - ele é tanto uma especificação quanto um framework1. Cuidado também
com aquelas que afirmam que só trata de interfaces gráficas. Ele trata de componentes
de interface com usuário - as interfaces gráficas (GUI) são um tipo de interface com o
usuário (UI). Essa tecnologia consiste em dois aspectos:
Primeiro, uma API para representar componentes e gerenciar seus estados; manipular
eventos; realizar validação server-side; converter dados; definir navegação de páginas;
suportar internacionalização e acessibilidade; e prover extensibilidade. Segundo, taglibs
(bibliotecas de tags) para adicionar componentes a páginas web e conectar
componentes a objetos server-side.
Galera, ele provê um modelo de programação bem definido e robusto, além de fornecer
diversas taglibs-inclusive o desenvolver pode criar sua própria taglib. Essas taglibs
contêm manipuladores de tags que implementam os componentes de tags. Essas
características facilitam significativamente o peso da construção e manutenção de
Aplicações Web com interfaces de usuário server-side.
Com o mínimo de esforço é possível criar uma página web; adicionar componentes em
uma página ao adicionar tags de componentes; vincular componentes de uma página a
dados server-side; conectar eventos gerados por componentes ao código da aplicação;
salvar e restaurar o estado da aplicação além da vida da requisição do servidor; e
reutilizar e estender componentes por meio de customização.
Podemos definir a Tecnologia JSF como uma tecnologia que nos permite criar
Aplicações Web utilizando componentes visuais pré-prontos, de forma que o
Pessoal, o JSF oferece diversos validadores embutidos para validar seus Componentes
UI validação ocorre no lado do servidor. Eles podem ser invocados a partir de sua tag
específica e podem validar o tamanho de um campo, tipo de entrada, range de um valor
numérico, expressão regular, entre outros. É possível, inclusive criar o seu próprio
validador customizado.
(myView), que é uma representação server side da página. Além dos componentes, uma
página web pode referenciar objetos como listeners, validadores, conversores, entre
outros.
Aqui vamos fazer uma pequena pausa! Professor, o que é Managed Bean São apenas
POJOs com a annotation @ManagedBeans. Pensem no seguinte: meu sistema precisa
escrever "Olá, pessoal" no navegador. Bem, esse texto não precisa de nenhuma
informação, não acessa nada, é muito simples basta colocá diretamente na camada de
visão e mostrá
E se eu tenho que dar um "Olá, em que X é o nome da pessoa que acessou o sistema?
Em outras palavras, se eu acessei, deve mostrar "Olá, Diego"; se o Messi acessou, deve
mostrar "Olá, Messi"! Para tal, eu vou precisar acessar o banco de dados, buscar
informações do sistema, talvez saber o horário de acesso, i.e., vou precisar interagir com
o modelo, lógica de negócio ou componentes visuais.
Ora, nós prezamos pela separação de responsabilidades! Logo, esse código ficará em
uma classe de modelo e, jamais, na visão Os Managed Beans são os objetos que
intermediam comunicação entre a visão e o modelo . Eles são registrados no descritor
de implantação (ou por meio de annotations) e tem seu ciclo de vida controlado e
gerenciado pelo próprio JSF
As principais tarefas de um Managed Bean (ou Backing Beans) é fornecer dados que
serão exibidos nas telas; receber dados enviados nas requisições; executar tarefas de
acordo com as ações dos usuários; validar dados E o que seria a FacesServlet? É uma
servlet que gerencia o ciclo de vida do processamento de requisições de aplicações
web que estão utilizando JSF para construir a interface com o usuário.
Elas são responsáveis por receber as requisições da View, redirecioná las para os
Managed Beans do Model e respondê las. Devemos configurá la no descritor de
implantação [Link] da aplicações web ele faz a conexão entre Web Container e Web
Application. Após isso, devemos configurar também o arquivo de configuração faces
[Link], referente a uma aplicação
O faces [Link] m sido rapidamente substituído por annotations novidade do JSF 2.0.
Essa versão trouxe suporte a facelets; utilização de templates para a aplicação;
simplificação do desenvolvimento de componentes; suporte nativo a Ajax (f:ajax)
navegação implícita e condicional; suporte ao Método GET; adição de novos escopos
(Flash e View); composição de componentes customizados; etc.
O @SessionScoped persiste o tempo que durar uma sessão, i.e., até invocar um
método inválido ou o tempo acabar (lembrar de um carrinho de compras); o
@FlashScoped dura um redirecionamento de página; o @NoneScoped indica que o
escopo não está definido para a aplicação; por fim, o @CustomScoped é um escopo
personalizado.
Agora eu
queria
falar uma
curiosidade
interessant
e! Existe
um Padrão
de Projeto Java EE chamado Front Controller. Nesse padrão, todas as requisições do
usuário são recebidas pelo mesmo componente. Dessa forma, tarefas que devem ser
realizadas em todas as requisições podem ser implementadas por esse componente -
evitando repetição de código e facilitando a manutenção do sistema.
Pelo fato do framework JSF ser talvez uma evolução da linguagem JSP, o ciclo de vida
do JSF é parecido com o JSP. Por exemplo, quando o cliente faz uma equisição
HTTP para a página, o servidor responde com a página traduzida para HTML. Porém, ele
é em múltiplas fases, apresentando modelo de componente de interface com usuário
mais sofisticado.
Apply Request Values qualquer dado que for enviado como parte da requisição é
passado para os componentes apropriados. Essas visões atualizam seus estados
com os valores dos dados. Dados podem vir de formulários, cookies enviados com a
requisição ou por meio de cabeçalhos da requisição. Alguns dados são validados e,
se houver erro, são adicionados à FacesServlet
ado inválido.
Vamos falar um pouquinho sobre Component Binding! O que é isso, professor? Cara,
essa é uma nova característica da tecnologia JSF que permite associar componentes de
uma view e controlar todos os aspectos desse componente. Como assim? Algumas
vezes, nós temos um componente visual que nos oferece alguma informação (Ex: m
mapa em que o usuário escolhe estado).
Bem em geral, nós necessitamos apenas do valor, i.e., o usuário escolheu 'DF'. O
Component Binding permite que nós tenhamos acesso ao componente como um todo.
Para que? Nós, eventualmente, podemos querer manipular o componente
JSF : Faceletes
Pessoal, tem uma característica do JSF que é extremamente importante: Facelets! Trata
uma linguagem de declaração de página poderosa, apesar de leve. Antigamente, utiliza-se a
tecnologia JSP como camada de visão do JSF, porém ele não suporta todas as características
disponíveis na Plataforma Java EE - sendo considerada obsoleta para JSF!
JSF : Filtros
Em JSF, um Filtro (do inglês, Filter) é um objeto capaz de realizar tarefas de filtragem tanto na
requisição de um recurso (Servlet ou conteúdo estático), ou na resposta desse recurso, ou
ambos para tal, eles utilizam o método doFilter. Todo Filtro possui acesso a um objeto
FilterConfig, do qual ele pode obter seus parâmetros de inicialização; e a uma ServletContext,
do qual ele pode carregar recursos.
Os Filtros são configurados nos descritores de implantação de uma Aplicação Web. Ele
possibilita o gerenciamento de todas as Requisições HTTP ervidor, capaz de filtrar o endereço
que está sendo acessado. Dessa forma, quando um usuário acessar uma determinada URL
proibida, pode se imediatamente redirecioná lo para outro endereço, antes que a resposta seja
dada ao cliente.
Para tal, deve se implementar a interface [Link] Existem dezenas de aplicações para
filtros, além da mostrada acima. Podemos ter filtros de autenticação; filtros de log e auditoria;
os de conversão de imagens; filtros de compressão de dados; filtros de criptografia; filtros de
tokenização; filtros XSLT; filtros que acionam eventos de acesso a recursos, entre outros.
Considere as instruções abaixo encontradas em um arquivo de uma aplicação que utiliza JSF.
<managed-bean>
<managed-bean-name>func</managed-bean-name>
<managed-bean-class>[Link]</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
A) [Link].
B) [Link].
C) [Link].
D) [Link].
E) [Link].
Solução
Gabarito: D) [Link].
Elas são responsáveis por receber as requisições da View, redirecioná las para os Managed
Beans do Model e respondê las. Devemos configurá la no descritor de implantação [Link]
das aplicações web ele faz a conexão entre Web Container e Web Application. Após isso,
devemos configurar também o arquivo de configuração faces [Link], referente a uma
aplicação específica que utiliza JSF.
Gabarito:
Solução
Gabarito:
JNDI, parte do projeto de JSF, utiliza XHTML como tecnologia de apresentação dos dados,
possibilitando a separação entre as camadas de negócio e de controle.
Solução
Gabarito:
Julgue o próximo item, que se referem a frameworks Java Server Faces (JSF) e Hibernate.
Solução
Gabarito:
Primeiro, uma API para representar componentes e gerenciar seus estados; manipular eventos;
realizar validação server side; converter dados; definir navegação de páginas; suportar
internacionalização e acessibilidade; e prover extensibilidade. Segundo, taglibs (bibliotecas de
tags) para adicionar componentes a páginas web e conectar componentes a objetos server
Em uma aplicação que utiliza JSF, para configurar o fluxo de comunicação presente na servlet
de controle, é utilizado um arquivo de configuração
A) [Link].
B) [Link].
C) [Link].
D) [Link].
E) [Link].
Solução
Gabarito: C) [Link].
Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed
Beans do Model e respondê-las. Devemos configurá-la no descritor de implantação [Link]
das aplicações web - ele faz a conexão entre Web Container e Web Application. Após isso,
devemos configurar também o arquivo de configuração [Link], referente a uma
aplicação específica que utiliza JSF.
Entre os itens que o padrão Java Server Faces (JSF) utiliza, estão os componentes, os eventos
e a navegabilidade.
Solução
Gabarito:
Uma aplicação utilizando o framework JSF e a IDE NetBeans gera automaticamente dois
componentes essenciais assim descritos:
I. É responsável por receber requisições dos componentes View do MVC, redirecioná-las para
os beans gerenciados (managed beans) do componente Model do MVC e responder a
essas requisições.
lI. É o arquivo principal de configuração de uma aplicação web que utiliza o framework JSF.
É responsável por descrever os elementos e sub-elementos que compõem o projeto, tais
como as regras de navegação, beans gerenciados, configurações de localização etc.
Solução
A validação de dados de um componente pode ser uma das funções de um backing bean, em
uma aplicação JSF
Solução
Gabarito:
As principais tarefas de um Managed Bean (ou Backing Beans) é fornecer dados que serão
exibidos nas telas; receber dados enviados nas requisições; executar tarefas de acordo com as
ações dos usuários; validar dados. E o que seria a FacesServlet? É uma servlet que gerencia o
ciclo de vida do processamento de requisições de aplicações web que estão utilizando JSF
para construir a interface com o usuário.
Conforme vimos em aula, Backing Beans são Managed Beans, e essa pode ser uma de suas
funções. Gabarito: C
Solução
Gabarito: D) possui bibliotecas que suportam Ajax (Asynchronous JavaScript And XML).
Ora, nós prezamos pela separação de responsabilidades! Logo, esse código ficará em uma
classe de modelo e, jamais, na visão. Os Managed Beans são os objetos que intermediam a
comunicação entre a visão e o modelo. Eles são registrados no descritor de implantação (ou
por meio de annotations) e tem seu ciclo de vida controlado e gerenciado pelo próprio JSF!
Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed
Beans do Model e respondê-las. Devemos configurá-la no descritor de implantação [Link]
das aplicações web - ele faz a conexão entre Web Container e Web Application. Após isso,
devemos configurar também o arquivo de configuração [Link], referente a uma
aplicação específica que utiliza JSF.
Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed
Beans do Model e respondê-las. Devemos configurá-la no descritor de implantação [Link]
das aplicações web - ele faz a conexão entre Web Container e Web Application. Após isso,
devemos configurar também o arquivo de configuração [Link], referente a uma
aplicação específica que utiliza JSF.
O [Link] têm sido rapidamente substituído por annotations - novidade do JSF 2.0.
Essa versão trouxe: suporte a facelets; utilização de templates para a aplicação; simplificação
do desenvolvimento de componentes; suporte nativo a Ajax (f:ajax); navegação implícita e
Desenvolvimento de Software para Banco do Brasil (Escriturário - Agente de Tecnologia) 18/30
9. Java EE - JSF
condicional; suporte ao Método GET; adição de novos escopos (Flash e View); composição de
componentes customizados; etc.
Galera, ele provê um modelo de programação bem definido e robusto, além de fornecer
diversas taglibs - inclusive o desenvolver pode criar sua própria taglib. Essas taglibs contêm
manipuladores de tags que implementam os componentes de tags. Essas características
facilitam significativamente o peso da construção e manutenção de Aplicações Web com
interfaces de usuário server-side.
Gabarito: D
O JSF provê uma linguagem de expressão exclusiva para acesso a objetos armazenados em
bancos de dados.
Solução
Gabarito:
Conforme vimos em aula, ela serve para referenciar propriedades e Managed Beans.
Gabarito: E
Para criar as paginas XHTML de uma aplicação JSF é possível utilizar um conjunto de
bibliotecas de tags JSF. Algumas dessas bibliotecas são HTML, Core e Facelets. Considere os
fragmentos de códigos abaixo, que utilizam tags dessas bibliotecas:
Solução
- O sistema deverá apoiar tanto o processamento online, quanto o suporte a decisão e gestão
de conteúdos.
- O sistema deverá ser embasado na plataforma JEE (Java enterprise edition) v.6, envolvendo
servlets, JSP (Java server pages), Ajax, JSF (Java server faces) 2.0, Hibernate 3.5, SOA e web
services.
O líder da equipe iniciou, então, um extenso processo de coleta de dados com o objetivo de
identificar as condições limitantes da solução a ser desenvolvida e tomar decisões
arquiteturais e tecnológicas que impactarão várias características funcionais e não funcionais
do sistema, ao longo de seu ciclo de vida. A partir dessa coleta, o líder deverá apresentar à
equipe um conjunto de informações e de decisões.
Com relação às tecnologias para desenvolvimento web em Java que podem ser empregadas
no sistema descrito no texto, julgue o item a seguir.
Solução
Gabarito:
Conforme vimos em aula, ela faz uso de Templates e Componentes Compostos, que
aumentam a modularidade e a reusabilidade Gabarito: C
No JSF, o componente Controller do MVC é composto por uma classe servlet, por arquivos
de configuração e por um conjunto de manipuladores de ações e observadores de eventos.
Essa servlet é chamada de
A) ControllerServlet.
B) Facelet.
C) HttpServlet.
D) FacesConfig.
E) FacesServlet.
Solução
Gabarito: E) FacesServlet.
No ciclo de vida do Java Server Faces trata-se da fase na qual o componente deve primeiro
ser criado ou recuperado a partir do FacesContext, seguido por seus valores, que são
geralmente recuperados dos parâmetros de request e, eventualmente, dos cabeçalhos ou
cookies gerados. Trata-se da fase
A) Restore View.
C) Process Validation.
E) Invoke Application.
Solução
Disponibiliza as bibliotecas de tags core e html para criar as páginas que compõem a
D)
interface do usuário.
Define uma única forma para realizar a validação de dados em formulários JSP, por meio
E)
da implementação de uma classe de validação que estende a interface Validator.
Solução
Facelets são utilizadas para desenvolver visões (views) JavaServer Faces (JSF) com
linguagem HTML e XHTML, em conformidade com a transitional document type
definition, sendo, ainda, compatível com a biblioteca de tag JSF.
Solução
Gabarito:
Considere:
O JSF extrai todos os valores digitados pelo usuário e guarda esse valor nos seus respectivos
componentes. Se o valor digitado não coincidir com o componente, um erro vai ser
adicionado na classe FacesContext e será mostrado na fase Render Response Phase.
Solução
Quando registrado em JSF 2 (Java Server Faces), um managed bean permanece no escopo
de session.
Solução
Gabarito:
Solução
Gabarito:
No cilco de vida do JSF copiar os parâmetros de requisição para valores submetidos pelos
componentes, é a tarefa típica da fase
Solução
Apply Request Values: qualquer dado que for enviado como parte da requisição é passado
para os componentes apropriados. Essas visões atualizam seus estados com os valores dos
dados.
Dados podem vir de formulários, cookies enviados com a requisição ou por meio de
cabeçalhos da requisição. Alguns dados são validados e, se houver erro, são adicionados à
FacesServlet.
Uma aplicação web deve prover mecanismos de validação de dados. O JSF fornece vários
validadores de dados padrões que podem ser utilizados no lado do cliente (client-side).
Solução
Gabarito:
Pessoal, o JSF oferece diversos validadores embutidos para validar seus Componentes UI -
essa validação ocorre no lado do servidor. Eles podem ser invocados a partir de sua tag
específica e podem validar o tamanho de um campo, tipo de entrada, range de um valor
numérico, expressão regular, entre outros. É possível, inclusive, criar o seu próprio validador
customizado.
A) Enterprise JavaBeans.
B) JavaServer Faces.
D) Servlets.
Solução
Solução
Gabarito:
Conforme vimos em aula, a questão está perfeita! É possível declarar managed beans por
meio de anotações ou por meio do arquivo de configuração [Link]. Gabarito: C
Antes de uma aplicação web desenvolvida nos moldes da JSF executar sua primeira página
web, uma instância FacesServlet é executada, a fim de gerenciar as requisições dessa
aplicação.
Solução
Gabarito:
Com relação à especificação Java Server Faces (JSF), assinale V para a afirmativa verdadeira
e F para a falsa.
( ) Java Server Faces são usadas como uma fachada para Servlets e Java Server Pages.
A) F, F e V.
B) F, V e V.
C) V, F e F.
D) V, V e F.
E) F, V e F.
Solução
Gabarito: A) F, F e V.
Em aplicações web nos padrões da JSF, é possível utilizar recursos Ajax para criar páginas
dinâmicas, como, por exemplo, por meio da tag f:ajax, conforme apresentado na sintaxe
abaixo.
Solução
Gabarito:
É possível utilizar XHTML no desenvolvimento de facelets para criar páginas web compatíveis
com a JSF (JavaServer Faces) para apresentação dos dados. Na versão Java EE 7, essa forma
de apresentação é mais indicada que a JSP (JavaServer Pages), uma vez que esta não suporta
todos os novos recursos da versão Java EE 7.
Solução
Gabarito:
1 [Link]
2 [Link]
3 [Link]