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.
