Servlet JSP e Banco de Dados no Beans - java.lang.NullPointe

3 respostas
E

Oi Pessoal estou com um pequeno ou grande probleminha…rsrs

É assim… eu estou querendo puxar valores do banco de dandos atraves de um bean… para dividir bem as coisas… fiz os esquemas e tal… só que…
na hora de executar da pau…
O problema é que quando executo ele no dos, ou num terminalzinho… ele funciona, ele puxa os dados e tal… mostrando que o que fiz esta certo…
Mas ae na hora em que eu vou executar o bean no JSP da pau… olha a quando eu esxecuto este main funciona.

[b]public static void main(String args[]){

UsuariosDAO dao = new UsuariosDB();
  	ListaUsuarios listaUsuarios = dao.executeSQL("SELECT * FROM USUARIOS");
  	
  	for (int i = 0; i < listaUsuarios.size(); i++) {
        Usuario usuario = listaUsuarios.getUsuario(i);
        System.out.println( usuario.getUin() + "\t" + usuario.getApelido() + "\t" + usuario.getSenha() );        
        
  	}  	

}[/b]

Agora quando Executo dentro do JSP ou servlet nada de funcionarrsrs

Olhem:
[b]<%<a class="mention" href="/u/page">@page</a> import = “teste.beans.<em>"%>

<%<a class="mention" href="/u/page">@page</a> import = "teste.dao.</em>%>

<html>

<body>

<center>

<%
<pre><code>ListaUsuarios listaUsuarios = (ListaUsuarios)Application.getAttribute("CatalogoProdutos");
%> <% for (int i = 0; i < listaUsuarios.size(); i++) { Usuario usuario = listaUsuarios.getUsuario(i); %> <h1><%=usuario.getUin() %></h1> <% } %> </center> </body> </html>[/b] Ae eu executo esta classe que instacia e joga a classe da lista de usuarios, no escopo de aplicação… mas exatamente na hora de rodar esta classe da pau… O erro que da: [color=“red”]java.lang.NullPointerException at teste.dao.UsuariosDB.executeSQL(UsuariosDB.java:39) at teste.ecommerce.CatalogoCacheController.atualizarCatalogoProdutos(CatalogoCacheController.java:62) at teste.ecommerce.CatalogoCacheController.doGet(CatalogoCacheController.java:54)[/color] Aqui a classe: [b] package teste.ecommerce; import java.io.*; import java.util.Date; import javax.servlet.; import javax.servlet.http.; import teste.beans.ListaUsuarios; import teste.dao.UsuariosDAO; import teste.dao.UsuariosDB; public class CatalogoCacheController extends HttpServlet {
private static final long TEMPO_CACHE_CATALOGO = 60 * 60; // numeroHoras*numeroMinutosHora*numeroSegundosMinuto

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        System.out.println("-------------------------------------------------------------------------------");
        String contexto = request.getContextPath();
        System.out.println("[CatalogoProdutosView:doGet] Contexto = " + contexto);

        ServletContext servletContext = getServletContext();

        ListaUsuarios listaUsuarios = (ListaUsuarios) servletContext.getAttribute("CatalogoProdutos");
        Date dataAtualizacaoCatalogo = (Date) servletContext.getAttribute("DataAtualizacaoCatalogo");

        // Catalogo já esta no contexto
        if (listaUsuarios != null) {
            System.out.println("[CatalogoProdutosView:doGet] Catalogo já esta no contexto e tem "
                    + listaUsuarios.size() + " itens");

            Date dataAtual = new Date();

            long tempoSemAtualizacao = dataAtual.getTime() - dataAtualizacaoCatalogo.getTime();
            long tempoFaltaParaAtualizacao = TEMPO_CACHE_CATALOGO - tempoSemAtualizacao;

            System.out.println("[CatalogoProdutosView:doGet] Data atual                  " + dataAtual.getTime());
            System.out.println("[CatalogoProdutosView:doGet] Ultima atualizacao catalogo "
                    + dataAtualizacaoCatalogo.getTime());
            System.out.println("[CatalogoProdutosView:doGet] Tempo sem atualizacao (s)   " + tempoSemAtualizacao);
            System.out.println("[CatalogoProdutosView:doGet] TEMPO_CACHE_CATALOGO (s)    " + TEMPO_CACHE_CATALOGO);
            System.out.println("[CatalogoProdutosView:doGet] Faltam " + tempoFaltaParaAtualizacao
                    + "s para atualizar o CatalogoProdutos");

            // Se o Catalogo ja está a mais que o TEMPO_CACHE_CATALOGO no contexto,vamos atualizá-lo e também a dataAtualizacaoCatalogo
            if (tempoFaltaParaAtualizacao &lt;= 0) {
            	listaUsuarios = atualizarCatalogoProdutos(servletContext);
                System.out.println("[CatalogoProdutosView:doGet] Catalogo esta sendo atualizado as " + new Date());
            }
        }
        // Catalogo NÃO está no contexto, vamos obte-lo do BD e colocá-lo no contexto com a chave CatalogoProdutos
        else {
        	listaUsuarios = atualizarCatalogoProdutos(servletContext);
            System.out.println("[CatalogoProdutosView:doGet] Catalogo colocado no contexto " + new Date());
        }            
        response.sendRedirect(contexto+"/jsp/teste.jsp");             
}

