java_web/java/com/demo/BookQueryServlet.java

63 lines
2.7 KiB
Java
Raw Normal View History

2024-12-09 22:17:48 +08:00
package com.demo;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.sql.*;
@WebServlet("/BookQueryServlet")
public class BookQueryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// 数据库连接信息常量
// private static final String DB_URL = "jdbc:mysql://47.242.181.61:33060/demo?useSSL=false&serverTimezone=UTC";
private static final String DB_URL = "jdbc:mysql://47.242.181.61:33060/demo?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "lotus";
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String bookid = request.getParameter("bookid");
if (bookid == null || bookid.trim().isEmpty()) {
request.setAttribute("error", "图书ID不能为空");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
try (Connection conn = getConnection();
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM books WHERE bookid = ?");
) {
pstmt.setString(1, bookid);
try (ResultSet rst = pstmt.executeQuery()) {
if (rst.next()) {
BookBean book = new BookBean();
book.setBookid(rst.getString("bookid"));
book.setTitle(rst.getString("title"));
book.setAuthor(rst.getString("author"));
book.setPrice(rst.getFloat("price"));
book.setPublisher(rst.getString("publisher"));
request.setAttribute("book", book);
request.getRequestDispatcher("/displayBook.jsp").forward(request, response);
} else {
request.setAttribute("error", "未找到ID为 " + bookid + " 的图书");
request.getRequestDispatcher("/error.jsp").forward(request, response);
}
}
} catch (Exception e) {
String errorMsg = "数据库操作失败: " + e.getMessage();
log(errorMsg, e);
request.setAttribute("error", errorMsg);
request.getRequestDispatcher("/error.jsp").forward(request, response);
}
}
private Connection getConnection() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.cj.jdbc.Driver");
return DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
}
}