显示从servlet到jsp页面的结果集值

时间:2014-03-21 09:41:17

标签: java servlets jstl

我通过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>

3 个答案:

答案 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

然后在您的网页上,您将从列表中正确读取每条记录。