Fazer autenticação de usuario

Galera bom dia!!
to com o seguinte problema tenho uma aplicação preciso fazer a autenticação do usuario mas não consigo fazer a comparação do que foi inserido pelo usuario com o que estar no banco de dados.

Recebe os dados do usuario e faz a comparação.

[code]//Recebe os dados do usuario e faz a comparação.
private void botaoentrarActionPerformed(java.awt.event.ActionEvent evt) {
String usuariiologado,senhalogado;
Usuario usuario = new Usuario();

    usuario.setUsuario(textousuario.getText());
    usuario.setSenha(passsemha.getText());

    AutorizadorAction dao = new AutorizadorAction();
    dao.getselecthemocomponentesusuarios(usuario);
    usuariiologado = usuario.getUsuario();
    senhalogado = usuario.getSenha();

    if (usuariiologado == textousuario.getText()& senhalogado == passsemha.getText()) {
        JOptionPane.showMessageDialog(null,"Seja Bem Vindo Sr°. "+usuario.getNome());
        try {
            new SistemaHEmoComponentesHome().show();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    } else {
        JOptionPane.showMessageDialog(this, "Usuário ou Senha incorreta","ERRO",JOptionPane.ERROR_MESSAGE);

    }

}[/code]

Acesso ao banco com os dados inserido pelo usuario.

[code]//Acesso ao banco com os dados inserido pelo usuario.
public List getselecthemocomponentesusuarios(Usuario dados){
List dadosusuario = new ArrayList();
try {

        PreparedStatement stmt = this.connection.prepareStatement("select * from usuarios where usuario=? and senha=?");
        stmt.setString(1, dados.getUsuario());
        stmt.setString(2, dados.getSenha());
        ResultSet rs = stmt.executeQuery();

        while (rs.next()){

            Usuario usuario = new Usuario();
            usuario.setUsuario(rs.getString("usuario"));
            usuario.setSenha(rs.getString("senha"));
            usuario.setNome(rs.getString("nome"));

            dadosusuario.add(usuario);
            
            System.err.println(usuario.getSenha()+" "+usuario.getUsuario()+" "+ usuario.getNome());
        }
        rs.close();
        stmt.close();
        return dadosusuario;
    } catch (SQLException e) {
        throw new RuntimeException(e);
        
    }[/code]

Preciso de ajuda.

Oi akiles,

Talvez ajude http://www.guj.com.br/posts/list/215775.java#1100524

Boa sorte!

Você deve recuperar o usuário e caso retorne alguma coisa com a senha e o login passado, você deve retornar o usuário. Se não retornar, você deverá retornar nulo e a função será responsável por tomar a decisão.
Veja o código:

public static Usuario autenticar(Usuario usuario){
        PreparedStatement ps = null;
        Connection con = null;
        ResultSet rs = null;
        if(usuario != null && usuario.getLogin() != null && !usuario.getLogin().isEmpty() && usuario.getSenha() != null && usuario.getEmpresa() != null
            && !usuario.getSenha().isEmpty()){
            try {
                con = Conexao.conecta();
                ps = con.prepareStatement("SELECT * USUARIO WHERE LOGIN = ? AND SENHA = ?");
                ps.setString(1, usuario.getLogin());
                ps.setString(2, usuario.getSenha());
                rs = ps.executeQuery();                
                
                usuario = null;
                while (rs.next()) {
                    usuario = new Usuario();
                    // seta os valores aqui
                }
                return usuario;
            }catch (SQLException ex) {
               //erro
            } catch(Exception ex){
               //erro
            }
        }
        return  null;
   }

Ixi. Agora que vi. Desconsidere a comparação de usuario.getEmpresa(), pois é pra um código específico, mas o resto é padrão.

Olá akiles!

Uma dica é você não comparar Strings diretamente, ou seja, com “==” e sim com contains, equals, etc.
Exemplo bem tosco:

	String UsuarioLogado = "AlexandreGama";
	if (UsuarioLogado.equals("AlexandreGama")) 
		System.out.println("Igual");
	else
		System.out.println("Diferente");
	}

Mas na sua dúvida, chegou a ter erros ou simplesmente os valores são diferentes?

Até mais!

Só uma dúvida: bati o olho agora e vi que você faz o seguinte:

usuario.getUsuario()

Esse seu getUsuario imagino que retorne um Objeto do tipo Usuario enquanto o
seu usuariiologado é do tipo String, ou seja incompatíveis.
Você deve ter um getNome() para o seu usuário imagino eu.

Poderia ser isso?

Até mais!

Boa noite, olha eu acho melhor você criar um método booleano no dao que retorn true caso retornar dados durante uma consulta, ou false caso não retorne nada, ao no botão vc simplesmente verifica se retornou true do DAO, caso sim vc libera a seção para o cara, caso não vc lança uma mensagem de que ele não exista…
sería mas ou menos assim…
METODO DAO QUE RETORNA SE O USUÁRIO EXISTE

[code] public boolean validarUsuario(String usuario , String senha) throws SQLException
{
boolean ret = false;
Connection conn = Conexao.getConexao();
String sql = “SELECT * FROM usuarios WHERE usuario = ? AND senha = ?”;
PreparedStatement stmt = conn.prepareStatement(sql);

    stmt.setString(1,usuario);
    stmt.setString(2,senha);
    
    ResultSet rs = stmt.executeQuery();

    if(rs.next())
    {
            ret = true;
    }
    rs.close();
    stmt.close();
    return ret;
}[/code]

AÇÃO DO BOTÃO

[code] private void bt_acessarActionPerformed(java.awt.event.ActionEvent evt) {

    if(evt.getSource() == bt_acessar){
       String usuario = tf_usuario.getText();
       String senha = tf_senha.getText();
       UsuarioDAO dao = new UsuarioDAO(); // considerando que vc tem uma classe DAO
        try {
            if (dao.validarLogin(usuario, senha))// nessa parte verifica se o retorno é 
                                                                //true(verdadeiro)
            {
                Principal p = new Principal();// caso o retorno for verdadeiro ele libera o 
                                                          //acesso para a tela principal
                p.setVisible(true);// nessa parte libera o acesso, caso o resultado do 
                                          //if seja true(verdadeiro)
                this.dispose();
            }else{
                JOptionPane.showMessageDialog(null,"Usuário ou Senha Inválidos!");
                tf_usuario.setText("");
                tf_senha.setText("");
            }
        } catch (SQLException ex) {
            Logger.getLogger(TelaLogin.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}[/code]