Estudando array

E ae galera blz!

Então estou estudando arrays e fiz dois modelos um simples e um mais detalhado, o primeiro esta exbindo resultado legal o segundo esta exibindo uns dados estranhos na tela.
Veja como esta o resultado na tela:
[b]
String de nome simples: André Muraro

exemplo de List 1:
Marcia David
Alexandre
Administrador Filiais
Márcia laura
André Muraro
André Muraro

exemplo de List 2:
Interfaces.ClassArray@1ec3adc
Interfaces.ClassArray@c7f06
Interfaces.ClassArray@677ea2
Interfaces.ClassArray@aaf64e
Interfaces.ClassArray@10a234
Interfaces.ClassArray@93b59
[/b]

Então como vcs podem ver o exeplo de List 1 exibiu na boa já o dois mostrou esses valores estranhos.
Olha o meu código:
Essa é a class:

/*
 * ClassArray.java
 *
 * Created on 27 de Agosto de 2007, 21:46
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package Interfaces;

/**
 *
 * @author alexandre
 */
public class ClassArray 
{
    private String nome;
    private String cargo;
    private String usuario;
    private String senha;
    
    
    public String getNome()
    {
        return nome;
    }
    
    public void setNome(String nome)
    {
        this.nome = nome;
    }
    
    public String getCargo()
    {
        return cargo;
    }
    
    public void setCargo(String cargo)
    {
        this.cargo = cargo;
    }
    
    public String getUsuario()
    {
        return usuario;
    }
    
    public void setUsuario(String usuario)
    {
        this.usuario = usuario;
    }
    
    public String getSenha()
    {
        return senha;
    }
    
    public void setSenha(String senha)
    {
        this.senha = senha;
    }
}

Essa é a class DAO que puxa os valores do banco:

/*
 * DAOUsuario.java
 *
 * Created on 17 de Julho de 2007, 22:18
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package DAO;


import java.io.*;
import java.net.*;
import java.util.*;

import java.sql.*;

import conexao.Conexao;
import Interfaces.ClassArray;

  

/**
 *
 * @author alexandre
 */
public class DAOUsuario 
{
    private String nome;
    private String usuario;
    
    private ResultSet rs;
    private Connection conn;
    private Statement sql; 

    //private ArrayList lista;
    /** Creates a new instance of DAOUsuario */
    public DAOUsuario() throws SQLException, IOException
    {
     conn = Conexao.connect();
    }
    
    public void setNome(String aNome) throws SQLException, IOException
    {
     nome = aNome;
     
      PreparedStatement  sql = conn.prepareStatement("select * from tabela where usuario = ?");
      sql.setString(1,nome);
      
     rs = sql.executeQuery();
      
      while(rs.next())
      {
        usuario = rs.getString("nome");
      }
     
     
     
    }
    
    public  List getLista() throws SQLException
    {
        PreparedStatement sql = conn.prepareStatement("select * from tabela");
        rs = sql.executeQuery();
        
        List lista = new ArrayList();
        
        while(rs.next())
        {
            lista.add(rs.getString("nome"));
        }
        
        return lista;        
        
    }
    
    public List getDados() throws SQLException
    {
        PreparedStatement sql = conn.prepareStatement("select * from tabela");
        rs = sql.executeQuery();
        
        List dados = new ArrayList();
        ClassArray array;
        while(rs.next())
        {
            array = new ClassArray();
            array.setNome(rs.getString("nome"));
            array.setCargo(rs.getString("cargo"));
            array.setUsuario(rs.getString("usuario"));
            array.setSenha(rs.getString("senha"));
            
            dados.add(array);
        }
        
        return dados;
    }
    
    public String getUsuario()
    {
        return usuario;
    }
    
    
    
}

Essa é a class que joga na JSP:

/*
 * ValidaUsuario.java
 *
 * Created on 17 de Julho de 2007, 22:04
 */

package Validacao;


import DAO.DAOUsuario;
import java.io.*;
import java.net.*;
import java.sql.SQLException;

import javax.servlet.*;
import javax.servlet.http.*;

import Interfaces.InterfaceUsuario;

/**
 *
 * @author alexandre
 * @version
 */
public class ValidaUsuario extends HttpServlet {
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    
    private String nome;
    private String usuario;
    private int erro;
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, SQLException 
    {
    
        nome = request.getParameter("nome");
      //  System.out.println("nome teste :" + nome);
        InterfaceUsuario validar = new InterfaceUsuario();
        
        validar.setNome(nome);
        erro = validar.getErro();
        
          
        if(erro == 0)
        {
     
          DAOUsuario resultado = new DAOUsuario();
          resultado.setNome(nome);
          
          request.setAttribute("usuario",resultado);
                   
          RequestDispatcher view = request.getRequestDispatcher("home.jsp");
          view.forward(request,response);
        }
        else
        {
            System.out.println("Erro aqui");            
        }
        
        
    }
    
}

Essa é a JSP:

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib  prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!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>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page<br></h1>

        String de nome simples: <font color="red"> ${usuario.usuario} </font><br>
        <br>
        exemplo de List 1:<font color="blue">
            <table>
                <c:forEach var="nomes" items="${usuario.lista}">
                    <tr>
                        <td>${nomes}</td>
                    </tr>
                    
                </c:forEach>
        </table></font><br><br>
          exemplo de List 2:<font color="blue">
            <table>
          <c:forEach var="detalhes" items="${usuario.dados}">
                    <tr>
                        <td>${detalhes}</td>
                    </tr>
                    
          </c:forEach>
        </table>
    </body>
</html>

Alguém pode me explicar porque o segundo List exibiu esses dados? E como eu corrijo isso?

bem alexandremanowar

no seu JSP vc esta mandando um print na instancia do Objeto ClassArray

<td>${nomes}</td> 

tente

<td>${nomes.nome}</td> 

ok

E ae galera blz!

Então andei estudando melhor a e vi que a minha falha mesmo estava na EL aí eu corrigi deixando assim:

 <c:forEach var="detalhes" items="${usuario.dados}">
                    <tr>
                        <td><c:out value="${detalhes.nome}" /> <c:out value="${detalhes.cargo}" /> <c:out value="${detalhes.usuario}" /> <c:out value="${detalhes.senha}" /></td>
                    </tr>
                    
          </c:forEach>

Dessa forma funcionou blz!

Aproveitando esse tópico e se eu quiser fazer essa função ao invés de criar uma class como a ClassArray que eu usei e capturar os dados e jogar em um List, será que é possível fazer isso usando apenas um HasMap? Eu andei lendo sobre o HasMap e vi que é possível fazer isso, porém algumas pessoas que trabalham com java disseram que usando a class como eu fiz fica mais orientado a objeto e seria mais correto.
Gostaria de opiniões sobre isso! POrque me pareceu que com HasMap era mais simples.

Valeu