Problema na servletLogin

2 respostas
jMarcel

Pessoal,

tenho o seguinte pojo/bean abaixo:

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
E o DAO correspondente:
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;
    }
}

E um servletLogin:

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>");
        }
    }
        
}
Um html (página de login):
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Login</title>
    </head>
    <body>
        <h2>Login page</h2>
        <form method="post" action="login">
            <table>
                <tr>
                    <td>Usuário:</td>
                    <td><input type="text" name="nome" size="20"></td>
                </tr>
                <tr>
                    <td>Senha:</td>
                    <td><input type="password" name="senha" size="20"></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" name="enviar" value="Validar"></td>
                </tr>
            </table>
        </form>
    </body>
</html>
E uma jsp:
<%@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, <b>" + pj.getUsuario() + ".</b><br>");
    }
%>
<%
    if (pj.getNivel() == 1) {
%>
<br>
<a href="menuAdm.jsp">ir para o Menu do Professor</a><br>
<%} else {
%>
<br>
<a href="menuAluno.jsp">ir para o Menu do Aluno</a><br>
<%    }
%>
Como perceberam, usei join para recuperar dados de 3 tabelas no BD. O problema é que o servletLogin está dando a seguinte exception:
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
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.

2 Respostas

D

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

abraço!!

A

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:

Criado 29 de maio de 2012
Ultima resposta 30 de mai. de 2012
Respostas 2
Participantes 3