Problema na servletLogin

Pessoal,

tenho o seguinte pojo/bean abaixo:

[code]package br.com.fiap.pojo;

public class PojoJoin {

private int id_disciplina;
private int id_usuario;
private int id_nota;
private int id_aluno;
private String disciplina;
private String usuario;
private String senha;
private double nota;
private int nivel;

//[…] getter setters etc omitidos
[/code]
E o DAO correspondente:

[code]package br.com.fiap.dao;

import br.com.fiap.pojo.PojoJoin;
import br.com.fiap.pojo.Usuarios;
import java.util.ArrayList;
import java.util.List;

public class DaoPojoJoin extends Dao {

private PojoJoin pj;

public DaoPojoJoin(PojoJoin pojoJoin) {
    setUsuario(pojoJoin);
}

public PojoJoin getUsuario() {
    return pj;
}

public void setUsuario(PojoJoin pojoJoin) {
    this.pj = pojoJoin;
}

public boolean validaUsuario() {
    boolean b = false;
    if (abreConexao()) {
        try {
            st = cn.prepareStatement("SELECT * FROM atividade01.usuarios WHERE USUARIO=? AND SENHA=?");
            st.setString(1, pj.getUsuario());
            st.setString(2, pj.getSenha());
            rs = st.executeQuery();
            if (rs.next()) {
                b = true;
                pj.setNivel(rs.getInt("NIVEL"));
            }
        } catch (Exception ex) {
            erro = ex.getMessage();
        } finally {
            fechaConexao();
        }
    }
    return b;
}

public String incluiUsuario() {
    String s = "Dados inseridos com sucesso!";
    if (abreConexao()) {
        try {
            st = cn.prepareStatement("INSERT INTO USUARIOS (USUARIO,SENHA,NIVEL) VALUES (?,?,?)");
            st.setString(1, pj.getUsuario());
            st.setString(2, pj.getSenha());
            st.setInt(3, pj.getNivel());
            st.executeUpdate();
        } catch (Exception ex) {
            s = erro = ex.getMessage();
        } finally {
            fechaConexao();
        }
    }
    return s;
}

public List<PojoJoin> listaNotas(PojoJoin pj) {
    List<PojoJoin> nota = new ArrayList<PojoJoin>();
    if (abreConexao()) {
        try {
            st = cn.prepareStatement("SELECT USUARIO, DISCIPLINA, NOTA FROM atividade01.notas x "
                    + "right outer join atividade01.usuarios y on x.id_aluno=y.id_usuario "
                    + "right outer join atividade01.disciplinas z on x.id_disciplina=z.id_disciplina "
                    + "where y.usuario=?");
            st.setString(1, pj.getUsuario());  // passo o param USUARIO da session (jUsuario) aqui (vide jsp abaixo)
            rs = st.executeQuery();
            String usr = "";
            String dsp = "";
            double nt = 0f;
            while (rs.next()) {
                PojoJoin poj = new PojoJoin(usr, dsp, nt);
                rs.getString("USUARIO");
                rs.getString("DISCIPLINA");
                rs.getDouble("NOTA");
                poj.setUsuario(rs.getString("USUARIO"));
                poj.setDisciplina(rs.getString("DISCIPLINA"));
                poj.setNota(rs.getDouble("NOTA"));
                nota.add(pj);
            }
        } catch (Exception ex) {
            erro = ex.getMessage();
        } finally {
            fechaConexao();
        }
    }
    return nota;
}

public boolean trocaSenha(PojoJoin poj) {
    boolean b = false;
    String s = "Senha alterada com sucesso!";
    if (abreConexao()) {
        try {
            st = cn.prepareStatement("UPDATE atividade01.usuarios SET senha=? WHERE usuario=?");
            st.setString(1, pj.getSenha());
            st.setString(2, pj.getUsuario());
            st.executeUpdate();
        } catch (Exception ex) {
            s = erro = ex.getMessage();
        } finally {
            fechaConexao();
        }
    }
    return b;
}

}
[/code]

E um servletLogin:

[code]package br.com.fiap.servlet;

import br.com.fiap.dao.DaoPojoJoin;
import br.com.fiap.dao.DaoUsuarios;
import br.com.fiap.pojo.PojoJoin;
import br.com.fiap.pojo.Usuarios;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ServletLogin extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    HttpSession session = request.getSession();
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    out.print("<html><head><body><tr>servlet rodando (teste)<br></body></head></html><tr>");
    
    String nome = request.getParameter("nome");
    String senha = request.getParameter("senha");
  
   /*  antes eu usava os beans separadamente assm:
    Usuarios usuario = new Usuarios(nome, senha);
    DaoUsuarios dao = new DaoUsuarios(usuario);

    if (dao.validaUsuario()) {
        session.setAttribute("jUsuario", usuario);
        response.sendRedirect("menu.jsp");
    } else {
        out.print("Erro de validação.<br>");
        out.println(dao.getErro());
        out.print("<br><a href='login.jsp'>Voltar para Login</a>");
    }
}
*/

    PojoJoin pj = new PojoJoin(nome, senha);
    DaoPojoJoin pojodao = new DaoPojoJoin(pj);

    if (pojodao.validaUsuario()) {
        session.setAttribute("jUsuario", pojodao);
        response.sendRedirect("menu.jsp");
    } else {
        out.print("Erro de validação.<br>");
        out.println(pojodao.getErro());
        out.print("<br><a href='login.jsp'>Voltar para Login</a>");
    }
}

}
[/code]
Um html (página de login):

[code]


Login


Login page















Usuário:
Senha:


[/code] E uma jsp: [code]<%@page import="br.com.fiap.pojo.PojoJoin"%> <%@page import="br.com.fiap.pojo.Usuarios" %> <% PojoJoin pj = (PojoJoin) session.getAttribute("jUsuario"); if (pj == null) { response.sendRedirect("login.jsp"); } else { out.print("Seja benvindo, " + pj.getUsuario() + ".
"); } %> <% if (pj.getNivel() == 1) { %>
ir para o Menu do Professor
<%} else { %>
ir para o Menu do Aluno
<% } %> [/code] Como perceberam, usei join para recuperar dados de 3 tabelas no BD.

O problema é que o servletLogin está dando a seguinte exception:

[code]exception
org.apache.jasper.JasperException: java.lang.ClassCastException: br.com.fiap.dao.DaoPojoJoin cannot be cast to br.com.fiap.pojo.PojoJoin

root cause
java.lang.ClassCastException: br.com.fiap.dao.DaoPojoJoin cannot be cast to br.com.fiap.pojo.PojoJoin
[/code]
Alguém sabe o que está acontecendo e como resolver ?

Obs.: antes eu usava um bean para cada entidade do BD (entity bean).
Agora eu juntei os 3 entity bean em um só, mas continuo com todos os construtores, métodos e atributos necessários para manipular as entidades.

cara vc esta passando um objeto Usuario em um metodo que pede um string??
é isso mesmo??

abraço!!

possa o stack completo do erro aí, assim da pra ver aonde mais ele está passando, mas o ideal seria você debugar o código e ver em que momento ele está mostrando o erro, em qual linha, assim podemos opinar melhor :smiley: