Criar tela login e verificar usuario e senha no banco
6 respostas
L
luistonucci
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).
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{Connectioncon=null;try{Class.forName("com.mysql.jdbc.Driver");con=DriverManager.getConnection("jdbc:mysql://10.20.194.170:3306/oi","usuario1","");Statementstm=con.createStatement();StringSQL="Select * from usuarios where login = '"+jTextField1.getText()+"';";ResultSetrs=stm.executeQuery(SQL);while(rs.next()){Stringloginn=rs.getString("login");Stringsenhaa=rs.getString("senha");Stringnomee=rs.getString("nome");Stringmatriculaa=rs.getString("matricula");//ctxStringemaill=rs.getString("email");Stringperfill=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);//ctxjLabel6.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(SQLExceptione){e.printStackTrace();//vejamos que erro foi gerado e quem o gerouJOptionPane.showMessageDialog(null,"Erro na conexão, com o banco de dados!","Oi. Simples assim!",JOptionPane.WARNING_MESSAGE);}catch(ClassNotFoundExceptione){e.printStackTrace();}finally{try{con.close();}catch(SQLExceptiononConClose){//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 vaziosjTextField1.setText("");jPasswordField1.setText("");
P
Pedrosa1 like
Algumas observações sobre o código acima:
1 Sempre use PreparedStatement
StringSQL=" 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.
T
tiago.bizzo
Pedrosa:
Algumas observações sobre o código acima:
1 Sempre use PreparedStatement
StringSQL=" 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
el2004el
Pedrosa:
Algumas observações sobre o código acima:
1 Sempre use PreparedStatement
StringSQL=" 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
Voo_livre
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í:
NaservletCadastro:packagecaminho;importjava.io.*;importjava.net.*;importjavax.servlet.*;importjavax.servlet.http.*;importjava.security.*;importjava.sql.*;importsun.misc.*;publicclassCadastroextendsHttpServlet{protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");PrintWriterout=response.getWriter();Stringlogin=request.getParameter("login");Stringsenha=request.getParameter("senha");Stringsenha2=request.getParameter("senha2");if(senha.equals(senha2)){bytechave1[]=login.getBytes();login=newBASE64Encoder().encode(chave1);bytechave2[]=senha.getBytes();senha=newBASE64Encoder().encode(chave2);try{Class.forName("com.mysql.jdbc.Driver");Connectioncon=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","root","rodrigo");PreparedStatementstmt=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());}}}}NaservletControle:packagecaminho;importjava.io.*;importjava.net.*;importjavax.servlet.*;importjavax.servlet.http.*;importsun.misc.*;importjava.sql.*;publicclassControleextendsHttpServlet{protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");PrintWriterout=response.getWriter();Stringlogin=request.getParameter("login");Stringsenha=request.getParameter("senha");bytechave1[]=login.getBytes();bytesenha[]=senha.getBytes();login=newBASE64Encoder().encode(chave1);senha=newBASE64Encoder().encode(chave2);try{Class.forName("com.mysql.jdbc.Driver");Connectioncon=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","root","rodrigo");PreparedStatementstmt=con.prepareStatement("select * from usuario where login=? and senha=?");stmt.setString(1,login);stmt.setString(2,senha);ResultSetrs=stmt.executeQuery();while(rs.next())out.print("Acesso ok,login e senha confere");break;}}catch(Exeptione){out.print(e.getMessage());}Depoiscrieiindex.jsp<formmethod=postaction="Controle">Login:<br><INPUTTYPE=textname=loginVALUE=""size="15"><br>Senha:<br><inputtype=passwordname=senhavalue=""size="15"><br><br><inputtype="submit"value="Logar"></form><br><a>Cadastre-se</a>ECadastro.jsp<formmethod=postaction="Cadastro">Login:<br><INPUTTYPE=textname=loginVALUE=""size="15"><br>Senha:<br><INPUTTYPE=textname=senhaVALUE=""size="15"><br>RedigiteSenha<br><inputtype=passwordname=senha2value=""size="15"><br><br><inputtype="submit"value="Enviar"></form>
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
etoffuli
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.