JavaServer Faces – JSF2
04. Ciclo de vida JSF e autenticação
Esp. Márcio Palheta
gtalk: [email protected]
Agenda
Árvore de componentes - AC
Ciclo de vida de uma requisição JSF
Criação da tela de login
Criação da tela de login
Navegação condicional;
Aplicando layout à tela de login;
Redirecionamento de páginas
Árvore de componentes - AC
Estrutura que representa no servidor
todos os componentes visuais utilizados em arquivos xhtml;
em arquivos xhtml;
Armazenamento da árvore:
No servidor: Consumo de memória na sessão do usuário, porém, escalável;
No cliente: é envida a cada requisição, em
campos do tipo hidden, consumindo banda
Armazenamento da árvore de componentes no JSF2
O armazenamento foi melhorado,
passando a consumir menos recursos;
Em versões anteriores, todos os
Em versões anteriores, todos os componentes eram armazenados;
Na versão 2, são armazenados apenas os estados que foram alterados,
consumindo menos recursos;
Alteração da forma de armazenamento
Padrão: sessão do usuário
Para armazenamento na máquina cliente, precisamos incluir um parâmetro no
precisamos incluir um parâmetro no
arquivo web.xml:
Ciclo de vida de uma
requisição JSF
1ª fase: Restore view
Restauração da view;
O JSF recebe uma requisição;
Cria a AC na primeira requisição;
Cria a AC na primeira requisição;
O estado da AC é recuperado de acordo com o local de armazenamento;
Na sessão, teríamos algo como:
AC arvore = (AC)session.getAttribute(“arvore”).
2ª Fase: Apply Request Values
Aplicar os valores da requisição;
JSF recupera os valores que vieram com a requisição, e os aplica em seus
a requisição, e os aplica em seus respectivos componentes;
Porem, ainda são representados em Strings. Ex.:
String parNome =
request.getParameter(“produto.nome”)
3ª Fase: Process validation
Conversão e processamento de validações;
O JSF converte os valor recebido para o
O JSF converte os valor recebido para o tipo adequado, esperado pelo
componente;
Após a conversão, o valor estará com o tipo correto e estará pronto para ser
validado;
4ª Fase: Update model values
Atualizar os valores do modelo;
Os atributos do ManagedBean são
povoados com os valores que chegaram povoados com os valores que chegaram na requisição;
O JSF usa o binding feito no código das
telas, para mapear o valores da request
a seus respectivos atributos;
4ª Fase: Update model values
O Managed Bean cria os objetos e
preenche os valores de ser atributos.
Ex:
Ex:
5ª Fase: Invoke applications
Invocar lógica de negócio;
Com o ManagedBean populado, o JSF pode executar o método determinado pode executar o método determinado pela requisição;
A navegação para outras páginas, também é feita nesta fase;
Ex: produtoBean.salvar()
6ª Render response
Renderizar a resposta para o usuário;
O JSF guarda a Arvore de Componentes atual;
atual;
Verifica as diferenças entre os estados iniciais e atuais de cada componente;
O JSF armazena as diferenças:
arvore = requisicao.gerarArvore();
session.setAttribute(“arvore”, arvore);
Autenticação de usuários
Controle de acesso de usuários;
Precisamos de uma entidade Usuario;
Página para autenticação: login.xhtml;
Página para autenticação: login.xhtml;
Uso da tag h:inputSecret;
Classe DAO para consulta de usuários;
Envio da requisição para o Managed
Bean;
Usuario.java
package br.curso.jsf2.model.bean
Página login.xhtml
br.curso.jsf2.model.dao.
UsuarioDAO
Integração de telas
O atributo action de h:commandButton permite que seja informada a próxima página:
página:
<h:commandButton value=“Login”
action=“produto” />
JSF procura um arquivo .xhtml com o nome indicado em action;
O action é conhecido como outcome;
Navegação condicional
No caso do login, precisamos verificar se os dados de autenticação são válidos
Vamos usar o retorno do método
Vamos usar o retorno do método efetuarLogin para gerar o outcome;
O complemento “?faces-rdirect=true”
br.curso.jsf2.control.mb.
LoginBean.java
Exercícios:
Inicie ou reinicie o Tomcat;
Acesse a página de login:
No MySQL, cadastre novo usuário e
teste a aplicação
Dados do usuário logado
Adicione no cabeçalho de produto.xhtml,
o login do usuário autenticado:
Atividades
Faça login e verifique que o login do
usuário aparece no canto direito da tela
Adicione ou altere um produto;
Adicione ou altere um produto;
O que aconteceu com o login, que deveria estar no canto direito?
E agora?
Mantendo o estado do usuário
Precisamos saber qual usuário está autenticado no sistema;
Managed Bean com escopo de request,
Managed Bean com escopo de request, perde seus dados após a requisição;
Vamos usar o SessionScoped:
Exercícios
Mude o escopo da classe LoginBean;
Faça novo login na aplicação;
Cadastre e altere produtos;
Cadastre e altere produtos;
Verifique se o login do usuário continua em cada nova requisição;
Aplique o layout à página de login: CSS,
cabeçalho e rodapé;
Referências
http://www.caelum.com.br;
http://java.sun.com/
http://java.sun.com/j2ee/1.6/docs/tutorial/d
http://java.sun.com/j2ee/1.6/docs/tutorial/d oc/index.html
http://java.sun.com/products/jndi/docs.html