我通过servlet从数据库中获取数据,然后将其设置为resultset。现在我想在jsp页面上显示数据。为此,我使用列表来设置所有数据,并在jsp页面显示jstl。但我得到两列相同的数据。 这是代码..
服务器代码:
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
wb.setDeviceAccount(rs.getString("accountID"));
wb.setVehicleId(rs.getString("deviceID"));
wb.setSimNumber(rs.getString("simID"));
wb.setImeiNumber(rs.getString("imeiNumber"));
wb.setLastTimestamp(rs.getString("lastGPSTimestamp"));
wb.setLastLoginTime(rs.getString("lastUpdateTime"));
wb.setExpirationTime(rs.getString("expirationTime"));
list.add(wb);
}
rs.close();
stmt.close();
con.close();
request.setAttribute("deviceList", list);
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/installedDeviceList.jsp");
requestDispatcher.forward(request, response);
JSP PAGE:
<c:forEach items="${deviceList}" var="dList">
<tr>
<td></td>
<td>${dList.deviceAccount}</td>
<td>${dList.vehicleId}</td>
<td><a href="#" onclick="toggle();">${dList.simNumber}</a></td>
<td>${dList.imeiNumber}</td>
<td>${dList.lastTimestamp}</td>
<td>${dList.lastLoginTime}</td>
</tr>
</c:forEach>
答案 0 :(得分:1)
在你的循环中总是创建Wb的新引用。 在这里我假设Wb是您的班级名称。您可以根据班级名称更改代码。
Wb wb=null;
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
wb =new Wb();
wb.setDeviceAccount(rs.getString("accountID"));
wb.setVehicleId(rs.getString("deviceID"));
wb.setSimNumber(rs.getString("simID"));
wb.setImeiNumber(rs.getString("imeiNumber"));
wb.setLastTimestamp(rs.getString("lastGPSTimestamp"));
wb.setLastLoginTime(rs.getString("lastUpdateTime"));
wb.setExpirationTime(rs.getString("expirationTime"));
list.add(wb);
}
答案 1 :(得分:0)
当你创造一个独特的“wb”时,你显然只创造了一个物体。每行的实例。您没有两个重复的行,只需将完全相同的对象多次添加到列表中即可。
答案 2 :(得分:0)
对于结果集中的每一行,创建一个新的wb
对象来存储结果集中的数据并将其添加到列表中。
示例:
while ( rs.next() ) {
// set this to equivalent class on your wb variable.
// wb = new wb();
wb.setDeviceAccount( rs.getString( "accountID" ) );
// read other column values here and set in wb
// ...
// lastly
list.add( wb );
} // while rs
然后在您的网页上,您将从列表中正确读取每条记录。