Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Video: Sistema de Login - Curso JEE e JSE – Loja Virtual Completa – Parte 57
Nesta vídeo aula adicionaremos o sistema de login a partir do cadastro de usuários.
Atenção! Este vídeo necessita do aplicativo DevMedia Player
para ser executada. Para fazer o download do player basta acessar
http://www.devmedia.com.br/player
Tempo: 15:00 minutos
Tags: exposição de produtos, ecommerce, loja virtual, java ee 6, JPA
Mini-Resumo: Nesta vídeo aula estamos dando continuidade ao cadastro do usuário quando o mesmo se interessa por um produto dentro da nossa loja virtual. Estamos agora adicionando o sistema de login para este cadastro, mostramos como esconder diversas partes do nosso TOPO do aplicativo para mostrar informações adicionais quando o mesmo está logado.
Exemplos construídos: Continuamos com a criação do cadastro de usuários por fora do portal. Adicionamos o sistema de login para usuários externos. Estes usuários vão estar logando logo após o cadastro e modificando a maneira de funcionamento a partir deste ponto.
Tecnologias Utilizadas: Java EE 6 , Java SE 6 , NetBeans 6.9
Tempo: 15:00 minutos
Tags: exposição de produtos, ecommerce, loja virtual, java ee 6, JPA
Mini-Resumo: Nesta vídeo aula estamos dando continuidade ao cadastro do usuário quando o mesmo se interessa por um produto dentro da nossa loja virtual. Estamos agora adicionando o sistema de login para este cadastro, mostramos como esconder diversas partes do nosso TOPO do aplicativo para mostrar informações adicionais quando o mesmo está logado.
Exemplos construídos: Continuamos com a criação do cadastro de usuários por fora do portal. Adicionamos o sistema de login para usuários externos. Estes usuários vão estar logando logo após o cadastro e modificando a maneira de funcionamento a partir deste ponto.
Tecnologias Utilizadas: Java EE 6 , Java SE 6 , NetBeans 6.9


Leandro Henrique Perez
em 25/4/2011 23:02 - Responder
Oi, as aulas estão muito boas.
Reparei que nessa aula, se clicarmos para efetuar o login e informarmos um login ou senha NÃO CADASTRADA NO BANCO DE DADOS a mensagem gerada é horrorosa nesse estilo:
/login.xhtml @29,231 validator="#{userFace.validateLogin}": javax.ejb.EJBException
/login.xhtml @29,231 validator="#{userFace.validateLogin}": javax.ejb.EJBException .
---------------
Não está sendo feita a validação que foi criada nessa aula:
Método validador criado:
public void validateLogin(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String username = userUI.getLocalValue().toString();
String password = value.toString();
System.out.println("The Username is " + username);
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
User user = bean.isUserOK(username, password);
System.out.println("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
if (user == null) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_FATAL, "The user is not valid", "The username or password is invalid"));
}
}
-------------------------------------------
o que eu reparei é que o método executa até a "SYSOUT XXXXXXXXXXXXXXXXXXXXXXXXXXX";
* Quando entra no "User user = bean.isUserOK(username, password);" já dá pau.
Nem passa pelo "SYSOUT zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
-----------------------
Utilizei seus próprios métodos do cód fonte mas não funcinou!
Reparei que nessa aula, se clicarmos para efetuar o login e informarmos um login ou senha NÃO CADASTRADA NO BANCO DE DADOS a mensagem gerada é horrorosa nesse estilo:
/login.xhtml @29,231 validator="#{userFace.validateLogin}": javax.ejb.EJBException
/login.xhtml @29,231 validator="#{userFace.validateLogin}": javax.ejb.EJBException .
---------------
Não está sendo feita a validação que foi criada nessa aula:
Método validador criado:
public void validateLogin(FacesContext context, UIComponent component, Object value) throws ValidatorException {
String username = userUI.getLocalValue().toString();
String password = value.toString();
System.out.println("The Username is " + username);
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
User user = bean.isUserOK(username, password);
System.out.println("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
if (user == null) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_FATAL, "The user is not valid", "The username or password is invalid"));
}
}
-------------------------------------------
o que eu reparei é que o método executa até a "SYSOUT XXXXXXXXXXXXXXXXXXXXXXXXXXX";
* Quando entra no "User user = bean.isUserOK(username, password);" já dá pau.
Nem passa pelo "SYSOUT zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
-----------------------
Utilizei seus próprios métodos do cód fonte mas não funcinou!
em 25/4/2011 23:02 - Responder

Leandro Henrique Perez
É claro que não funcionou, depois de muito testar encontrei o defeito:
Substituir o método ORIGINAL CRIADO PELA DEVMEDIA da classe BasicSessionBean.java:
public T getPojo(Class classToCast,String query,Object... values) {
Query qr = createQuery(query, values);
return (T) qr.getSingleResult();
}
TROCAR O MÉTODO ACIMA POR ESTE:
public T getPojo(Class classToCast, String query, Object... values) {
Query qr = createQuery(query, values); //chama o método private dessa classe (abaixo)
try {
return (T) qr.getSingleResult();
} catch (NoResultException nre) {
return null;
}
}
Observar o try catch que foi introduzido no método!
Sem ele ao tentar fazer um login com um usuário não existente o sistema
o método public User isUserOK(String username, String password) {
...códifo utilizando getPojo...
} gerava uma exceção que não era tratada
Substituir o método ORIGINAL CRIADO PELA DEVMEDIA da classe BasicSessionBean.java:
public
Query qr = createQuery(query, values);
return (T) qr.getSingleResult();
}
TROCAR O MÉTODO ACIMA POR ESTE:
public
Query qr = createQuery(query, values); //chama o método private dessa classe (abaixo)
try {
return (T) qr.getSingleResult();
} catch (NoResultException nre) {
return null;
}
}
Observar o try catch que foi introduzido no método!
Sem ele ao tentar fazer um login com um usuário não existente o sistema
o método public User isUserOK(String username, String password) {
...códifo utilizando getPojo...
} gerava uma exceção que não era tratada
em 27/4/2011 20:03 - Responder

