63 lines
2.7 KiB
Java
63 lines
2.7 KiB
Java
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);
|
|
}
|
|
}
|