以下是一个可能的MVC模式的实现,其中使用了JSP、Servlet和JavaBean来实现对books表的增、删、改、查操作:
创建MySQL数据库,并在其中创建books表,包含以下字段:ISBN编号、书名、作者、价格和库存数量。
创建JavaBean类Book,用来表示books表中的一条记录。Book类的定义如下:
java
Copy
public class Book {
private String isbn;
private String title;
private String author;
private double price;
private int stock;
public Book() {}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
}
创建DAO类BookDAO,用来完成对books表的增、删、改、查操作,代码如下:
java
Copy
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class BookDAO {
private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "123456";
public List<Book> getAllBooks() {
List<Book> books = new ArrayList<>();
try {
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM books");
while (rs.next()) {
Book book = new Book();
book.setIsbn(rs.getString("isbn"));
book.setTitle(rs.getString("title"));
book.setAuthor(rs.getString("author"));
book.setPrice(rs.getDouble("price"));
book.setStock(rs.getInt("stock"));
books.add(book);
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return books;
}
public void updateBook(String isbn, int stock, double price) {
try {
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
PreparedStatement stmt = conn.prepareStatement("UPDATE books SET stock = ?, price = ? WHERE isbn = ?");
stmt.setInt(1, stock);
stmt.setDouble(2,price);
stmt.setString(3, isbn);
stmt.executeUpdate();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
创建Servlet类BookServlet,用来以表格的形式显示books表中的所有记录,并提供超链接,代码如下:
java
Copy
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class BookServlet extends HttpServlet {
private BookDAO bookDAO;
public void init() {
bookDAO = new BookDAO();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Book> books = bookDAO.getAllBooks();
request.setAttribute("books", books);
request.getRequestDispatcher("/booklist.jsp").forward(request, response);
}
}
创建JSP页面booklist.jsp,用来显示books表中的所有记录和提供修改链接,代码如下:
jsp
Copy
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Books</title>
</head>
<body>
<h1>Books</h1>
<table border="1">
<tr>
<th>ISBN</th>
<th>Title</th>
<th>Author</th>
<th>Price</th>
<th>Stock</th>
<th>Action</th>
</tr>
<c:forEach var="book" items="${books}">
<tr>
<td>${book.isbn}</td>
<td>${book.title}</td>
<td>${book.author}</td>
<td>${book.price}</td>
<td>${book.stock}</td>
<td><a href="updatebook.jsp?isbn=${book.isbn}">Update</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
创建JSP页面updatebook.jsp,用来修改books表中某条记录的库存数量和价格,代码如下:
jsp
Copy
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Update Book</title>
</head>
<body>
<h1>Update Book</h1>
<form method="post" action="updatebook">
<label>ISBN:</label>
<input type="text" name="isbn" value="${param.isbn}" readonly><br>
<label>Stock:</label>
<input type="text" name="stock" value="${param.stock}"><br>
<label>Price:</label>
<input type="text" name="price" value="${param.price}"><br>
<input type="submit" value="Update">
</form>
</body>
</html>
最后创建Servlet类UpdateBookServlet,用来处理updatebook.jsp页面提交的表单数据,并调用BookDAO的updateBook方法来更新books表中的某条记录,代码如下:
java
Copy
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UpdateBookServlet extends HttpServlet {
private BookDAO bookDAO;
public void init() {
bookDAO = new BookDAO();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String isbn = request.getParameter("isbn");
int stock = Integer.parseInt(request.getParameter("stock"));
double price = Double.parseDouble(request.getParameter("price"));
bookDAO.updateBook(isbn, stock, price);
response.sendRedirect("book");
}
}
以上是一个简单的使用MVC模式实现对books表的增、删、改、查操作的示例。需要注意的是,这只是一个基础的示例,实际应用中可能需要更加复杂的逻辑和功能,例如添加数据校验、权限控制、分页查询等功能。