Pau no cliente web

3 respostas
R

galera,

não sei pq cargas d'água meu cliente web nao me retorna nada, dizendo que está em um ponteiro nulo.

tenho uma classe com esse método:
public Usuario[] getAutentica() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{   
	       
        ConectaBanco cb = new ConectaBanco();   
        ResultSet rs = cb.ExecutaSelect("select u.Codigo, u.Nome, u.Senha, u.UltimoAcesso from usuarios u where u.nome = '" + getNome() + "' and u.senha = '" + getSenha() + "'");
        ArrayList<Usuario> usuarios = new ArrayList<Usuario>();   
                     
        while(rs.next()) {       
            Usuario usuario = new Usuario();    
            usuario.setCodigo(rs.getString("codigo"));
            usuario.setNome(rs.getString("nome"));   
            usuario.setSenha(rs.getString("senha"));   
            usuario.setUltimoacesso(rs.getString("UltimoAcesso"));   
            usuarios.add (usuario);   
        }   
        return usuarios.toArray(new Usuario[0]);   
	}

Minha página JSP está assim:

<jsp:useBean id="ClasseUsuarioAutentica" scope="session" class="com.tcc.UsuarioAutenticaProxy" />
<%
ClasseUsuarioAutentica.setNome("Felipe");
ClasseUsuarioAutentica.setSenha("123");
com.tcc.Usuario[] usuario = ClasseUsuarioAutentica.getAutentica();
out.println(usuario[0].getNome());
%>

E recebo esse retorno no browser:

org.apache.jasper.JasperException: An exception occurred processing JSP page /Aplicacao/ValidaUsuario.jsp at line 15

12: ClasseUsuarioAutentica.setNome("Felipe");
13: ClasseUsuarioAutentica.setSenha("123");
14: com.tcc.Usuario[] usuario = ClasseUsuarioAutentica.getAutentica();
15: out.println(usuario[0].getNome());
16: 
17: %>
18: </body>

java.lang.NullPointerException

Alguma dica por favor !!!!!!!!!!!!!!!!

3 Respostas

fontoura

Onde foi que vc instaciou ClasseUsuarioAutentica? Se vc não vai instanciar então deve dizer que o método getAutentica é estático utilizando o modificador static.

Acho que pode ser isso… Como estão os métodos setNome e setSenha? também pode estar ocorrendo isso…

R

Cara ! matou !

Me explica pq ???????

Olha oq mudei:

private static Usuario usuario = null;

	public static Usuario[] getAutentica() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{   
	       
        ConectaBanco cb = new ConectaBanco();   
        ResultSet rs = cb.ExecutaSelect("select u.Codigo, u.Nome, u.Senha, u.UltimoAcesso from usuarios u where u.nome = '" + usuario.getNome() + "' and u.senha = '" + usuario.getSenha() + "'");
        ArrayList<Usuario> usuarios = new ArrayList<Usuario>();   
        System.out.println("select u.Codigo, u.Nome, u.Senha, u.UltimoAcesso from usuarios u where u.nome = '" + usuario.getNome() + "' and u.senha = '" + usuario.getSenha() + "'");                     
        while(rs.next()) {       
            Usuario usuario = new Usuario();    
            usuario.setCodigo(rs.getString("codigo"));
            usuario.setNome(rs.getString("nome"));   
            usuario.setSenha(rs.getString("senha"));   
            usuario.setUltimoacesso(rs.getString("UltimoAcesso"));   
            usuarios.add (usuario);   
        }   
        return usuarios.toArray(new Usuario[0]);   
	}

No web cliente:

<%
ClasseUsuario.setNome("felipe");
ClasseUsuario.setSenha("123");
ClasseUsuarioAcao.setUsuario(ClasseUsuario);
com.tcc.Usuario[] usuario = ClasseUsuarioAcao.getAutentica();
out.println(usuario[0].getUltimoacesso());
%>
fontoura

Bom acho que nesse caso vc pode estudar um pouco mais sobre orientação a objetos e sobre métodos estáticos(métodos de classes) e sobre metodos não estatico (métodos de instancias).

Só uma explicação breve, é que quando vc tem um método estático você não precisa instanciar um objeto da classe para poder acessar o metodo, e quando vc não tem metodos estaticos vc deve instanciar um objeto e a partir dele chamar os metodos!

T+

Criado 28 de outubro de 2008
Ultima resposta 29 de out. de 2008
Respostas 3
Participantes 2