Array e JSP

Boa tarde Pessoal,

Gostaria de uma ajuda, estou passando uma lista através de um Hashmap para o JSP porem não sei como receber esta lista:

CLASSE JAVA

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.swing.JOptionPane;

import conexao.Connect;

public class teste2 {

	static Connect c = new Connect();

	@SuppressWarnings("unchecked")
	public Connection getConnection() {
		c.conexao();
		return c.conexao;
	}

	public static void main(String[] args) {
		c.conexao();

	}

	public List listar_cnpj(String nome) {
		c.conexao();
		List lista = new ArrayList();
		try {
			c.statement = c.conexao
					.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
							ResultSet.CONCUR_READ_ONLY);
			c.resultset = c.statement
					.executeQuery("SELECT CNPJ||'.pdf'AS PDF FROM FORNECEDOR  WHERE 1=1 AND UPPER (NOME) = UPPER('"
							+ nome + "')order by PDF asc");
			while (c.resultset.next()) {
				HashMap hmap = new HashMap();
				hmap.put("pdf", c.resultset.getString("PDF"));
				lista.add(hmap);
				// c.desconectar();
			}
		} catch (SQLException Banco) {
			System.out.println("Erro de manipulação do banco: " + Banco);
			JOptionPane.showMessageDialog(null,
					"Erro de manipulação do banco: " + Banco);
		}
		JOptionPane.showMessageDialog(null, "Sua lista é: " + lista);
		System.out.println("funcionou: \n" + lista);
		c.desconectar();
		return lista;
	}

}

E ESTOU QUERENDO RECEBER NESTE JSP:

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.List"%>
<%@page import="javax.swing.JOptionPane"%>
<%@page import="conexao.Connect"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>

<!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=ISO-8859-1">
<title>Ambev</title>
	<%
	teste2 t = new teste2();
	List<String> cnpjs = new ArrayList();
	cnpjs = t.listar_cnpj("edisupplier");
	%>
</head>
<body>
	<br>
	<br>
	<li>
		Teste vai ser aqui:&lt;%=cnpjs%&gt;
	</li>

&lt;/body&gt;
&lt;/html&gt;

Obrigado e desculpa o amadorismo

Não é só iterar o seu List e recuperar o objeto realizando um cast para HashMap?

Por exemplo:

<%
	teste2 t = new teste2();
	List<String> cnpjs =  t.listar_cnpj("edisupplier");
	for(Object object : cnpjs){
          HashMap map = (HashMap) object;
          String pdf = map.get("PDF");
         }
        

	%>

Só implemente como desejar.

Mas não seria mais fácil criar um Bean para representar seu objeto PDF ao invés de um HashMap ou apenas passar a lista de string com o nome dos arquivos para simplificar?

Boa tarde Eron Alves,

Não posso utilizar Beans,

Não sei utilizar a lista simples. Se puder colocar um exemplo.

Tentei a solução que foi enviado por você,

e na linha

String pdf = map.get("PDF"); 

Apresentou o seguinte erro:
Type mismatch: cannot convert from Object to String

Abraço

A Lista simples seria adicionar a string retornada por sua consulta diretamente a List, sem precisar criar o seu Map.
O Map é utilizado quando é necessário o uso de identificadores únicos para cada informação (IDs) como você está setando um ID fixo no Map (“PDF”), creio que não é necessário a sua utilização.

Exemplo Lista Simples de Strings:

String pdf = c.resultset.getString("PDF");
lista.add(pdf);

O erro “Type mismatch: cannot convert from Object to String” significa que é necessário realizar o casting do retorno da lista.
Um tópico que indico para ser estudado é sobre Generics, facilitam bastante pois você indica um Type para suas Coleções e Maps e não é necessário
realizar o casting ao retornar as informações contidas em sua lista genérica.

Para resolver acrescente o “(String)”:

String pdf = (String) map.get("pdf"); //correção do identificar colocado em minúsculo.

Com generics ficaria assim:

List<String> strings = new ArrayList<String>();
String value = strings.get(0);

A própria coleção fica responsável pelo casting. (:

Estou com mais uma duvida Eron,

eu troquei o map pela Lista simples de String,

String pdf = c.resultset.getString("PDF"); lista.add(pdf);

Como faço para pegar ela no jsp?

Pois com o map não funcionou como você tinha me explicado, e esta lista pode ser mais simples.

Abraço

Fiz um exemplo simples com JSP:

Classe Teste:

package teste;

import java.util.ArrayList;
import java.util.List;

public class Teste {
	
	private List<String> lista;
	
	public List<String> getLista(){
		lista = new ArrayList<String>();
		lista.add("Maçã");
		lista.add("Pêssego");
		
		return lista;
	}
}

Página JSP:

<%@page import="java.io.PrintWriter"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="teste.Teste"%> <!-- Necessário importar sua classe. -->
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<% Teste teste = new Teste(); 

   List<String> lista = teste.getLista(); 
  
  for(String objeto : lista){%>

	 <%=objeto %>

  <% } %> 
  
</body>
</html>

Obrigado ta resolvido!!!