Lista não é exibida (JSP)

6 respostas
marcusluiz83

Boa tarde, amigos.

Criei uma lista em jsp, fiz os imports necessários, copiei o driver do mysql e o jar do projeto utilizado, quando executado, é [color=green]CONSTRUÍDO COM SUCESSO[/color], porém a lista não é exibida.

É um exercício da Caelum (FJ-21). Eis as classes e o jsp utilizados:

lista-scriptlet
<%@page import="modelo.Contato"%>
<%@page import="dao.ContatoDAO"%>
<%@page import="java.util.List"%>

<html><ul>

        <%
        ContatoDAO dao = new ContatoDAO();
        List<Contato> contatos = dao.getLista();

        for(Contato contato : contatos){
            %>

            <li><%=contato.getNome()%>,<%=contato.getEmail()%>,<%=contato.getEndereco()%></li>

            <%
            }
        %>

    </ul></html>
Contato
package modelo;

/**
 * Classe com os getters e setters que serão utilizados pela classe ContatoDAO
 * @author marcus/+/LaraSoft/+/
 */
public class Contato {

    private Long id;
    private String nome;
    private String email;
    private String endereco;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}
ContatoDAO
package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import modelo.Contato;
import conexao.ConnectionFactory;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe capaz de acessar o banco de dados através do Design Patter DAO
 * @author marcus/+/LaraSoft/+/
 */
public class ContatoDAO {

    private Connection connection;

    public ContatoDAO() throws SQLException {
        this.connection = ConnectionFactory.getConnection();
    }

    public List<Contato> getLista() throws SQLException {

        PreparedStatement stmt = this.connection.prepareStatement("select * from contatos where nome like 'C%'");
        ResultSet rs = stmt.executeQuery();

        List<Contato> contatos = new ArrayList<Contato>();

        while (rs.next()) {
            // criando o objeto Contato
            Contato contato = new Contato();
            contato.setNome(rs.getString("nome"));
            contato.setEmail(rs.getString("email"));
            contato.setEndereco(rs.getString("endereco"));

            // adicionando o objeto à lista
            contatos.add(contato);
        }
        rs.close();
        stmt.close();

        return contatos;

    }

    public void adiciona(Contato contato) throws SQLException {

        String sql = "insert into contatos(nome,email,endereco)values(?,?,?)";
        PreparedStatement stmt = connection.prepareStatement(sql);

        stmt.setString(1, contato.getNome());
        stmt.setString(2, contato.getEmail());
        stmt.setString(3, contato.getEndereco());

        stmt.execute();
        stmt.close();

    }

    public List<Contato> selectById() throws SQLException {

        PreparedStatement stmt = this.connection.prepareStatement("select * from contatos where id = 1");
        ResultSet rs = stmt.executeQuery();

        List<Contato> contatos = new ArrayList<Contato>();

        while (rs.next()) {
            // criando o objeto Contato
            Contato contato = new Contato();
            contato.setNome(rs.getString("nome"));
            contato.setEmail(rs.getString("email"));
            contato.setEndereco(rs.getString("endereco"));

            // adicionando o objeto à lista
            contatos.add(contato);
        }
        rs.close();
        stmt.close();

        return contatos;
    }

    public void altera(Contato contato) throws SQLException {
        PreparedStatement stmt = connection.prepareStatement("update contatos set nome=?, email=?, endereco=? where id=1");
        stmt.setString(1, contato.getNome());
        stmt.setString(2, contato.getEmail());
        stmt.setString(3, contato.getEndereco());
        stmt.execute();
        stmt.close();
    }

    public void remove(Contato contato) throws SQLException {
        PreparedStatement stmt = connection.prepareStatement("delete from contatos where id=3");
        stmt.execute();
        stmt.close();
    }
}
Agradeço pela ajuda.

6 Respostas

H

Perguntas:
Você digitou a url corretamente?
Tem registros inseridos na tabela contato?

marcusluiz83

Sim. A url está correta e verifiquei os registros no mysql.

evandro.santos

E o que acontece no console? Tem algum erro?

Já pensou em usar o debug?

H

Oi. Tem algum contato que comece com a letra “C”?
Na sua query você está buscando todos os contatos que começam com a letra “C”.

PreparedStatement stmt = this.connection.prepareStatement("select * from contatos where nome like 'C%'");
marcusluiz83

Sim, é verdade. Acho que você matou a charada de novo. Vou testar e digo o resultado. Obrigado a todos.

marcusluiz83

Era isso mesmo. Tinha colocado aquele refinamento na pesquisa (buscar contatos com a letra C), e esqueci de tirar. Valeu…

Criado 6 de fevereiro de 2010
Ultima resposta 7 de fev. de 2010
Respostas 6
Participantes 3