我的数据库只有一个字段username 里面的值为1 2 3 4 5 6 7 8
但是为什么我用list保存 输出的却是 8 8 8 8 8 8 8 8 呢 求解 =。=package dao;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class Cha{ public List cha()
{
List<Userbean> list=new ArrayList<Userbean>();
Connection conn=null;
Statement stmt=null;
String sqlstr;
ResultSet rs=null;
DB db=new DB();
Userbean user=new Userbean();
conn=db.getConn();
try{
stmt = conn.createStatement();
sqlstr = "select * from test";
        rs=stmt.executeQuery(sqlstr);
        while(rs.next())
        {   
         user.setUsername(rs.getString(1));
            list.add(user);
        }
}
catch(SQLException e2)
        {
            System.out.println("数据库存在异常!查操作时出现错误");
            System.out.println(e2.toString());
        }
finally
        {
            try
            {
                if(rs != null) rs.close();
                if(stmt != null) stmt.close();
                if(conn!= null) conn.close();
            }
         catch(SQLException e)
         {
             System.out.println("数据库存在异常!查操作时出现错误");
         }            
        }
return list;
}
}

解决方案 »

  1.   

    ChaServlet.javapackage servlet;
    import dao.Cha;
    import dao.Userbean;import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class ChaServlet extends HttpServlet {
      public void doGet(HttpServletRequest request, HttpServletResponse response)
                                   throws ServletException, IOException {
                               doPost(request, response);
        
      }
      public void doPost(HttpServletRequest request, HttpServletResponse response)
                                  throws ServletException, IOException  {
                  
                response.setContentType("text/html");
                List<Userbean> list=new ArrayList<Userbean>();
                    Cha c=new Cha(); 
                    list=c.cha();
                    
                    request.setAttribute("list",list);
                    RequestDispatcher   requestDispatcher=request.getRequestDispatcher("/result.jsp");   
                    requestDispatcher.forward(request,response);
                    
                    
       }
      }
      

  2.   

    result.jsp 遍历list输出<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ page import="java.util.List"%>
    <%@ page import="dao.Userbean"%>
    <%@ page import="java.util.*" %>
    <%@ page import="java.util.ArrayList" %>
    <%@ page import="java.util.Iterator" %>
    <%@ page import="java.util.List" %><%List list=(ArrayList)request.getAttribute("list");
        for(int i=0; i<list.size(); i++)    {   
           {
           Userbean user=(Userbean)list.get(i);
           out.println(user.getUsername());
           }
              
           
       }
    %>
    here is result.jsp我也不知道问题出在哪所以也不清楚都应该贴什么了 大神们原谅我吧
      

  3.   

     while(rs.next())
      {   
      UserBean user = new UserBean();
      user.setUsername(rs.getString(1));
      list.add(user);
      }你不new的话,user都是指向一个实例。
      

  4.   

    你把关键的几个地方,加system.out.print 看看打应的对不对,如正确,再到jsp页面alert看每次的取值对不对。一点一点排查呗
      

  5.   

    小孩真有礼貌,呵呵。建议不要在 JSP 中使用 <% %> 之类的东西,应该使用 Servlet 来进行处理,加油哦
      

  6.   


    Userbean user=new Userbean();
    conn=db.getConn();
    try{
    stmt = conn.createStatement();
    sqlstr = "select * from test";
      rs=stmt.executeQuery(sqlstr);
      while(rs.next())
      {   
      user.setUsername(rs.getString(1));
      list.add(user);
      }Userbean user=new Userbean();
    user对象创建了一次,user.setUserName()调了多次,但是值被最后一次覆盖,所以都是8(最后一次的值)
      

  7.   

    楼上说的很对  把Userbean user=new Userbean(); while(rs.next())
      {   
      user.setUsername(rs.getString(1));
      list.add(user);
      }
    放在while语句中  自己好好理解下吧  看下list的API
      

  8.   

    加到list里的是对象的引用  你每次 给的对象 都是同一个   while里面的语句只是改变了同一个对象里的值
      

  9.   

    如果把Userbean user=new Userbean();放到while里面就是8个不同对象   最好大脑里对堆有一个概念