Criar tela login e verificar usuario e senha no banco

6 respostas
L

Bom dia, estou com dúvidas de como criar uma tela de login.
idéia:

tela com usuario e senha, ao dar OK, verificar na tabela do banco dados SQL Server se existe o usuario, se sim, lebera o sistema, caso contrario, da erro.

ja tenho a tabela no banco, porem, tenho duvida no codigo e na chamada script (select).

6 Respostas

tiago.bizzo

veja se ajuda…
jTextField1 é o campo do login e jPasswordField1 é o campo da senha…

if(jTextField1.getText().equals("") || jPasswordField1.getText().equals("")){
            JOptionPane.showMessageDialog(null, "Login ou Senha inválido.", "Oi. Simples assim!", JOptionPane.ERROR_MESSAGE);
        }else{

            Connection con = null;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://10.20.194.170:3306/oi","usuario1","");
                Statement stm = con.createStatement();
                String SQL = "Select * from usuarios where login = '"+ jTextField1.getText()+"';";
                ResultSet rs = stm.executeQuery(SQL);

                while(rs.next()) {
                    String loginn = rs.getString("login");
                    String senhaa = rs.getString("senha");
                    String nomee = rs.getString("nome");
                    String matriculaa = rs.getString("matricula"); //ctx
                    String emaill = rs.getString("email");
                    String perfill = rs.getString("perfil");

                    if(jTextField1.getText().equals(loginn) && jPasswordField1.getText().equals(senhaa)){
                        JOptionPane.showMessageDialog(null,"Seja bem vindo: " + nomee,"Oi. Simples assim!",JOptionPane.INFORMATION_MESSAGE);
                        jLabel2.setText(nomee);
                        jLabel5.setText(matriculaa); //ctx
                        jLabel6.setText(emaill);
                        jLabel11.setText(perfill); //administrador ou usuário
                    }else{
                        JOptionPane.showMessageDialog(null,"Login ou Senha inválidos.","Oi. Simples assim!",JOptionPane.ERROR_MESSAGE);
                        jPasswordField1.setText("");
                    }
                }
            }catch(SQLException e){
                e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
                JOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados!","Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);
            }catch (ClassNotFoundException e) {
                e.printStackTrace();
            }finally {
                try{
                    con.close();
                }catch(SQLException onConClose){
                    //System.out.println("Houve erro no fechamento da conexão");
                    JOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados!","Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);
                    onConClose.printStackTrace();
                }
            } // fim do bloco try-catch-finally
        }//else do login e senha vazios
        jTextField1.setText("");
        jPasswordField1.setText("");
Pedrosa

Algumas observações sobre o código acima:

1 Sempre use PreparedStatement

String SQL = " SELECT usuario, senha FROM usuarios  WHERE usuario = ?  and senha = ?
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, usuario.getUsuario());
pstmt.setString(1, usuario.getSenha());

2 Nunca crie sua conexão junto com a classe do seu formulario, separe uma classe especifica para conexão.

3 Crie uma outra classe espeficifica para a validação desse login.

4 Evite sempre o select * , coloque realmente os campos que vai precisar na query por questão de performance.

Com tudo bem separado sua aplicação fica mais facil de manter.

tiago.bizzo

Pedrosa:
Algumas observações sobre o código acima:

1 Sempre use PreparedStatement

String SQL = " SELECT usuario, senha FROM usuarios  WHERE usuario = ?  and senha = ?
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, usuario.getUsuario());
pstmt.setString(1, usuario.getSenha());

2 Nunca crie sua conexão junto com a classe do seu formulario, separe uma classe especifica para conexão.

3 Crie uma outra classe espeficifica para a validação desse login.

4 Evite sempre o select * , coloque realmente os campos que vai precisar na query por questão de performance.

Com tudo bem separado sua aplicação fica mais facil de manter.

bela observação…

E

Pedrosa:
Algumas observações sobre o código acima:

1 Sempre use PreparedStatement

String SQL = " SELECT usuario, senha FROM usuarios  WHERE usuario = ?  and senha = ?
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, usuario.getUsuario());
pstmt.setString(1, usuario.getSenha());

2 Nunca crie sua conexão junto com a classe do seu formulario, separe uma classe especifica para conexão.

3 Crie uma outra classe espeficifica para a validação desse login.

