Java JSP搜索栏函数
我正在尝试使用JSP和tomcat制作一个web界面。我有一个学生及其信息的表格,我希望用户能够搜索一个学生,然后我希望显示该学生的所有信息(在表格中)。到目前为止,我已经显示了整个student表并创建了一个搜索框,但现在我不知道当用户单击“搜索”时该做什么。我正在考虑创建一个函数来搜索数据库,但我不知道如何做,因为我是JSP新手。如何调用该函数?以下是我迄今为止的代码:Java JSP搜索栏函数,java,html,jsp,tomcat,Java,Html,Jsp,Tomcat,我正在尝试使用JSP和tomcat制作一个web界面。我有一个学生及其信息的表格,我希望用户能够搜索一个学生,然后我希望显示该学生的所有信息(在表格中)。到目前为止,我已经显示了整个student表并创建了一个搜索框,但现在我不知道当用户单击“搜索”时该做什么。我正在考虑创建一个函数来搜索数据库,但我不知道如何做,因为我是JSP新手。如何调用该函数?以下是我迄今为止的代码: <%@ page import="java.sql.*" %> <% String connectio
<%@ page import="java.sql.*" %>
<%
String connectionURL =
"jdbc:postgresql://cop4715-postgresql.ucf.edu:8472/******?user=*******&password=******";
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
%>
<html><body>
<h1>Student Table</h1>
<table border = "2">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Birthday</th>
<th>Address</th>
<th>Email</th>
<th>Level</th>
</tr>
</thead>
<%
Class.forName("org.postgresql.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL);
statement = connection.createStatement();
rs = statement.executeQuery("SELECT * FROM students");
ResultSetMetaData metadata = rs.getMetaData();
while (rs.next()) { %>
<tr>
<%
for(int i = 1; i <= metadata.getColumnCount(); i++){ %>
<td>
<%=rs.getString(i)%>
</td>
<%
}
%>
</tr>
<%
}
%>
</table>
<%
rs.close();
%>
<br>
<form action = test()>
Search By Name: <input type="text" name="Name">
<input type ="submit" value="Search">
</form>
</body></html>
学生桌
身份证件
名称
生日
地址
电子邮件
水平仪
表单操作中有错误
<form action = test()>
Search By Name: <input type="text" name="Name">
<input type ="submit" value="Search">
</form>
按姓名搜索:
表单操作必须指向另一个JSP或Servlet
<html>
<body>
<form action="student.jsp" method="GET">
Search By Name: <input type="text" name="Name">
<input type ="submit" value="Search"></form>
</body>
</html>
按姓名搜索:
在student.jsp中
- 添加数据库代码,它将返回所有学生值
如果希望根据搜索输入筛选值,则使用
并应用rs=statement.executeQuery(“从您的条件所在的学生中选择*”)中的值代码>
调用函数的思路不正确。为什么?因为,当您想要从数据库中检索数据时,函数会调用JavaScript,该JavaScript在客户端执行,这应该发生在服务器端,就像您已经在使用
*进行检索一样,请参见下文
由于以上查询现已参数化,因此强烈建议使用PreparedStatement
if (name != null && name.length() > 0) {
PreparedStatement ps = connection.prepareStatement(
"SELECT * FROM students WHERE Name = ?"); // ? = placeholder
ps.setString(1, name); // Bind the value to the placeholder
rs = ps.executeQuery(); // Execute the prepared statement and fetch results
}
PreparedStatement
有助于避免SQL注入攻击,并消除笨拙且容易出错的字符串连接
*SCRPlets早就被弃用了。更好的方法是在两者之间放置一个Servlet,处理所有JDBC代码,用结果填充请求
对象,然后转发到一个JSP,该JSP只处理如何向用户显示结果。Rachelle,您可以参考一个示例,该示例将员工详细信息显示为JSP的输出。本例在适当的地方使用servlet、jsp、jdbc、dao和属性文件。您可以浏览此示例,然后修改以显示数据库中的学生详细信息。
示例链接-
通过以上教程,您将能够通过eclipse设置代码。刚刚在PreparedStatement
上添加了一些示例使用代码。避免不惜一切代价使用串联字符串查询。为了简单起见,使用单独的servlet创建学生,并根据搜索条件搜索学生。
String name = request.getParameter("Name");
if (name != null && name.length() > 0) {
rs = statement.executeQuery("SELECT * FROM students WHERE Name = '" + name + "'");
} else {
rs = statement.executeQuery("SELECT * FROM students");
}
if (name != null && name.length() > 0) {
PreparedStatement ps = connection.prepareStatement(
"SELECT * FROM students WHERE Name = ?"); // ? = placeholder
ps.setString(1, name); // Bind the value to the placeholder
rs = ps.executeQuery(); // Execute the prepared statement and fetch results
}