Passar resultset da DAO para Servlet para JSP

6 respostas
coca1na
Pessoal, seguinte... tenho uma classe DAO com o seguinte método:
public List<Cadastro> getLista() {
        try {
            List<Cadastro> cadastros = new ArrayList<Cadastro>();
            PreparedStatement stmt = this.connection.prepareStatement("select * from cadastro");
            ResultSet rs = stmt.executeQuery();

            while (rs.next()){
                Cadastro cadastro = new Cadastro();
                cadastro.setNome(rs.getString("nome"));
                cadastro.setIdade(rs.getInt("idade"));
                cadastro.setTelefone(rs.getString("telefone"));
                cadastro.setEmail(rs.getString("email"));
                cadastros.add(cadastro);
            }
            rs.close();
            stmt.close();
            return cadastros;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

Tenho uma servlet (ConsultarCadastroServlet.java) que preciso que chame o método listado acima, recupere a lista contendo os resultados e envie para uma jsp (consultarcadastro.jsp).

Só tenho isso na servlet até agora:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            CadastroDAO dao = new CadastroDAO();
            List<Cadastro> cadastros = dao.getLista();
            
            
        } finally { 
            out.close();
        }
    }

Como faço pra essa servlet recuperar os resultados e enviar para a jsp ?

Obrigado!

6 Respostas

drsmachado

Sessão…

HttpSession sessao = request.getSession();
sessao.setAttribute("cadastros", cadastros);
response.sendRedirect("para_a_sua_jsp.jsp");

e na jsp

List<Cadastro> cadastros = session.getAttribute("cadastros");
coca1na

drsmachado:
Sessão…

HttpSession sessao = request.getSession();
sessao.setAttribute("cadastros", cadastros);
response.sendRedirect("para_a_sua_jsp.jsp");

e na jsp

List<Cadastro> cadastros = session.getAttribute("cadastros");

Colocando List<Cadastro> cadastros = session.getAttribute("cadastros"); eu não estaria fugindo do padrão MVC ? Já que estaria colocando código Java dentro de JSP ?

De qualquer forma, fiz o que você disse e deu erro.

Servlet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            CadastroDAO dao = new CadastroDAO();
            List<Cadastro> cadastros = dao.getLista();

            HttpSession sessao = request.getSession();
            sessao.setAttribute("cadastros", cadastros);
            response.sendRedirect("consultarcadastro.jsp");
            
            
        } finally { 
            out.close();
        }
    }

JSP:

<%@page import="jdbc.modelo.Cadastro"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Consulta de Cadastros</title>
    </head>
    <body>
<% List<Cadastro> cadastros = session.getAttribute("cadastros"); %>
    </body>
</html>

Não tem uma forma do Servlet enviar as informações ao JSP sem que precise adcionar código java dentro da jsp ?

drsmachado

JSTL… EL… Tem várias formas de obter os dados da sessão sem java…
Dá uma pesquisada aí no guj que tem vários exemplos.

JM4X

Use a taglib jsf-html chamada dataTable.

coca1na

Consegui listar…

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Consulta de Cadastros</title>
    </head>
    <body>
        <jsp:useBean id="dao" class="jdbc.dao.CadastroDAO"/>
        <table>
<!-- for -->
<c:forEach var="contato" items="${dao.lista}">
<tr>
<td>${contato.nome}</td>
<td>${contato.idade}</td>
<td>${contato.telefone}</td>
<td>${contato.email}</td>
</tr>
</c:forEach>
</table>
    </body>
</html>

Valeu a todos !!! e a apostila da caelum 21 tmb

coca1na

Só mais uma coisa…

usando dessa forma… com as taglibs na jsp sem usar servlet… foge ao padrao MVC ?

Criado 23 de novembro de 2010
Ultima resposta 23 de nov. de 2010
Respostas 6
Participantes 3