Pessoal, tenho o seguinte:
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 USUARIO=?");
st.setInteger(1, usuario); // como recuperar o nome do usuario da sessao e atribui-lo aqui ?
rs = st.executeQuery();
Quero retorna uma list apenas com resultsets de um usuario, ou seja, filtrar o resultado da query pelo nome de quem logou.
Eu usei:
st.setString(1, ((Usuarios)session.getAttribute("usuario")).getUsuario());
Porém não está funcionado. O netbeans não encontra a variável session e sugere criar uma classe session.
O que posso fazer para recuperar esse valor no DAO ?
Boa tarde jMarcel,
vc esta usando algum framework mvc?
ou servlet puro?
[quote=DaniloAndrade]Boa tarde jMarcel,
vc esta usando algum framework mvc?
ou servlet puro?[/quote]
Sem framework mvc.
vc pode retirar essas informações através do request.getParameter("id");
o request vc consegue através do seu servlet
mas seria legal se vc colocasse seu código pra gente analisar melhor
[quote=DaniloAndrade]vc pode retirar essas informações através do request.getParameter("id");
o request vc consegue através do seu servlet
mas seria legal se vc colocasse seu código pra gente analisar melhor[/quote]
Segue o código (classe PojoJoin omitida):
[code]public class DaoPojoJoin extends Dao {
// private Usuarios Usuarios;
public List<PojoJoin> listaNotas() {
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,"nome de quem logou"); // quero setar o nome do usuario com o valor recuperado do servlet
rs = st.executeQuery();
while (rs.next()) {
PojoJoin pj = new PojoJoin();
rs.getString("USUARIO");
rs.getString("DISCIPLINA");
rs.getDouble("NOTA");
pj.setUsuario(rs.getString("USUARIO"));
pj.setDisciplina(rs.getString("DISCIPLINA"));
pj.setNota(rs.getDouble("NOTA"));
nota.add(pj);
}
} catch (Exception ex) {
erro = ex.getMessage();
} finally {
fechaConexao();
}
}
return nota;
}
}
[/code]
primeira coisa, se vc precisa de um usuario, mude a assinatura de seu metodo pra receber um usuario:
ex:
public List<PojoJoin> listaNotas(Usuario u){
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,u.getNome()); // quero setar o nome do usuario com o valor recuperado do servlet
rs = st.executeQuery();
while (rs.next()) {
PojoJoin pj = new PojoJoin();
rs.getString("USUARIO");
rs.getString("DISCIPLINA");
rs.getDouble("NOTA");
pj.setUsuario(rs.getString("USUARIO"));
pj.setDisciplina(rs.getString("DISCIPLINA"));
pj.setNota(rs.getDouble("NOTA"));
nota.add(pj);
}
} catch (Exception ex) {
erro = ex.getMessage();
} finally {
fechaConexao();
}
}
return nota;
}
e no seu servlet vc vai fazer isso
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Usuario usuario = new Usuario();
usuario.setNome(request.getParamiter("nome"));
DaoPojoJoin dao = new DaoPojoJoin();
List<PojoJoin> lista = dao.listaNotas(usuario);
request.setAttribute("lista", lista );
}