Erro em Autenticar user no BD

2 respostas
D

Bom dia pessoal, estou com um erro a principio bem basico, mas sou novato e estou querendo fazer um login via autenticacao de usuario cadastrado no banco de dados:
me arquivo LoginAction

package doman; 
import java.sql.*; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.*; 
import org.mentawai.core.*; 
import org.mentawai.action.*; 
import org.mentawai.message.*; 
import dataBase.*; 

public class LoginAction extends BaseLoginAction { 
ConexaoDB cnt = new ConexaoDB(); 
Connection c = cnt.getConn(); 
PreparedStatement stmt = null; 
ResultSet rset = null; 
FuncionarioDB usuario = null; 

private static final String USERNAME_PASSWORD_WRONG_ERROR = "1"; 

public String execute() throws Exception { 
   String user = input.getStringValue("username"); 
   String pass = input.getStringValue("password"); 

   if (user == null || user.trim().equals("")) { 
      addError(USERNAME_PASSWORD_WRONG_ERROR); 
      return ERROR; 
   } 
   if (pass == null || pass.trim().equals("")) { 
      addError(USERNAME_PASSWORD_WRONG_ERROR); 
      return ERROR; 
   } 

   try { 
      String query = "select nomefuncionario, login, senhafuncionario " + 
"from cadfuncionario " + 
"where login ='" + user + "' " + 
"and senhafuncionario = '" + pass + "'"; 

      Statement s = c.createStatement(); 
      s.execute (query); 

      if (rset.next()) { 
         usuario = new FuncionarioDB(); 
         usuario.setNome(rset.getString("nomefuncionario")); 
         usuario.setLogin(rset.getString("login")); 
         usuario.setSenha(rset.getString("senhafuncionario")); 
      } 

      if(usuario==null||!usuario.getSenha().equals(pass)){ 
         setUserSession(user); 
         setUserGroups("users"); 
         return SUCCESS; 
      } 
   } catch(SQLException e) { 
      throw new ActionException(e); 
   } finally { 
      try { if (rset != null) rset.close(); } catch(Exception e) { } 
      try { if (stmt != null) stmt.close(); } catch(Exception e) { } 
   } 
   addError(USERNAME_PASSWORD_WRONG_ERROR); 
   return ERROR; 
   } 
}

o erro qdo faço o login é na pagina jsp esse:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Exception while invoking action Login: null
org.mentawai.core.Controller.service(Controller.java:493)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

root cause

java.lang.NullPointerException
doman.LoginAction.execute(LoginAction.java:43)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:112)
org.mentawai.filter.RedirectAfterLoginFilter.filter(RedirectAfterLoginFilter.java:52)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:87)
org.mentawai.filter.AuthenticationFilter.filter(AuthenticationFilter.java:61)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:87)
org.mentawai.core.Controller.invokeAction(Controller.java:583)
org.mentawai.core.Controller.service(Controller.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.

MUITO OBRIGADO E DESCULPEM A PENTELHAÇÃO

2 Respostas

J
if (rset.next()) {

Você não atribuiu nada a essa variavel, ela é null.

Statement s = c.createStatement();
rset = s.executeQuery(query);

if (rset.next()) {

Sugiro que você use PreparedStatement:

PreparedStatement stmt = c.prepareStatement("select nomefuncionario, ogin, senhafuncionario from cadfuncionario where login = ? and senhafuncionario = ?");

stmt.setString(1, user);
stmt.setString(2, pass);
rset = stmt.executeQuery();

if (rset.next()) {

obs.: Use BBCode nas suas mensagens no forum.

D

jairelton,
gostaria de te agradecer funcionou 100%…

muito obrigado

Douglas

Criado 18 de setembro de 2006
Ultima resposta 18 de set. de 2006
Respostas 2
Participantes 2