用jsp servlet mysql 实现搜索功能
时间: 2024-01-13 15:04:55 浏览: 84
首先,你需要创建一个包含搜索表单的JSP页面。在表单中,用户可以输入搜索关键字并选择要搜索的字段。当用户提交表单时,它将被提交到一个Servlet,该Servlet将从MySQL数据库中检索相关数据。
以下是一个简单的搜索表单示例:
```html
<form action="SearchServlet" method="GET">
<input type="text" name="keyword" placeholder="Enter search keyword">
<select name="field">
<option value="title">Title</option>
<option value="author">Author</option>
<option value="description">Description</option>
</select>
<button type="submit">Search</button>
</form>
```
在这个表单中,用户可以输入搜索关键字和选择要搜索的字段。当他们提交表单时,它将被提交到名为“SearchServlet”的Servlet。
接下来,你需要创建一个名为“SearchServlet”的Java类,该类将处理表单提交并从数据库中检索相关数据。在doGet方法中,你可以检索表单参数并构建SQL查询语句。最后,将查询结果存储在请求属性中,并将请求转发回JSP页面以显示结果。
以下是一个简单的“SearchServlet”示例:
```java
@WebServlet("/SearchServlet")
public class SearchServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection conn;
public void init() {
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password = "";
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String keyword = request.getParameter("keyword");
String field = request.getParameter("field");
String sql = "SELECT * FROM books WHERE " + field + " LIKE '%" + keyword + "%'";
List<Book> books = new ArrayList<>();
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
Book book = new Book();
book.setId(rs.getInt("id"));
book.setTitle(rs.getString("title"));
book.setAuthor(rs.getString("author"));
book.setDescription(rs.getString("description"));
books.add(book);
}
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
request.setAttribute("books", books);
RequestDispatcher rd = request.getRequestDispatcher("search.jsp");
rd.forward(request, response);
}
public void destroy() {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,你可以看到“SearchServlet”类从数据库中检索相关数据并将其存储在一个名为“books”的List对象中。然后,它将查询结果存储在请求属性中,并将请求转发回名为“search.jsp”的JSP页面。
最后,你需要创建一个名为“search.jsp”的JSP页面,该页面将显示从数据库中检索的查询结果。以下是一个简单的“search.jsp”示例:
```html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Search Results</title>
</head>
<body>
<h1>Search Results</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>Title</th>
<th>Author</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<c:forEach var="book" items="${books}">
<tr>
<td>${book.id}</td>
<td>${book.title}</td>
<td>${book.author}</td>
<td>${book.description}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
```
在这个示例中,你可以看到“search.jsp”页面使用JSTL标签库来遍历从Servlet传递的查询结果,并将其显示在HTML表格中。
以上是一个简单的用JSP、Servlet和MySQL实现搜索功能的示例。但是,这只是一个基本示例。你可以根据自己的需求进行更改和扩展。
阅读全文