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
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>");
}
}
}
<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>
<%@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>
<% }
%>
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
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.