4 Evite sempre o select * , coloque realmente os campos que vai precisar na query por questão de performance.

Com tudo bem separado sua aplicação fica mais facil de manter.

como faz para ele receber o que eu digito no jtextField senha e nome???
ex:
mas não tá dando certo?
mais ou menos assim???

protected void entrar(){ LoginControl lo = new LoginControl(); login = lo.listarlogi("%"+ tf_nome.getText().trim());

V

Olá amigos,
Estou com problemas no meu sistema de criptografia de senhas para login.Eu sou novo no java, consegui um codigo que funcionou comigo a um tempo atras, mas como já estou um tempo sem programar, não sei direito aonde estou errando. Eu criei um pacote java com o nome de caminho, e dentro de caminho, criei duas servelets, uma Cadastro e outra Controle.
Estou postando os codigos do mesmo jeito que eles estão no projeto, sei que está dando alguns erros, mas não estou conseguindo identifica-los, e como aqui no forum tem profissionais altamente qualificados, vou precisar de uma ajuda para identificar estes erros. Eu utilizo o netbeans e o mysql.
Vejam os codigos aí:

Na servlet Cadastro:


package caminho;

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.security.*;
import java.sql.*;
import sun.misc.*;


public class Cadastro extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();
String login = request.getParameter("login");
String senha = request.getParameter("senha");
String senha2 = request.getParameter("senha2");
if(senha.equals(senha2)){
    byte chave1[] = login.getBytes();
    login = new BASE64Encoder().encode(chave1);
    byte chave2[] = senha.getBytes();
    senha = new BASE64Encoder().encode(chave2);

try{
Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","root","rodrigo");
PreparedStatement stmt=con.prepareStatement("insert into usuario values(?,?)");
            stmt.setString(1,login);
            stmt.setString(2,senha);
            stmt.execute();
            stmt.close();
            out.print("<br>senha:"+senha);
            out.print("<br>Login:"+login);
//catch(Exeption e){
out.print(e.getMessage());
}


}
      }
}



Na servlet Controle:

package caminho;

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import sun.misc.*;
import java.sql.*;

public class Controle extends HttpServlet {
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
       
        
PrintWriter out = response.getWriter();
String login = request.getParameter("login");
String senha = request.getParameter("senha");
byte chave1[] = login.getBytes();
byte senha[] = senha.getBytes();
    login = new BASE64Encoder().encode(chave1);
    senha = new BASE64Encoder().encode(chave2);
    
    try{
Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","root","rodrigo");
PreparedStatement stmt=con.prepareStatement("select * from usuario where login=? and senha=?");
            stmt.setString(1,login);
            stmt.setString(2,senha);
            ResultSet rs=stmt.executeQuery();
            while (rs.next())
           out.print("Acesso ok,login e senha confere");
            break;
    }
    
     }catch(Exeption e){
             out.print(e.getMessage());
}


Depois criei index.jsp

&lt;form method=post action="Controle"&gt;

Login:<br>
    &lt;INPUT TYPE=text name=login VALUE="" size="15"&gt;
    <br> Senha:<br>
        &lt;input type=password name=senha value="" size="15"&gt;
            <br><br>
                &lt;input type="submit" value="Logar"&gt;
            &lt;/form&gt;
            <br> 
            <a >Cadastre-se</a>
            

E Cadastro.jsp


&lt;form method=post action="Cadastro"&gt;
    Login:<br>
    &lt;INPUT TYPE=text name=login VALUE="" size="15"&gt;
    <br> Senha:<br>
        &lt;INPUT TYPE=text name=senha VALUE="" size="15"&gt;
    <br> Redigite Senha<br>
        &lt;input type=password name=senha2 value="" size="15"&gt;
            <br><br>
                &lt;input type="submit" value="Enviar"&gt;
            &lt;/form&gt;
Estou postando os codigos da mesma forma que estão no projeto, não sei se esta faltando alguma biblioteca, e sintaxe está dando erro, se alguem dar uma ajuda aí... Agradeço.

Obrigado, abç!!!


E

Gostaria de saber qual é o código para criar uma tela de login e senha só que usando o banco de dados do access.

E como faço para validar o login e a senha. quando o usário entrar com a mesma.

Criado 23 de março de 2009
Ultima resposta 22 de set. de 2009
Respostas 6
Participantes 6