【问题标题】:SQL Query on jsp file using Text Box Search and button使用文本框搜索和按钮对 jsp 文件进行 SQL 查询
【发布时间】:2015-01-06 10:30:39
【问题描述】:

我在搜索中遇到困难(选择 sql 语句)。如何将我输入的值放在文本框中并在sql查询中使用 这样我就可以根据我插入的值搜索部门名称。

我不知道这个“SELECT * FROM department where department_name ='”%search%“'”的正确查询

下面是我的jsp文件:

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
 /head>


 <body>

       <sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost/department"
     user="root"  password="root"/>

 <sql:query dataSource="${snapshot}" var="sql">
SELECT * from department;
<!-- SELECT * FROM department where department_name ='"%search%"'-->
</sql:query>

  <FORM NAME="form1" METHOD="POST">
  <input type="text" name="search"/>
   <INPUT TYPE="BUTTON" VALUE="Button 1">
   </FORM><br>


    <table border=1>
        <thead>
            <tr>
                <th>department Id</th>
                <th>department Name</th>

                <th colspan=1>Action</th>
            </tr>
        </thead>
        <tbody>
        <c:forEach var="user" items="${sql.rows}">
                <tr>
                    <td><c:out value="${user.department_id}" /></td>
                    <td><c:out value="${user.department_name}" /></td>
                  </tr>
            </c:forEach>
        </tbody>
    </table>


</body>
</html>

【问题讨论】:

标签: sql jsp jstl


【解决方案1】:

首先,在 SQL 查询中插入参数

<sql:query dataSource="${snapshot}" var="sql">
SELECT * from department WHERE department_name = <%= request.getParameter("query") %>;
</sql:query>

将方法更改为 METHOD="GET" 和

<input type="text" name="query"/>
<INPUT TYPE="submit">

当你点击按钮时,url就像

http://hostname.com/mywebapp/mypage.jsp?query=John+Smith

【讨论】:

  • 谢谢,现在我可以使用文本框中的值了。但是当我尝试使用时遇到另一个问题:SELECT * from department WHERE department_name = &lt;%= request.getParameter("query") %&gt;; 出现错误:java.sql.SQLException: Unknown column 'Math' in 'where Clause' 它搜索列名但不搜索数据列内
  • 一旦你修复了严重的 SQL 注入攻击漏洞,我将删除反对票。
猜你喜欢
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多