Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP搜索栏函数_Java_Html_Jsp_Tomcat - Fatal编程技术网

Java JSP搜索栏函数

Java JSP搜索栏函数,java,html,jsp,tomcat,Java,Html,Jsp,Tomcat,我正在尝试使用JSP和tomcat制作一个web界面。我有一个学生及其信息的表格,我希望用户能够搜索一个学生,然后我希望显示该学生的所有信息(在表格中)。到目前为止,我已经显示了整个student表并创建了一个搜索框,但现在我不知道当用户单击“搜索”时该做什么。我正在考虑创建一个函数来搜索数据库,但我不知道如何做,因为我是JSP新手。如何调用该函数?以下是我迄今为止的代码: <%@ page import="java.sql.*" %> <% String connectio

我正在尝试使用JSP和tomcat制作一个web界面。我有一个学生及其信息的表格,我希望用户能够搜索一个学生,然后我希望显示该学生的所有信息(在表格中)。到目前为止,我已经显示了整个student表并创建了一个搜索框,但现在我不知道当用户单击“搜索”时该做什么。我正在考虑创建一个函数来搜索数据库,但我不知道如何做,因为我是JSP新手。如何调用该函数?以下是我迄今为止的代码:

<%@ 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
      }