【问题标题】:Retrieving data from a MySQL database and displaying it in html using java [duplicate]从 MySQL 数据库中检索数据并使用 java [重复] 在 html 中显示它
【发布时间】:2012-02-19 21:41:00
【问题描述】:

我有一个 MySQL 数据库,我正在尝试搜索它并将结果显示在一个表格中,该表格与网页上的 HTML 中的 db 具有相同的列。我正在为 servlet 使用 JAVA,并且我让网页使用 JavaScript 将搜索字符串发送到 servlet。我知道如何:

  1. 连接到数据库
  2. 查询 db 并在结果集中检索适当的数据

我无法从结果集返回并在表格中的网页上显示它。

【问题讨论】:

    标签: java mysql html servlets


    【解决方案1】:

    这是一个很好的教程(如果现在有点老了)。它涵盖了从数据库获取数据、使用 MVC 类型架构、Java bean 和带有表达式语言的 JSP。

    http://pdf.coreservlets.com/

    请看第 17 章。

    【讨论】:

      【解决方案2】:

      您可以使用ResultSetMetaData 在 HTML 表格中显示您的数据。我假设 'rs' 是查询结果集的变量。以下应该适合你

      int rowCount = 0;
      PrintWriter out = response.getWriter();
      
       out.println("<P ALIGN='center'><TABLE BORDER=1>");
       ResultSetMetaData rsmd = rs.getMetaData();
       int columnCount = rsmd.getColumnCount();
       // table header
       out.println("<TR>");
       for (int i = 0; i < columnCount; i++) {
         out.println("<TH>" + rsmd.getColumnLabel(i + 1) + "</TH>");
         }
       out.println("</TR>");
       // the data
       while (rs.next()) {
        rowCount++;
        out.println("<TR>");
        for (int i = 0; i < columnCount; i++) {
          out.println("<TD>" + rs.getString(i + 1) + "</TD>");
          }
        out.println("</TR>");
        }
       out.println("</TABLE></P>");
       return rowCount;
      }
      

      您可以查看此tutorial 了解详细信息。

      【讨论】:

      • ResultSetMetaData - 是的,这是获取列名的更好方法,而不是在 servlet 中硬编码。只有当您希望在 HTML 表中使用与相应数据库表中不同的列名时,硬编码才实用。
      • 真的!因此我建议使用ResultSetMetaData。很好的一点@WebUser..
      • 你问过什么@ManBearPig 吗?因为我在我的 stackexchange 收件箱中看到了一些 cmets,但在这里无法阅读。
      • 是的,我把评论弄乱了,然后重新输入了。我是使用 JAVA 和 servlet 的新手,所以这是一个愚蠢的问题,但是该代码是否包含在 JavaScript 调用的 servlet 方法中?我在网页上调用该方法,例如:'Servlet.search(searchStr)',以便代码在'search'方法中?我想我很困惑,因为我在它们中看到了 java 和 html out.println() 我很困惑它会在页面上的哪个位置调用表格?
      • 虽然我不知道你的 'search(searchStr)' 方法里面有什么,但我认为你可以将代码放在你想要的任何地方,因为它会将你的结果集的值打印成 HTML表。
      【解决方案3】:

      您是说您无法遍历 ResultSet 对象并在 servlet 中生成 HTML?

      if (rs.next()) {
      
          out.print("<table><tr><th>column1</th><th>column2</th>...</tr>");
      
          do {
      
              out.print("<tr>");
              out.print(new StringBuilder("<td>").append(rs.getObject("column1"))append("</td>").toString());
              out.print(new StringBuilder("<td>").append(rs.getObject("column2"))append("</td>").toString());
              ...
              out.print("</tr>");
          } while (rs.next());
      
          out.print("</table>");
      }
      

      【讨论】:

        【解决方案4】:

        步骤
        1)假设您从数据库中获取列表
        2) 将此列表设置为 http-request 属性。
        (使用 setAttribute 函数)
        3) 并从 httpRequest.
        获取 RequestDispatcher 4) 在 jsp 上使用以下

        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <Table>
        <Tr>
             <td>col1</td> 
             <td>col2</td>
        </tr>
        <c:forEach var="i" items="${listName}">
          <tr>
              <td>
                <c:out value="${i['col1']}"/>
              </td>          
              <td>
                <c:out value="${i['col1']}"/>
              </td>
          <tr>
        </c:forEach>
        </table>
        

        【讨论】:

          猜你喜欢
          • 2016-08-03
          • 2016-02-21
          • 1970-01-01
          • 2012-03-09
          • 1970-01-01
          • 2014-09-22
          • 2015-12-03
          • 2013-01-20
          • 1970-01-01
          相关资源
          最近更新 更多