用jsp和servlet和mysql实现搜索
时间: 2023-11-19 18:05:09 浏览: 39
首先,在JSP页面上,需要一个表单来接收用户输入的搜索关键词,例如:
```html
<form action="searchServlet" method="POST">
<input type="text" name="keyword">
<input type="submit" value="Search">
</form>
```
在这个表单中,用户输入的搜索关键词将被提交到名为“searchServlet”的Servlet。
接下来,创建一个名为“searchServlet”的Java Servlet类。在该类的doPost()方法中,获取用户输入的搜索关键词,连接到MySQL数据库,并执行SQL语句进行搜索。在执行完搜索后,将搜索结果存储在一个List对象中,并将该对象作为属性设置到请求对象中,然后将请求转发到名为“searchResult.jsp”的JSP页面进行显示。
```java
public class SearchServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String keyword = request.getParameter("keyword");
// 连接到MySQL数据库
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List<String> results = new ArrayList<String>();
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/mydatabase", "root", "password");
// 执行搜索SQL语句
String sql = "SELECT title FROM articles WHERE title LIKE ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, "%" + keyword + "%");
rs = stmt.executeQuery();
// 将搜索结果存储在List中
while (rs.next()) {
results.add(rs.getString("title"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 将搜索结果设置到请求对象中
request.setAttribute("results", results);
// 转发到搜索结果页面
RequestDispatcher dispatcher = request.getRequestDispatcher("/searchResult.jsp");
dispatcher.forward(request, response);
}
}
```
最后,在“searchResult.jsp”页面中,可以使用JSTL标签库来显示搜索结果。
```html
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Search Results</title>
</head>
<body>
<h1>Search Results</h1>
<c:forEach var="result" items="${results}">
<p>${result}</p>
</c:forEach>
</body>
</html>
```
在这个JSP页面中,使用了<c:forEach>标签来遍历搜索结果List中的每个元素,并将它们作为段落显示在页面上。