Passar valor da sessão http para seta-lo no parametro do preparedStatement do DAO

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 );

}