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:
[code] 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]);
} [/code]
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:
[code]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:
java.lang.NullPointerException[/code]
Alguma dica por favor !!!
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…
Cara ! matou !
Me explica pq ???
Olha oq mudei:
[code]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]);
} [/code]
No web cliente:
<%
ClasseUsuario.setNome("felipe");
ClasseUsuario.setSenha("123");
ClasseUsuarioAcao.setUsuario(ClasseUsuario);
com.tcc.Usuario[] usuario = ClasseUsuarioAcao.getAutentica();
out.println(usuario[0].getUltimoacesso());
%>
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+