我从数据库读所有记录显示在页面上,结果显示的记录条数正确,可所有记录都是最后一条记录,晕了请帮忙看看吧public class StudentVO {
private String name;
private String sex;
private int age;getter/setter省略}public class ItAction implements Action {
StudentVO student ;
private List list;
public String execute() throws Exception {
student = new StudentVO();
list = new ArrayList();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:user");
Statement stmt = con.createStatement();
String s1 = "select * from student";
ResultSet rset = stmt.executeQuery(s1);
while (rset.next()) {
String name = rset.getString("xm");
String sex = rset.getString("sex");
int age = rset.getInt("age");
student.setName(name);
student.setSex(sex);
student.setAge(age);
System.out.println(student.getName()+student.getSex()+student.getAge());//此处输出正确的结果
list.add(student);
}
} catch (Exception e) {
System.out.println(" eror " + e.getMessage()); } finally { }
return "success";
}
getter/setter省略}jsp:
<%@ taglib prefix="s" uri="/struts-tags"%>
<table>
<s:iterator value="list" >
<tr>
<td><s:property value="name"/></td>
<td><s:property value="sex"/></td>
<td><s:property value="age"/></td>
</tr>
</s:iterator>
</table>===================================================
我数据库中共5条记录,输出结果是:
张三 男 21
张三 男 21
张三 男 21
张三 男 21
张三 男 21
张三 男 21 这是我数据库中的最后一条记录呀
private String name;
private String sex;
private int age;getter/setter省略}public class ItAction implements Action {
StudentVO student ;
private List list;
public String execute() throws Exception {
student = new StudentVO();
list = new ArrayList();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:user");
Statement stmt = con.createStatement();
String s1 = "select * from student";
ResultSet rset = stmt.executeQuery(s1);
while (rset.next()) {
String name = rset.getString("xm");
String sex = rset.getString("sex");
int age = rset.getInt("age");
student.setName(name);
student.setSex(sex);
student.setAge(age);
System.out.println(student.getName()+student.getSex()+student.getAge());//此处输出正确的结果
list.add(student);
}
} catch (Exception e) {
System.out.println(" eror " + e.getMessage()); } finally { }
return "success";
}
getter/setter省略}jsp:
<%@ taglib prefix="s" uri="/struts-tags"%>
<table>
<s:iterator value="list" >
<tr>
<td><s:property value="name"/></td>
<td><s:property value="sex"/></td>
<td><s:property value="age"/></td>
</tr>
</s:iterator>
</table>===================================================
我数据库中共5条记录,输出结果是:
张三 男 21
张三 男 21
张三 男 21
张三 男 21
张三 男 21
张三 男 21 这是我数据库中的最后一条记录呀
解决方案 »
- 严重: Servlet.service() for servlet action threw exception
- 关于 hiberate setMaxResults() 的问题
- 是学J2EE好呢,还是C++
- 不能添加中文,只能添加英文 --这是怎么回事??
- 请大家推荐一个bpm工具,用于画业务流程图,试用30天的也可以,最好开源,不是oracle的那个,谢谢,高分相送!
- tomcat集群求教
- 请问,如何从Socket的getInputStream流中判断是字符文件流还是二进制字节流
- 请问怎样在tomcat5.0.28下配置sqlserver数据库连接池?
- java 如何去除全角空格
- spring+websocket+STOMP报错
- 取属性的类型的问题
- struts2 在页面遍历Map的值 急!急!急!!
<td><s:property value="sex"/></td>
<td><s:property value="age"/></td>
变成
<td><s:property value="student.name"/></td>
<td><s:property value="student.sex"/></td>
<td><s:property value="student.age"/></td>
试试
public class ItAction implements Action {
StudentVO student ;
private List list;
public String execute() throws Exception {
student = new StudentVO();
list = new ArrayList();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:user");
Statement stmt = con.createStatement();
String s1 = "select * from student";
ResultSet rset = stmt.executeQuery(s1);
while (rset.next()) {
StudentVO student = new StudentVo();
String name = rset.getString("xm");
String sex = rset.getString("sex");
int age = rset.getInt("age");
student.setName(name);
student.setSex(sex);
student.setAge(age);
System.out.println(student.getName()+student.getSex()+student.getAge());//此处输出正确的结果
list.add(student);
把红色部分 去掉 换成蓝色的。这是因为 你的student 是在循环上面声明的,在你的循环里面set 值的时候,会把以前的值覆盖掉,所以的的list 里面 add 的值 都 是 一样的,当循环完最后一条的时候,你的list 里面的 所有student 也是都成了最后一条的值。
String name = rset.getString("xm");
String sex = rset.getString("sex");
int age = rset.getInt("age");
student.setName(name);
student.setSex(sex);
student.setAge(age);
System.out.println(student.getName()+student.getSex()+student.getAge());//此处输出正确的结果
list.add(student);
}
每次循环红色部分都会set进新的值到student里面,等student里面有了新的值list才add(student)所以每次add的应当都是不同的student吧。所<s:iterator value="list" >
换成<s:iterator value="#list" >把<td><s:property value="XXX"/></td>都成<td><s:property value="#XXX"/></td>试试呢
Student student=new Student();
String name = rset.getString("xm");
String sex = rset.getString("sex");
int age = rset.getInt("age");
student.setName(name);
student.setSex(sex);
student.setAge(age);
System.out.println(student.getName()+student.getSex()+student.getAge());//此处输出正确的结果
list.add(student);