我的数据库只有一个字段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;
}
}
但是为什么我用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;
}
}
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);
}
}
<%@ 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我也不知道问题出在哪所以也不清楚都应该贴什么了 大神们原谅我吧
{
UserBean user = new UserBean();
user.setUsername(rs.getString(1));
list.add(user);
}你不new的话,user都是指向一个实例。
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(最后一次的值)
{
user.setUsername(rs.getString(1));
list.add(user);
}
放在while语句中 自己好好理解下吧 看下list的API