Pessoal estou desenvolvendo uma aplicação simples!
gostaria de fazer um login numa pagina usando uma tabela do banco de dados, porém está dando erro não sei o que estou fazendo errado, ou a maneira que estou fazendo esta totalmente errada, alguém poderia me ajudar por favor, segue abaixo o código!
packagecaminho;importconexao.ConnectionFactory;importjava.io.*;importjava.net.*;importjavax.servlet.*;importjavax.servlet.http.*;importsun.misc.*;importjava.sql.*;publicclassControleextendsHttpServlet{protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException,ClassNotFoundException,SQLException{response.setContentType("text/html;charset=UTF-8");PrintWriterout=response.getWriter();Stringlogin=request.getParameter("login");Stringsenha=request.getParameter("senha");try{Connectioncon=newConnectionFactory().getConnection();PreparedStatementstmt=con.prepareStatement("select * from clientes 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");}catch(Exceptione){e.printStackTrace();}}}
Como está o mapeamento no seu web.xml?
A URL pattern do seu servlet é Controle?
Obs: Parece que esse tópico está duplicado, ou estou enganado?
snowblacksoul
Alguém poderia me ajudar!!
felipeaqueiroz
Posta ai o seu arquivo web.xml
Esse erro 404 acontece as vezes quando o servlet não foi mapeado corretamente…
Outra coisa, no lugar de Login:<input type="text" name="usuario"/><br/> troque o name=“usuario” por Login:<input type="text" name="login"/><br/> para que possa coincidir com o parâmetro que você está pegando no servlet em String login = request.getParameter("login");
ribclauport
Então sendo assim, verifique no debug se seu objeto con não está nulo…
deve ser isso pois é um nullPointer… da uma olhada na classe de conexão…
snowblacksoul
Fala Galera, conseguir fazer, mas agora estou com o problema de validação!!!
estou digitando o login e senha corretos mas esta dizendo que nao está correto, if acho que esta no lugar errado, alguém pode me ajudar
packagemeupacote;importconexao.ConnectionFactory;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.logging.Level;importjava.util.logging.Logger;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/** * * @author dcsantos */publicclassTrabComPostextendsjavax.servlet.http.HttpServlet{privateObjectloginn;privateObjectsenhaa;publicvoiddestroy(){super.destroy();}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();Stringlogin=request.getParameter("login");Stringsenha=request.getParameter("senha");System.out.println(login);System.out.println(senha);try{Connectioncon=newConnectionFactory().getConnection();java.sql.PreparedStatementstmt=null;try{stmt=con.prepareStatement("select login,senha from clientes ");}catch(SQLExceptionex){Logger.getLogger(TrabComPost.class.getName()).log(Level.SEVERE,null,ex);}ResultSetrs=null;try{rs=stmt.executeQuery();}catch(SQLExceptionex){Logger.getLogger(TrabComPost.class.getName()).log(Level.SEVERE,null,ex);}System.out.println(rs);try{while(rs.next()){Stringloginn=rs.getString("login");Stringsenhaa=rs.getString("senha");System.out.println(loginn);System.out.println(senhaa);}}catch(SQLExceptionex){Logger.getLogger(TrabComPost.class.getName()).log(Level.SEVERE,null,ex);}Stringhtml="<html><head>"+"<title> Trabalhando com Post em Servlet</title>"+"</head>"+"<body>";if(login.equals(loginn)&&senha.equals(senhaa)){html+="seja bem vindo ";System.out.println(login);System.out.println(loginn);System.out.println(senha);System.out.println(senhaa);}else{html+="Usuario ou senha inválidos";}html+="</body></html>";response.setContentType("text/html");PrintWriterwriter=response.getWriter();//para dar uma resposta ao clientewriter.print(html);writer.close();}catch(Exceptione){e.printStackTrace();}}publicvoidinit()throwsServletException{super.init();}}
felipeaqueiroz
Você tentou debugar para ver se as variáveis login e loginn / senha e senhaa são iguais?
Tenta trocar
private Object loginn;
private Object senhaa; por private String loginn;
private String senhaa; e
String loginn = rs.getString("login");
String senhaa = rs.getString("senha"); por
Fala ai malandro, ta dando erro na validação pq no teu form vc colocou Usuario e Senha e no teu JSP esta dando um request em LOGIN e SENHA conforme o colega felipeaqueiroz falou anteriormente
snowblacksoul
Não mudou nada!!! o problema está no if!! acho
felipeaqueiroz
No seu console, quando você pede para imprimir o valor das variáveis em System.out.println(login);
System.out.println(loginn);
System.out.println(senha);
System.out.println(senhaa); ele mostra o que? O seu if parece estar correto…
williamdasflores
É seu if mesmo. As variáveis que você está comparando no if são varaiveis locais que estão dentro do while.
Tenta criar essas variaveis como variaveis de instancia…ai no while vc faz assim:
Outra coisa, não era melhor colocar tudo dentro de um try, catch só???
snowblacksoul
Já conseguir fazer galera!!!
Segue o código abaixo para quem os que tiveram muita dificuldade assim como eu!!
Se alguém souber de algo mais prático por favor coloque o código aqui blz!!!
Obrigado a todos que me ajudaram valeu mesmo!!!
Servlet
packagemeupacote;importconexao.ConnectionFactory;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.logging.Level;importjava.util.logging.Logger;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/** * * @author dcsantos */publicclassTrabComPostextendsjavax.servlet.http.HttpServlet{publicstaticStringloginn;publicstaticStringsenhaa;publicvoiddestroy(){super.destroy();}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();Stringlogin=request.getParameter("login");Stringsenha=request.getParameter("senha");System.out.println(login);System.out.println(senha);try{Connectioncon=newConnectionFactory().getConnection();java.sql.PreparedStatementstmt=null;try{//String consulta = "select login,senha from clientes where login ='"+login+"'and senha'"+senha+"'";stmt=con.prepareStatement("select nome,login,senha from clientes where login='"+login+"'and senha='"+senha+"'");////}catch(SQLExceptionex){Logger.getLogger(TrabComPost.class.getName()).log(Level.SEVERE,null,ex);}ResultSetrs=null;try{rs=stmt.executeQuery();}catch(SQLExceptionex){Logger.getLogger(TrabComPost.class.getName()).log(Level.SEVERE,null,ex);}System.out.println(rs);try{while(rs.next()){Stringnome=rs.getString("nome");Stringloginn=rs.getString("login");Stringsenhaa=rs.getString("senha");System.out.println(loginn);System.out.println(senhaa);Stringhtml="<html><head>"+"<title> Trabalhando com Post em Servlet</title>"+"</head>"+"<body>";if(login.equals(loginn)&&senha.equals(senhaa)){html+="seja bem vindo '"+nome+"'";System.out.println(login);System.out.println(loginn);System.out.println(senha);System.out.println(senhaa);}else{html+="Usuario ou senha inválidos";}html+="</body></html>";response.setContentType("text/html");PrintWriterwriter=response.getWriter();//para dar uma resposta ao clientewriter.print(html);writer.close();}}catch(Exceptione){e.printStackTrace();}}catch(Exceptione){e.printStackTrace();}}publicvoidinit()throwsServletException{super.init();}}
tente não fazer conexão com o banco ou consultas no seu Servlet, crie um pacote e outra classe para isso
Abraços.
snowblacksoul
é… eu acho que fiz uma gambiarra!!!
Gostaria de saber qual a melhor maneira de de fazer isso!!!
sou iniciante em java!!!
grato a todos que puderem colaborar!!!