Verificação no Banco

9 respostas
P

oi gente

estou tentando conferir se o usuario que está na sessao também está registrado no banco
estou usando o metodo abaixo:

METODO
public boolean validarLogin(Client c) {

		CadastroService cs = new CadastroService();
    		
		    try {
		    	c = new Client(); 
				List<Client> lista = cs.mostrarRegistrosLogin();
				
					if(lista.contains(c.getNome())){
						return true;
					}else{
						return false;
					}
			} catch (Exception e) {
				e.printStackTrace();
			}
			
	     return true;
	}

que está retornando o seguinte erro:

org.postgresql.util.PSQLException: ERROR: relation "cliente" does not exist
  Position: 15
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2077)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1810)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:498)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
	at dao.CadastroDAO.MostrandoLogin(CadastroDAO.java:77)
	at negocio.CadastroService.mostrarRegistrosLogin(CadastroService.java:29)
	at Controller.LoginService.validarLogin(LoginService.java:15)
	at Controller.TrataloginServ.doBruno(TrataloginServ.java:51)
	at Controller.TrataloginServ.doPost(TrataloginServ.java:36)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
May 2, 2011 10:10:30 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
May 2, 2011 10:10:30 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/Cesar] registered the JDBC driver [org.postgresql.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

algume pode me ajudar a fazer esta verificação

grato

Kettle

9 Respostas

caputojf1

Parece que o erro está ocorrendo ao buscar os registros no banco nessa linha…

List<Client> lista = cs.mostrarRegistrosLogin();

Como está implementado seu método cs.mostrarRegistrosLogin(); ???

diegodtsa
Pentaho:
oi gente

estou tentando conferir se o usuario que está na sessao também está registrado no banco
estou usando o metodo abaixo:

METODO
public boolean validarLogin(Client c) {

		CadastroService cs = new CadastroService();
    		
		    try {
		    	c = new Client(); 
				List<Client> lista = cs.mostrarRegistrosLogin();
				
					if(lista.contains(c.getNome())){
						return true;
					}else{
						return false;
					}
			} catch (Exception e) {
				e.printStackTrace();
			}
			
	     return true;
	}

que está retornando o seguinte erro:

org.postgresql.util.PSQLException: ERROR: relation "cliente" does not exist
  Position: 15
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2077)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1810)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:498)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
	at dao.CadastroDAO.MostrandoLogin(CadastroDAO.java:77)
	at negocio.CadastroService.mostrarRegistrosLogin(CadastroService.java:29)
	at Controller.LoginService.validarLogin(LoginService.java:15)
	at Controller.TrataloginServ.doBruno(TrataloginServ.java:51)
	at Controller.TrataloginServ.doPost(TrataloginServ.java:36)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
May 2, 2011 10:10:30 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
May 2, 2011 10:10:30 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/Cesar] registered the JDBC driver [org.postgresql.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

algume pode me ajudar a fazer esta verificação

grato

Kettle

code]org.postgresql.util.PSQLException: ERROR: relation "cliente" does not exist
Position: 15
O erro esta aqui, esta dizendo que não existe essa relação cliente, coluna cliente no seu banco!!!

dreampeppers99

Seu Client está implementando equals para o atributo nome?
Esse erro está dizendo que a tabela/relação “cliente” não existe para sua conexão. Cheque seu banco, seu SQL.

org.postgresql.util.PSQLException: ERROR: relation "cliente" does not exist

De qualquer maneira seria melhor seu CadastroService oferecer um método validarLogin. E mesmo nessa abordagem talvez seria melhor utilizar como parametro o Client recebido para restringir o resultado.

P

olha aí meu DAO e meu Service
meu bean só tem dois atributos nome e senha
igual ao banco...
não entendo esse erro

public List<Client> MostrandoLogin() throws Exception{
		
		List<Client> cdc = new ArrayList<Client>();
		
		Connection conn = new Conn().conectar();
		String sql = "select * from cliente order by nome";
		PreparedStatement stm = conn.prepareStatement(sql);  
		ResultSet rs = stm.executeQuery();
		
		
		while (rs.next()) {
			
			Client c = new Client();
			
			c.setNome(rs.getString("nome"));   
			c.setSenha(rs.getString("senha"));  
			
			cdc.add(c);
		}
		
		return cdc;
	}
public List<Client> mostrarRegistrosLogin() throws Exception {
	    CadastroDAO dao = new CadastroDAO();
	    return dao.MostrandoLogin();
	}
diegodtsa
Pentaho:
olha aí meu DAO e meu Service meu bean só tem dois atributos nome e senha igual ao banco... não entendo esse erro
public List<Client> MostrandoLogin() throws Exception{
		
		List<Client> cdc = new ArrayList<Client>();
		
		Connection conn = new Conn().conectar();
		String sql = "select * from cliente"; // Tente dessa forma apenas referenciando a tabela cliente sem coluna!!!!!
		PreparedStatement stm = conn.prepareStatement(sql);  
		ResultSet rs = stm.executeQuery();
		
		
		while (rs.next()) {
			
			Client c = new Client();
			
			c.setNome(rs.getString("nome"));   
			c.setSenha(rs.getString("senha"));  
			
			cdc.add(c);
		}
		
		return cdc;
	}
public List<Client> mostrarRegistrosLogin() throws Exception {
	    CadastroDAO dao = new CadastroDAO();
	    return dao.MostrandoLogin();
	}
P

opa valeu amigao
ele ja encontra a tabela

porem há algo que nao está funcionando
pois só pode entrar em sessao quem o login estiver no banco

o erro está provavelmente neste metodo do servlet TrataLogin

private void doBruno(HttpServletRequest request,
			HttpServletResponse response) {
	
		try{	
				Client c = new Client();
		
				c.setNome(request.getParameter("txtUser"));
				c.setSenha(request.getParameter("txtPass"));
				//encripta(c.getSenha());
				
				
		if(c != null || service.validarLogin(c)){
	
					HttpSession sessao = request.getSession(true);
					sessao.setAttribute("sessao", c);
					response.sendRedirect("/Cesar/index.jsp?menu=1");
		
				}else{
					response.sendRedirect("/Cesar/index.jsp?menu=3");
					System.out.println("que tu ta querendo");
	    		}
		}
		catch(Exception e){
			e.printStackTrace();	
		}	
	}
diegodtsa

Bom amigo nesse caso não consigo ajudar!!!

P

:slight_smile:

caputojf1

Dê uma pesquisada na implementação da Filter em sua classe…

Assim que esteja funcinando, vc deve mapear um filter no seu web.xml para que ele chame toda vez e verifique se existe o usuário na sessão.

Se não for essa sua dúvida, especifique o que realmente você precisa…

abs,

Criado 2 de maio de 2011
Ultima resposta 2 de mai. de 2011
Respostas 9
Participantes 4