java - 如何将未知列数的 ResultSet 映射到 List 并将其显示在 HTML 表格中?

标签 java jsp servlets jdbc

我使用 Netbeans、GlassFish 和 JavaDB 创建了一个数据库应用程序。现在我的 Controller Servlet 代码执行一些动态 SQL 查询并返回结果集(或者我可以更改 toString)。现在,如何以表格格式显示返回的结果集(我不知道结果集的结构)。有人可以帮我解决这个问题吗?

最佳答案

您可以使用 Map<String, Object> 表示“动态”行,即 iterable<c:forEach> 。您可以使用 ResultSetMetaData 收集有关列的信息,例如 column countcolumn 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/

相关文章:

java - 空白index.jsp重定向到某个servlet

java - 为什么私有(private)内部类中的变量无法从 Get 中的 AsynC 回调方法获取具有值的私有(private)变量的值?

java - 表达式的类型必须是数组类型,但它解析为对象

java - 是 :url (in Struts2) not do url-rewriting like c:url does in case cookies are disabled?

mysql - 错误: No suitable driver found for jdbc:mysql://localhost:3306/wt

java - 将两个 java 列表传递给 GSON/JSON

java - Servlet 给出错误 java.lang.NoClassDefFoundError

java - 递归斐波那契方法的内存不是更快吗?

java - 显示无法选择单选按钮 "NoSuchElementException: no such element: Unable to locate element"错误

java - HTTP 状态 500 - javax.el.PropertyNotFoundException : Property 'first_name' not found on type java. lang.String