Leandro Henrique Perez
Enviei o comentário acidentalmente antes de terminar de editar, então, continuando:
Agora o try não deixa o sistema "abortar" por causa de uma exceção que é gerada quando não localiza um registro.
* Isso teria sido evitado se as funcionalidades que são desenvolvidas durante o curso FOSSEM TESTADAS ANTES DE IR PARA A PRÓXIMA AULA!, muitas são testadas, más essa não foi.
* Essa função não foi testada! que feio (rsrs)!
*** Portanto todo mundo deve ter esse bug!
***************************
Mais uma coisa, ao errar o login e senha estão aparecendo inúmeras mensagens repetitas:
Exemplo:
informa o usário "A" e a senha "A" e clicar em Login (nã funcionalidade de fazer o login no sistema)
O sistema gera:
The user is not valid
The password must have five chars
The user is not valid
******Além disso, o sistema não limpa as mensagens anteriores, se você ficar clicando para logar informando senhas inválidas
ele vai acumulando UM MONTE DE MENSAGEM uma abaixo da outra na tela de login.
Que feio, não foi testado?
**************** Outra coisa: A Mensagem de exceção
User user = bean.isUserOK(username, password);
if (user == null) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_FATAL, "The user is not valid", "The username or password is invalid"));
}
Não é exibida jamais!
Vamos testar melhor as coisas, as aulas são muito boas, mas essas deslizadas não podem continuar acontecendo.
Agora o try não deixa o sistema "abortar" por causa de uma exceção que é gerada quando não localiza um registro.
* Isso teria sido evitado se as funcionalidades que são desenvolvidas durante o curso FOSSEM TESTADAS ANTES DE IR PARA A PRÓXIMA AULA!, muitas são testadas, más essa não foi.
* Essa função não foi testada! que feio (rsrs)!
*** Portanto todo mundo deve ter esse bug!
***************************
Mais uma coisa, ao errar o login e senha estão aparecendo inúmeras mensagens repetitas:
Exemplo:
informa o usário "A" e a senha "A" e clicar em Login (nã funcionalidade de fazer o login no sistema)
O sistema gera:
The user is not valid
The password must have five chars
The user is not valid
******Além disso, o sistema não limpa as mensagens anteriores, se você ficar clicando para logar informando senhas inválidas
ele vai acumulando UM MONTE DE MENSAGEM uma abaixo da outra na tela de login.
Que feio, não foi testado?
**************** Outra coisa: A Mensagem de exceção
User user = bean.isUserOK(username, password);
if (user == null) {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_FATAL, "The user is not valid", "The username or password is invalid"));
}
Não é exibida jamais!
Vamos testar melhor as coisas, as aulas são muito boas, mas essas deslizadas não podem continuar acontecendo.
em 27/4/2011 20:15 - Responder

[Comentário do autor]
Dyego Souza Do Carmo
em 29/4/2011 14:05 - Responder
Dyego Souza Do Carmo
Obrigado pela observação !
Vamos levar em consideração para as proximas aulas :)
Atenciosamente,
Vamos levar em consideração para as proximas aulas :)
Atenciosamente,
em 29/4/2011 14:05 - Responder

Ricardo José Rodrigues Da Silva
Para mostrar a mensagem completa, experimente colocar " ".
Quando à acumulação de mensagens ainda não consegui resolver.
Abraços!
Quando à acumulação de mensagens ainda não consegui resolver.
Abraços!
em 2/5/2011 23:02 - Responder

Ricardo José Rodrigues Da Silva
<h:messages showDetail="true" showSummary="true"/>
em 2/5/2011 23:04 - Responder

[Comentário do autor]
Dyego Souza Do Carmo
em 20/2/2012 09:24 - Responder
Dyego Souza Do Carmo
Seu userface... poderia colar aqui }?
em 20/2/2012 09:24 - Responder

[Comentário do autor]
Dyego Souza Do Carmo
em 20/2/2012 09:24 - Responder
Dyego Souza Do Carmo
Obrigadao mesmo...
Valeu !
Valeu !
em 20/2/2012 09:24 - Responder

[Comentário do autor]
Dyego Souza Do Carmo
em 20/2/2012 09:25 - Responder
Dyego Souza Do Carmo
Obrigadao mesmo...
Valeu !
Valeu !
em 20/2/2012 09:25 - Responder
[vídeo] Exposição Cíclica de Produtos, API REST - Curso JEE e JSE – Loja Virtual Completa – Parte 48
Você está em:
canal Java
Publicidade
Este post faz parte de:
Curso(s):
Loja Virtual completa com JavaEE e JavaSE
Curso(s):
Dyego Souza Do Carmo
Space do autor
Engenheiro da Computação e evangelista da tecnologia Java , a mais de 15 anos especialista no sistema operacional linux. Programador Java a 8 anos sendo especialista em desenvolvimento de aplicações Java EE utilizando objetos distribuidos e Swing.
Consultoria em Dúvidas - Http://www.forHelp.Us
Space do autor

download
1
0
