javaweb 在数据库中建立一张表:T- BOOK,包含图书ID,图书名称,图书价格。 编写图书模糊查询界面,录入图书名称的模糊资料,界面下方显示图书信息,要求交给servlet完成。
时间: 2024-02-23 16:02:34 浏览: 154
好的,我会为您详细解答。
首先,在数据库中创建 T_BOOK 表,包含图书ID,图书名称和图书价格三个字段,可以使用以下 SQL 语句:
```sql
CREATE TABLE T_BOOK (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2)
);
```
接下来,您可以编写一个简单的 HTML 页面,用于输入图书名称的模糊查询条件,并将查询结果显示在页面上。
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书查询</title>
</head>
<body>
<form action="BookServlet" method="post">
<label for="name">图书名称:</label>
<input type="text" id="name" name="name">
<button type="submit">查询</button>
</form>
<hr>
<table>
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>价格</th>
</tr>
</thead>
<tbody>
<%-- 查询结果展示在这里 --%>
</tbody>
</table>
</body>
</html>
```
注意,这里的表单提交方式为 POST,提交的目标为名为 BookServlet 的 Servlet。
接下来,编写 Servlet,用于处理表单提交并查询数据库。以下是一个简单的示例:
```java
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/BookServlet")
public class BookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
List<Book> books = new ArrayList<>();
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
String sql = "SELECT id, name, price FROM T_BOOK WHERE name LIKE ?";
ps = con.prepareStatement(sql);
ps.setString(1, "%" + name + "%");
rs = ps.executeQuery();
while (rs.next()) {
Book book = new Book();
book.setId(rs.getInt("id"));
book.setName(rs.getString("name"));
book.setPrice(rs.getBigDecimal("price"));
books.add(book);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
request.setAttribute("books", books);
request.getRequestDispatcher("/book.jsp").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public static class Book {
private int id;
private String name;
private BigDecimal price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
}
}
```
这个 Servlet 主要做了以下几件事情:
1. 从请求参数中获取图书名称的模糊查询条件;
2. 查询数据库,并将查询结果封装成 Book 对象;
3. 将查询结果保存到请求属性中,并转发到 book.jsp 页面进行展示。
最后,编写 book.jsp 页面,用于展示查询结果:
```html
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="com.example.BookServlet.Book" %>
<html>
<head>
<meta charset="UTF-8">
<title>图书列表</title>
</head>
<body>
<table>
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>价格</th>
</tr>
</thead>
<tbody>
<c:forEach items="${books}" var="book">
<tr>
<td>${book.id}</td>
<td>${book.name}</td>
<td>${book.price}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
```
在这个页面中,我们使用了 JSTL 标签库来遍历查询结果并展示在表格中。
以上就是一个简单的图书模糊查询界面的实现过程。希望可以帮到你!
阅读全文