我使用 Netbeans、GlassFish 和 JavaDB 创建了一个数据库应用程序。现在我的 Controller Servlet 代码执行一些动态 SQL 查询并返回结果集(或者我可以更改 toString)。现在,如何以表格格式显示返回的结果集(我不知道结果集的结构)。有人可以帮我解决这个问题吗?
最佳答案
您可以使用 Map<String, Object>
表示“动态”行,即 iterable在<c:forEach>
。您可以使用 ResultSetMetaData
收集有关列的信息,例如 column count和 column labels .
所以,这个映射应该这样做:
List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
while (resultSet.next()) {
Map<String, Object> columns = new LinkedHashMap<String, Object>();
for (int i = 1; i <= columnCount; i++) {
columns.put(metaData.getColumnLabel(i), resultSet.getObject(i));
}
rows.add(columns);
}
可以在JSP中显示如下:
<table>
<thead>
<tr>
<c:forEach items="${rows[0]}" var="column">
<td><c:out value="${column.key}" /></td>
</c:forEach>
</tr>
</thead>
<tbody>
<c:forEach items="${rows}" var="columns">
<tr>
<c:forEach items="${columns}" var="column">
<td><c:out value="${column.value}" /></td>
</c:forEach>
</tr>
</c:forEach>
</tbody>
</table>
关于java - 如何将未知列数的 ResultSet 映射到 List 并将其显示在 HTML 表格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37293035/