我正在尝试将我的用户表显示在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>`
答案 0 :(得分: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>
答案 1 :(得分:2)
更新您的小代码,如下所示,
%GT;
<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>
(?<salary>\$\d+)|\b(?<account>[a-zA-Z0-9]+(?:-[0-9]+)+)
&LT;%
答案 2 :(得分:0)
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>
答案 3 :(得分:0)
如果您没有在类路径中使用jdbc驱动程序,则错误会进入应用程序服务器输出,因为您有一行var myScreen = Screen.FromControl(originalForm);
var otherScreen = Screen.AllScreens.FirstOrDefault(s => !s.Equals(myScreen))
?? myScreen;
otherForm.Left = otherScreen.WorkingArea.Left + 120;
otherForm.Top = otherScreen.WorkingArea.Top + 120;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 f = new Form1();
f.StartPosition = FormStartPosition.Manual;
f.Location = Screen.PrimaryScreen.Bounds.Location;
Application.Run(f);
}
。
试着改变:
e.printStackTrace();
使用:
catch(Exception e) {
e.printStackTrace();
}
查看你的jdbc驱动程序是否有问题
答案 4 :(得分:0)
不仅Expression标记转换为Java,而且完整JSP文件转换为Servlet,因此使用任何一个Expression或Scriptlet标记。
答案 5 :(得分:0)
很好的解决方案,在我的桌子上尝试过相同但是
<tr><td><%=rs.getString("column1") %></td
<td><%=rs.getInt("column2") %></td></tr>
仅打印第一列的第一个值,然后循环停止。它仅适用于varchar类型列,但不适用于int类型列。