Passar resultset da DAO para Servlet para JSP

Pessoal, seguinte… tenho uma classe DAO com o seguinte método:

[code]
public List getLista() {
try {
List cadastros = new ArrayList();
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);
    }
}[/code]

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!

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

[quote=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"); [/quote]

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 ?

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.

Use a taglib jsf-html chamada dataTable.

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

Só mais uma coisa…

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