Bom dia!
Estou fazendo uma aplicação, onde devo validar Usuario e Senha, para ques eja exibida a tela de boas vindas.
A interface gráfica é em JSP.
Mas só que esta acontecendo, de quando se digita usuario e senha, mesmo se a senha não é a mesma do usuario, a tela aparece. Somente se o ‘Usuario’ estiver incorreto, que ele da a mensagem de erro.
Minha dúvida é como consigo fazer com que ele valide a senha, de acordo com o usuario?
Por favor, quem puder me ajudar ficaria muito grato. Segue os códigos:
Metodo da classe de Conexao
[code]
public Funcionario validarSenha(String user, String pass){
Session session = factory.openSession();
Funcionario s = (Funcionario)session.load(Funcionario.class,user);
s.setUsuario(user);
s.setSenha(pass);
session.flush();
session.close();
return s;
}[/code]
Trecho onde se faz a verificação:
[code]<%
String nome = request.getParameter(“usuarioJSP”);
String senha = request.getParameter(“senhaJSP”);
try{
HibernateDAO dao = new HibernateDAO();
Funcionario f = dao.validarSenha(nome, senha);
if((nome.equals(f.getUsuario())) && (senha.equals(f.getSenha()))){
....
}%>[/code]
Estou começando agora a usar Hibernate, quem tiver um material de apoio para indicar, também agradeceria.
Até mais.
public Funcionario validarSenha(String user, String pass){
Session session = factory.openSession();
Funcionario s = (Funcionario)session.load(Funcionario.class,user); // aqui você carrega o funcionário do banco de dados com o usario e senha lá cadastrados
s.setUsuario(user); // mas aqui você substitui o usuário
s.setSenha(pass); // e aqui a senha, com os valores passados por parâmetro
session.flush();
session.close();
return s;
}
tente:
public Funcionario getFuncionario(String user){ // o nome ajuda a entender o que o método faz... também não é necessário passar a senha
Session session = factory.openSession();
Funcionario s = (Funcionario)session.load(Funcionario.class,user);
session.flush();
session.close();
return s;
}
public Funcionario getFuncionario(String user){ // o nome ajuda a entender o que o método faz... também não é necessário passar a senha
Session session = factory.openSession();
Funcionario s = (Funcionario)session.load(Funcionario.class,user);
session.flush();
session.close();
return s;
}[/quote]
Muito obrigado pela ajuda wbdsjunior!
Eu ainda não entendo bem alguns comandos do Hibernate.
Mas só um detalhe. Após fazer o código que me passou, ocorreu o erro: could not initialize proxy - no Session
Pesquisando aqui no guj mesmo, encontrei uma solução, que no caso, o código que vc me passou ficou assim:
public Funcionario getFuncionario(String user){ // o nome ajuda a entender o que o método faz... também não é necessário passar a senha
Session session = factory.openSession();
Funcionario s = (Funcionario)session.load(Funcionario.class,user);
s.toString();
session.flush();
session.close();
return s;
}
O tópico que fala desse erro [could not initialize proxy - no Session] é este.
Mas muito obrigado pela ajuda, agora pelo menos tenho uma base de como funciona o load. =D
[]'s
Aproveitando o tópico, estou fazendo um login fiz como colocaram no tópico só que o meu está dando este erro
Erro
[INFO: Not binding factory to JNDI, no JNDI name configured
Exception in thread “AWT-EventQueue-0” org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.Integer, got class java.lang.String
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:86)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:795)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:788)]
Metodo
[ public Usuario validarSenha(String login, String senha){
//Inicia Conexao
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
//Puxa os Dados do Banco
Usuario s = (Usuario)session.load(Usuario.class,login);
s.setLogin(senha);
s.setSenha(login);
//Fecha Conexao
session.beginTransaction().commit();
//Retorna os Dados
return s;
}]
Onde estou chamando o metodo
[ String login = txtLogin.getText();
String senha = txtSenha.getText();
UsuarioHibernateDao uDao = new UsuarioHibernateDao();
Usuario u = uDao.validarSenha(login, senha);
if(login.equals(u.getLogin()) && (senha.equals(u.getSenha()))){
JOptionPane.showMessageDialog(null,"Login Efetuado com Sucesso");
}
else{
JOptionPane.showMessageDialog(null,"Usuário ou Senha inválidos");
}]
Porque está dando erro ?
Desde de já agradeço !