如何在 JSP 页面中显示数据库表
Posted
技术标签:
【中文标题】如何在 JSP 页面中显示数据库表【英文标题】:How to display a database table in the JSP page 【发布时间】:2015-09-20 22:00:12 【问题描述】:我试图在我的 JSP 页面中的一个表上显示我的用户表。但是当我运行 JSP 页面时没有显示数据。
我有一个名为“eyetracker”的 mysql 架构和一个名为“user”的表。感谢您的帮助.. 如果可能的话,我想通过使用 servlet 检索 mySQL 数据并将其显示在 JSP 页面中...
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<form method="post">
<table border="2">
<tr>
<td>user ID</td>
<td>Birthday</td>
<td>Gender</td>
<td>First Name</td>
<td>Last Name</td>
</tr>
<%
try
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/eyetracker";
String username="root";
String password="root";
String query="select * from eyetracker";
Connection conn=DriverManager.getConnection(url, username, password);
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(query);
while(rs.next())
%>
<tr><td><%rs.getInt("userID"); %></td></tr>
<tr><td><%rs.getDate("dob"); %></td></tr>
<tr><td><%rs.getString("gender"); %></td></tr>
<tr><td><%rs.getString("firstName"); %></td></tr>
<tr><td><%rs.getString("lastName"); %></td></tr>
<%
%>
</table>
<%
rs.close();
stmt.close();
conn.close();
catch(Exception e)
e.printStackTrace();
%>
</form>`
【问题讨论】:
您检查过您的ResultSet rs
是否有任何行吗?也就是说,您是否甚至进入了while
循环?
将您的查询更改为select * from user
,并确保您已将mysql jar 放入WEB-INF/lib
。
【参考方案1】:
更新您的小代码,如下所示,
%>
<tr><td><%out.println(rs.getInt("userID")); %></td></tr>
<tr><td><%out.println(rs.getDate("dob")); %></td></tr>
<tr><td><%out.println(rs.getString("gender")); %></td></tr>
<tr><td><%out.println(rs.getString("firstName")); %></td></tr>
<tr><td><%out.println(rs.getString("lastName")); %></td></tr>
<tr><td><%=rs.getInt("userID"); %></td></tr>
<tr><td><%=rs.getDate("dob"); %></td></tr>
<tr><td><%=rs.getString("gender"); %></td></tr>
<tr><td><%=rs.getString("firstName"); %></td></tr>
<tr><td><%=rs.getString("lastName"); %></td></tr>
【讨论】:
您可能想要添加更改的原因和内容。这样会更清楚。【参考方案2】:在 JSP 中,如果你想在 html DOM 中添加动态内容,你需要这样做
<tr><td><%=rs.getInt("userID"); %></td></tr>
<tr><td><%=rs.getDate("dob"); %></td></tr>
<tr><td><%=rs.getString("gender"); %></td></tr>
<tr><td><%=rs.getString("firstName"); %></td></tr>
<tr><td><%=rs.getString("lastName"); %></td></tr>
注意上面代码中的=
。
您的代码中缺少这些,因此代码只是提取值而不是将它们插入 HTML DOM。
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<form method="post">
<table border="2">
<tr>
<td>user ID</td>
<td>Birthday</td>
<td>Gender</td>
<td>First Name</td>
<td>Last Name</td>
</tr>
<%
try
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/eyetracker";
String username="root";
String password="root";
String query="select * from user";
Connection conn=DriverManager.getConnection(url, username, password);
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(query);
while(rs.next())
%>
<tr><td><%=rs.getInt("userID") %></td></tr>
<tr><td><%=rs.getDate("dob") %></td></tr>
<tr><td><%=rs.getString("gender") %></td></tr>
<tr><td><%=rs.getString("firstName") %></td></tr>
<tr><td><%=rs.getString("lastName") %></td></tr>
<%
%>
</table>
<%
rs.close();
stmt.close();
conn.close();
catch(Exception e)
e.printStackTrace();
%>
</form>
【讨论】:
【参考方案3】:表达式标签将用于在 JSP 页面中显示值。表达式标记转换为 Java 语句。但是您使用 Scriptlet 标签允许您在 JSP 服务器页面中嵌入任何有效的 Java 源代码。
结果来自数据库,然后会正常显示。
<tr><td><%=rs.getInt("userID"); %></td></tr>
<tr><td><%=rs.getDate("dob"); %></td></tr>
<tr><td><%=rs.getString("gender"); %></td></tr>
<tr><td><%=rs.getString("firstName"); %></td></tr>
<tr><td><%=rs.getString("lastName"); %></td></tr>
【讨论】:
【参考方案4】:如果类路径中没有 jdbc 驱动程序,则错误会进入应用程序服务器输出,因为您有一行 e.printStackTrace();
。
尝试改变:
catch(Exception e)
e.printStackTrace();
与:
catch(Exception e)
e.printStackTrace();
out.println("<h1> error: "+ e.getMessage()+"</h1>");
看看你的jdbc驱动有没有问题
【讨论】:
【参考方案5】:不只是Expression标签转换成Java,Full JSP文件转换成Servlet,所以使用任意一个Expression或Scriptlet标签。
【讨论】:
【参考方案6】:很好的解决方案,在我的桌子上尝试了同样的方法,但是
<tr><td><%=rs.getString("column1") %></td
<td><%=rs.getInt("column2") %></td></tr>
只打印第一列的第一个值,然后循环停止。它仅适用于 varchar 类型的列,但不适用于 int 类型的列。
【讨论】:
以上是关于如何在 JSP 页面中显示数据库表的主要内容,如果未能解决你的问题,请参考以下文章
如何将mysql数据库表中的内容显示在Web页面中,用啥软件实现呢?