这个是我的javabean中的一段代码,是取出数据库记录的方法.
public ArrayList getUser(){
ArrayList al=new ArrayList();

try{
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from user1 order by name desc");
while(rs.next()){

User user=new User();
user.setName(rs.getString("name"));
user.setPassWord(rs.getString("pa"));
al.add(user);
}
}catch(Exception e){
e.printStackTrace();
}
return al;
}

public static void main(String args[]){
Db d=new Db();
Iterator it=d.getUser().iterator();
while(it.hasNext()){
User user=(User)it.next();
System.out.println(user.getName());
}
}
}
一下是一个jsp:使用上面的javabean
  <body>
  <jsp:useBean id="db" class="message.Db"></jsp:useBean>
  <%
   Iterator ir=db.getUser().iterator();
   while(ir.hasNext()){
   message.User user=(message.User)ir.next();
   out.println(user.getName());
   out.println(user.getPassWord());
   }
   %>
   <a href="MyJsp.jsp">MyJsp.jsp</a>  
  </body>
页面情况为,比如数据库有10条记录,错误的把某一条循环显示了10次.
而我在上面的javabean中使用main()方法验证时,却可以输出10条正确的记录,而不是和JSP中一样把某条显示10次.
高手们帮忙看看,谢谢了.

解决方案 »

  1.   

    我也觉得奇怪
    加个user = null看看
      

  2.   

    本来返回的是ArrayList 
    你为什么不直接用ArrayList 呢,要转成Iterator
      

  3.   

    的确是很奇怪的问题啊.关于XP1204兄弟说的,用迭代应该不会有问题的啊.你看javabean中我用main()方法验证也是用迭代了啊,但是两者结果却不同.JSP中出现问题
      

  4.   

    jspArrayList objAL = db.getUser();for(int i=0;i<objAL;i++)
    {
       message.User user = (message.User)objAL.get(i);
       out.println(user.getName());
      out.println(user.getPassWord());
    }