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

5 respostas
jMarcel

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 ?

5 Respostas

DaniloAndrade

Boa tarde jMarcel,

vc esta usando algum framework mvc?

ou servlet puro?

jMarcel

DaniloAndrade:
Boa tarde jMarcel,

vc esta usando algum framework mvc?

ou servlet puro?

Sem framework mvc.

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

jMarcel
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

Segue o código (classe PojoJoin omitida):
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;
    }
}
DaniloAndrade

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

}
Criado 28 de maio de 2012
Ultima resposta 29 de mai. de 2012
Respostas 5
Participantes 2