Login no Java

k

EDIT - Alguém editou o primeiro post e deixou com o título “i”.

Amigo vc só quer fazer a tela ou quer verificar o login e a senha tbm?

Criei esses dias uma aplicação que cadastra e verifica o login e senha de um usuario utilizando um banco de dados.

Se vc quiser eu ti passo o codigo.

Os dois!!!
*se a senha estiver errado e o usuario estiver certo aparece senha
“errada”!
*se o usuario estiver errado e a senha certa aparece “usuario incorreto”!!!
*e se a senha e o usuario estiverem errado ele tem tres chances para acertar e se nao acertar aparece uma mensagem “access blocked”…

E isso é pra web ou desktop?

desktop…

pra verifica

String pass = "myPass"; String user = "Mark"; static int i = 0; public void autentica(String userR, String passS){ if(userR.equals(user) || passS.equals(pass)){ System.out.println("Liberado); } if(userR.equals(user) || !passS.equals(pass){ System.out.println("Senha Incorreta"); } if(!userR.equals(user) || passS.equals(pass){ System.out.println("Usuario Incorreto"); } if(!userR.equals(user) || passS.equals(pass){ if(i <= 3){ System.out.println("Senha e usuario incorretos \n Chances: "+ i); i++; }else{ System.out.println("Acess Blocked"); } } }
seria algo parecido com isso eu acho

Ué cara, faz um JFrame que o painel inicial tem os campos login e senha, e no actionlistener do botão “OK”, no painel, você chama a classe de negócio do seu login. Se tiver ok, você detona o painel e mostra os que ele pode ver.

Ou você tem alguma dúvida específica de código ?

PS: não soca os campos no jframe não, usa um painel separado.

[]´s

Evite criar método orientados a String :

validaLogin(String a, String b, String c){}

Faça algo assim:

public boolean validaLogin(Usuario usuario){
..

}

Ola pessoal eu queria saber como fazer uma tela com login e senha com os botoes ok e outro errei, daí se o usuario errar algum campo aparece uma janela com mensagem de erro essa é minha 1º idéia, a 2º é ao inves de abrir uma janela com a msg de erro, o cursor iria direto pra o jText no campo login.

Não seria mais simples mostrar uma mensagem ao ocorrer um erro?

if(!validaLogin(usuario)){
    		JOptionPane.showMessageDialog(null,"Dados Incorretos!","Atenção",JOptionPane.WARNING_MESSAGE);
    		return;
}

valeu Pedrosa! vou tentar aqui

Embaixo vai o codigo.


import javax.swing.*;

import java.awt.event.*;

public class inter_swing extends JFrame implements ActionListener {

JLabel jLabel1 = new JLabel("Nome");
JLabel jLabel2 = new JLabel("Senha");

JTextField jNome = new JTextField(10);
JPasswordField jSenha = new JPasswordField(10);
JButton	 jButao1 = new JButton("Logar");
JButton jButao2 = new JButton("Cadastrar");
JPanel jPanel = new JPanel();


public inter_swing() {
	
	super("Controle de Usuarios");
	setContentPane(jPanel);
	jPanel.add(jLabel1);
	jPanel.add(jNome);
	jPanel.add(jLabel2);
	jPanel.add(jSenha);
	jPanel.add(jButao1);
	jPanel.add(jButao2);
	
	jButao1.addActionListener(this);
	jButao2.addActionListener(this);

	setSize(600,400);
	setVisible(true);
	
	
}

public void actionPerformed(ActionEvent e) {
if (e.getSource() == jButao1)

JOptionPane.showMessageDialog(null,“Voce apertou o butao Logar”);

else
	JOptionPane.showMessageDialog(null,"Voce clicou no botao cadastrar");
		
}

public static void main(String args[]) {
	
	inter_swing a = new inter_swing();
}

}

[quote=Pedrosa]Evite criar método orientados a String :

validaLogin(String a, String b, String c){}

Faça algo assim:

[code]
public boolean validaLogin(Usuario usuario){

}
[/code][/quote]

Onde vc coloca esse método: validaLogin(Usuario usuario)?

Dentro do frame, na classe Usuario ou em uma classe auxiliar?

Vc cria o objeto e seta os parâmetros da classe Usuario dentro do método do actionListener?

Tem um exemplo?

[]s

:shock:
Não entendo sua dúvida com tantos exemplos.

Voce vai criar um metodo valida login como nosso amigo descreveu:

[code]public boolean validaLogin(Usuario usuario){

}[/code]

Repare que ele e do tipo boolean, logo, retornara um boolean. Dentro desse metodo vc pode fazer a consulta ao banco (e assim q vc esta fazendo?), se encontrar o usuario e a senha vc retorna true, caso contrario false.

Só para ficar mais claro, vamos fazer assim:

[code]if(validaLogin==false){
JOptionPane.showMessageDialog(null,“Dados Incorretos!”,“Atenção”,JOptionPane.WARNING_MESSAGE);

}
else{
//AQUI VC CHAMA SUA TELA
}
[/code]

Marck

[quote=Marck] :shock:
Não entendo sua dúvida com tantos exemplos.
[/quote]

Olá Marck, obrigado pela resposta, mas vc não respondeu nenhuma das minhas perguntas. :smiley:

Vou tentar ser mais claro.

Eu teria basicamente 2 classes:

[code]
public class Usuario{
private String nome;
private String senha;

    //getters and setters
    ....

}[/code]

[code]public class LoginFrame extends JFrame{

public void actionPerformed(ActionEvent e) {
if (e.getSource() == jBotao1)

//executa

}

public static void main(String… args){

//Chamada

}

}[/code]

O que eu quero saber é onde colocar a minha lógica de negócio, no caso o método validaLogin.
Esse método deve ficar na classe LoginFrame ou na classe Usuario?

Eu poderia ainda criar uma classe auxiliar (ValidaLogin) para cuidar da valição dos dados.

Qual a melhor opção?

O meu bean deve ser instanciado e setado dentro do método actionPerformed mesmo?

Espero ter sido um pouco mais claro agora. :slight_smile:

[]s

:smiley:

Blza! Quando precisei fazer isso eu criei, como vc falou, uma classe separada com um frame separado.
Dentro do actionPerformed chamei uma classe de conexao com o bd e o metodo validaLogin q cuida do bean, dentro desta mesma classe.

Ou, Dependendo do que vc tem na classe usuario faz la mesmo, mas se vc perceber q vai ficar pouco coeso, faz uma classe separada como falei. Assim, se ocorrer tudo certo no validaLogin vc instancia o frame principal.

espero ter ajudado agora!

valeu cara!

J

Ressuscitando o tópico
estou com problemas de criar o método que faz a consulta no banco e verifica se os dados inseridos pelo usuario corresponde com os que estão armazenados no banco, meu código:

package dao;

import conexao.Conexao;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import modelo.Pessoa;

public class PessoaDAo {

    public boolean fezerLogin(Pessoa pessoa) throws ClassNotFoundException, SQLException {
        boolean status = false;
        String sql = "select * from usuario a where a.nome = ? and a.senha= ?";
        PreparedStatement ps = Conexao.getConexao().prepareStatement(sql);
        ps.setString(1, pessoa.getNome());
        ps.setString(2, pessoa.getSenha());
        ps.execute();
        return status;
    }
}

notem que eu não implementei o retorno pois não tenho ideia de como resolver isso
alguns códigos que fiz ficaram tão péssimo que nem vou querer postar pra não ficar com vergonha, heheheheh.

mas acho que deu pra entender minha dúvida
“como verificar se os dados inseridos pelo usuário corresponde aos que estão no banco”, sei que tenho que usar o equals() mas não tenho ideia de como fazer,
podem me ajudar?
valeu

Nesse caso você não precisa usar equals(). Você deve utilizar o método ps.executeQuery que retorna um objeto do tipo ResultSet, daí basta o seu método retornar o resultado de rset.next() (onde rset é a variável do tipo ResultSet), que avalia se a consulta retornou linhas ou não :

public boolean fezerLogin(Pessoa pessoa) throws ClassNotFoundException, SQLException {  
        boolean status = false;  
        String sql = "select * from usuario a where a.nome = ? and a.senha= ?";  
        PreparedStatement ps = Conexao.getConexao().prepareStatement(sql);  
        ps.setString(1, pessoa.getNome());  
        ps.setString(2, pessoa.getSenha());  
        
        ResultSet rset = ps.executeQuery();
  
        return rset.next();  
}