如何在 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 页面中显示数据库表的主要内容,如果未能解决你的问题,请参考以下文章

如何在JSP页面显示mysql数据库内容

c# 如何将数据库表中要显示的内容在子窗口中显示出来

如何将mysql数据库表中的内容显示在Web页面中,用啥软件实现呢?

急!我用Java连接了数据库并读取了一个表中的数据,如何在jsp页面中以表格的形式输出查询的数据??谢谢

如何在 JSP 页面中显示 2 个表中的数据

如何将mysql数据库表中的内容显示在Web页面中,用啥软件实现呢?