Problemas com método declarado em DAO ao chama-lo em uma JSP

Bom dia pessoa, criei um DAO que possui o seguinte o método para listar todos os clientes e ao selecionar um deles pelo código, todas as informações desse cliente sejam enviadas para outra página para que possa ser alterados os seus dados.

O primeiro método lista todos os clientes cadastrados:

 public List<Clientes>getClientes() throws SQLException{
      
        try{
            List<Clientes>cliente = new ArrayList<Clientes>();
            String sql = "select*from cliente";
            PreparedStatement stm = conn.prepareStatement(sql);
            
            ResultSet rs = stm.executeQuery();
            while (rs.next()){
                Clientes cli = new Clientes();
                cli.setIdCliente(rs.getLong("idCliente"));
                cli.setNome(rs.getString("nome"));
                cli.setEndereco(rs.getString("endereco"));
                cli.setFone(rs.getString("fone"));
                cliente.add(cli);
            }
           
            stm.close();
            rs.close();
            return cliente;
        }catch(SQLException e){
           throw new RuntimeException(e);
        }
     } 

já o segundo serve para buscar todas as infomações do cliente pelo código para que seja atualizado. No momento que instancio a classe DAO na página JSP, chamo o método abaixo para selecionar as informações de um cliente e alterá-lo, porém na chamada do metodo continua apresentando o seguinte erro: cannot find symbol: variable idCliente. Já tentei várias alterçoes e continua o mesmo erro.

public Clientes getCliente(Long idCliente) throws ClassNotFoundException, SQLException{
        
            Connection con = new ConexaoBanco().getConnection();
            String sql ="select*from cliente where idCliente = ?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setLong(1,idCliente);
            ResultSet res = ps.executeQuery();
            List<Clientes> cliente = getClientes(); // repasso para uma lista o método getClientes, que lista todos os clientes
            
           
                
             return cliente.get(0);  
            
       
        
        
    }
    
}

Na página JSP faço dessa forma:

[code]
<%

             clienteDAO dao = new clienteDAO();
             
             List<Clientes> cli =dao.getCliente(idCliente);
             for(Clientes clie: cli){
              
             %>
             <tr>
             <td><%=clie.getIdCliente()%></td>
             <td><%=clie.getNome()%></td>
             <td><%=clie.getEndereco()%></tdr>
             <td><%=clie.getFone()%></td>
             
             <td><a href ="EditarCliente.jsp?idCliente=<%=clie.getIdCliente() %>">Editar</a></td>
             
             </tr>
             <%
              }
             
             %>

[/code] No link gostaria de enviar somente idCliente, mais que fossem também as outras informações sem que tenha que fazer &nome=<%=clie.getNome() %>

Crie um método toString em sua classe cliente. O mesmo deve retornar os atributos do cliente com os respectivos “labels”.
Exemplo:

@Override
public String toString(){
   return "id=" + getId() + "&nome=" + getNome();
}

Aí, ao invés dessa gambiarra toda, use isto:

<td><a href ="EditarCliente.jsp?<%= clie%>">Editar</a></td>  

Quando o compilador for ler este trecho acima, invocará o método toString, de Cliente, retornando o que você especificou lá.

Uma dica:
Cuidado com o nome que você dá às classes e objetos…

Você tá colocando uma classe que define um objeto cliente com o nome Clientes e instanciando uma lista com o nome cliente.
Isso pode gerar uma baita confusão…

[quote=fasts]Uma dica:
Cuidado com o nome que você dá às classes e objetos…

Você tá colocando uma classe que define um objeto cliente com o nome Clientes e instanciando uma lista com o nome cliente.
Isso pode gerar uma baita confusão…[/quote]

Perfeito!

A idéia de usar variáveis é justamente a de permitir que determinadas coisas sejam lidas e compreendidas de imediato.
cliente me remete à apenas um cliente e, não a uma lista de clientes.