Percorrer Objetos de uma Lista JSP[RESOLVIDO]

Olá, pessoal. Estudando JSP travei em um problema aqui. Já tentei tudo o que eu pude imaginar de lógica e nada funcionou. Seguinte, eu tenho uma pagina JSP e nela eu quero que saia uma lista. Pra isso, criei um método listarTodos() dentro da classe do DAO e settei os campos para mostrar os dados do objeto, ficando assim o código:

	<%	
		ProdutoDAO produtoDAO = new ProdutoDAO();
		List<Produto> produtos = produtoDAO.listarTodos();
	%>
		<table class="table table-striped table-inverse">
			<thead>
				<tr>
					<th>Código</th>
					<th>Produto</th>
					<th>Tipo de Produto</th>
					<th>Quantidade</th>
					<th>Preço em R$</th>
					<th>Tipo de Negociação</th>
					
				</tr>
			</thead>
			<tbody>
				<%for(Produto produto : produtos){ %>
				<tr>						
					<td><%=produto.getIdProduto()%></td>
					<td><%=produto.getNomeProduto()%></td>
					<td><%=produto.getTipoProduto()%></td>
					<td><%=produto.getQtdProduto()%></td>
					<td><%=produto.getPreco()%></td>
					<td><%=produto.getTipoNegociacao()%></td>
					<td>Editar</td>
					<td><a href="prodcontroller.do?acao=excluir&input_codigo=<%=produto.getIdProduto()%>">Excluir</a></td>
				</tr>
				
				<%} %>
			</tbody>
		</table>
	</div>

O problema é que ele ta listando o numero de registros certos, porém está populando todos os objetos “produto” com apenas uma linha do banco, entendem? Então, se eu tenho lá N registros, esses N registros iram popular o objeto com o mesmo dado, exemplo: id: 123; produto:banana: tipo:fruta; qnt:6 ; preço=1.0 ; tipo de negociação: venda. <~~~~ isso Nos 14 objetos criados. Segue o código do método:

public List<Produto> listarTodos() {
	ConexaoBD conexao = new ConexaoBD();
	conexao.conecta();
	List<Produto> produtos = new ArrayList<>();
	Produto produto = new Produto();
	
	try {
		Statement st = conexao.conn.createStatement();
		ResultSet rs = st.executeQuery(LISTAR_TUDO);
		while(rs.next()) {			
			produto.setIdProduto(rs.getInt("id_produto"));
			produto.setNomeProduto(rs.getString("ds_tipo_produto"));
			produto.setNomeProduto(rs.getString("nm_produto"));
			produto.setQtdProduto(rs.getInt("nr_quantidade"));
			produto.setPreco(rs.getDouble("vl_preco"));
			produto.setTipoNegociacao(rs.getString("ds_tipo_negociacao"));
			produtos.add(produto);
			
		}
		rs.close();

Vocês conseguem ver onde eu estou errando? Obrigado!

         while(rs.next()) {	
            Produto produto = new Produto();	// Aqui
			produto.setIdProduto(rs.getInt("id_produto"));
			produto.setNomeProduto(rs.getString("ds_tipo_produto"));
			produto.setNomeProduto(rs.getString("nm_produto"));
			produto.setQtdProduto(rs.getInt("nr_quantidade"));
			produto.setPreco(rs.getDouble("vl_preco"));
			produto.setTipoNegociacao(rs.getString("ds_tipo_negociacao"));
			produtos.add(produto);
		}

para cada iteração do resultSet vc instancia um novo produto

1 curtida

Era isso mesmo, eu já tinha conseguido arrumar, mas obrigado pela força!!