从 MySQL 数据库中检索数据并使用 java [重复] 在 html 中显示它
Posted
技术标签:
【中文标题】从 MySQL 数据库中检索数据并使用 java [重复] 在 html 中显示它【英文标题】:Retrieving data from a MySQL database and displaying it in html using java [duplicate] 【发布时间】:2012-02-19 21:41:00 【问题描述】:我有一个 mysql 数据库,我正在尝试搜索它并将结果显示在一个表格中,该表格与网页上的 html 中的 db 具有相同的列。我正在为 servlet 使用 JAVA,并且我让网页使用 javascript 将搜索字符串发送到 servlet。我知道如何:
-
连接到数据库
查询 db 并在结果集中检索适当的数据
我无法从结果集返回并在表格中的网页上显示它。
【问题讨论】:
【参考方案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>
【讨论】:
以上是关于从 MySQL 数据库中检索数据并使用 java [重复] 在 html 中显示它的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 java servlet 从 mysql 数据库中检索图像并将其显示在 HTML img 标签中? [关闭]