[英]How to display a database table in the JSP page
我試圖將我的用戶表顯示在我的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>`
在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>
更新你的小代碼如下,
%>
<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>
<%
Expression標簽將用於在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>
如果在類路徑中沒有jdbc驅動程序,則錯誤會進入應用程序服務器輸出,因為您有一行e.printStackTrace();
。 試着改變:
catch(Exception e) {
e.printStackTrace();
}
附:
catch(Exception e) {
e.printStackTrace();
out.println("<h1> error: "+ e.getMessage()+"</h1>");
}
看看你的jdbc驅動程序是否有問題
不僅Expression標簽轉換為Java,而且Full JSP文件轉換為Servlet,因此使用任何一個Expression或Scriptlet標簽。
偉大的解決方案,在我的桌子上嘗試相同,但
<tr><td><%=rs.getString("column1") %></td
<td><%=rs.getInt("column2") %></td></tr>
只打印第一列的第一個值,然后循環停止。 它僅適用於varchar類型列,但不適用於int類型列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.