private ListaUsuarios atualizarCatalogoProdutos(ServletContext context) {
    UsuariosDAO db = new UsuariosDB();
    ListaUsuarios listaUsuarios = db.executeSQL("SELECT * FROM USUARIOS");
    context.setAttribute("ListaUsuarios", listaUsuarios);
    context.setAttribute("DataAtualizacaoCatalogo", new Date());
    return listaUsuarios;
}
}[/b] Bem é isso… O que eu faço? Ate agora naum achei o erro… E ja stou a alguns dias procurando…rsrs Valew Pessoal!!![/list][/url]

3 Respostas

E

que coisa né…
mó rolo…
tenho que ver que eu faço agora…
que será qui ta danu erru…

J

Pelo erro, o problema está na classe UsuariosDB, na linha 39… tenho como vc postar ela?

E

Desculpa, imaginei que fosse necessário postar ela aque.. só que naum queria deixar o texto muiito grande..
mas eu acho que num é nela que esta o problema naum, senão acho que quando eu executasse o mesmo com o metodo "main" daria erro..
é que acho, vou colocar o código aque..
Valew!!!

package teste.dao;

import java.sql.*;
import java.util.*;

import teste.beans.ListaUsuarios;
import teste.beans.Usuario;

public class UsuariosDB implements UsuariosDAO &#123;

	public void insertSQL&#40;String strSql&#41; &#123;
		 Connection con = null;
		 Statement stmt = null;
	     
		try &#123;  		
			stmt = con.createStatement&#40;&#41;;
			stmt.executeUpdate&#40; strSql &#41;;
			
		&#125; catch &#40;SQLException e&#41; &#123;
			e.printStackTrace&#40;&#41;;
			
		&#125; finally &#123;
            ConnectionManager.closeAll&#40;con, stmt&#41;;
        &#125;	
	&#125;

	public ListaUsuarios executeSQL&#40;String strSql&#41; &#123;
						
	  	Vector vUsuarios = null;
	  	
	  	Connection con = null;
		Statement stmt = null;
	    ResultSet rs = null;
		
	  	try &#123;  		
	  		vUsuarios = new Vector&#40;&#41;;
	  		
	  		con = ConnectionManager.getConexao&#40;ConnectionManager.FIREBIRD&#41;;
			stmt = con.createStatement&#40;&#41;;
			rs = stmt.executeQuery&#40; strSql &#41;;		
			
			if &#40; rs.next&#40;&#41; &#41; &#123;
				while&#40; rs.next&#40;&#41; &#41;&#123;
					
					String apelido = rs.getString&#40;&quot;APELIDO&quot;&#41;;
					int usuarioAtivo = rs.getInt&#40;&quot;USUARIOATIVO&quot;&#41;;
					String horaEntrada = rs.getString&#40;&quot;HORAENTRADA&quot;&#41;;
					String  horaSaida = rs.getString&#40;&quot;HORASAIDA&quot;&#41;;
					int uin = rs.getInt&#40;&quot;UIN&quot;&#41;;
					String nomeUsuario = rs.getString&#40;&quot;NOMEUSUARIO&quot;&#41;;
					String senha = rs.getString&#40;&quot;SENHA&quot;&#41;;
	
		        	Usuario u = new Usuario&#40;apelido, usuarioAtivo, horaEntrada, horaSaida, uin, nomeUsuario, senha&#41;;
		        	vUsuarios.add&#40;u&#41;;
				&#125;
				
				ListaUsuarios listaUsuarios = new ListaUsuarios&#40;vUsuarios&#41;;
		        return listaUsuarios;
		        
			&#125; else &#123;
				return null;
			&#125;
			
		&#125; catch &#40;SQLException e&#41; &#123;
			e.printStackTrace&#40;&#41;;
			
		&#125; finally &#123;
            ConnectionManager.closeAll&#40;con, stmt, rs&#41;;
        &#125;
		return null;
	&#125;

[color="green"][size="11"]não use Bold no seu código, use a tag CODE - matheus[/size][/color]

Criado 15 de julho de 2004
Ultima resposta 15 de jul. de 2004
Respostas 3
Participantes 2