You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
library_manage_system/src/servlet/admin/BookAdd.java

117 lines
4.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package servlet.admin;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Connection;
import javabean.Base;
import net.sf.json.JSONObject;
/**
* Servlet 实现类,用于管理员添加书籍
*
* 该 Servlet 处理管理员提交的添加书籍请求将书籍信息书名、作者、馆藏ID、类别ID、位置、状态、描述插入到数据库中。
* 插入成功后,返回 JSON 格式的成功信息;失败则返回错误信息。
*/
@WebServlet("/admin/bookAdd")
public class BookAdd extends HttpServlet {
/**
* 处理 POST 请求,执行书籍的添加操作
*
* 该方法接收客户端提交的书籍信息(通过 HTTP 请求),然后将这些信息插入到数据库中。
* 插入操作通过 JDBC 进行,如果插入成功,返回一个包含成功状态的 JSON 响应;如果失败,则返回错误信息。
*
* @param req 请求对象
* @param resp 响应对象
* @throws ServletException 如果发生 Servlet 错误
* @throws IOException 如果发生 I/O 错误
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置响应内容类型为 JSON字符编码为 UTF-8
resp.setContentType("application/json; charset=utf8");
// 获取请求参数(书籍信息)
String name = req.getParameter("name"); // 书名
String author = req.getParameter("author"); // 作者
String library_id = req.getParameter("library_id"); // 所属馆ID
String sort_id = req.getParameter("sort_id"); // 书籍类别ID
String position = req.getParameter("position"); // 书籍位置
String status = req.getParameter("status"); // 书籍状态
String description = req.getParameter("description"); // 书籍描述
// 用于调试输出描述字段的内容
System.out.println(description + "-------------"); // debug
// 创建 JSON 对象用于存储响应数据
JSONObject json = new JSONObject();
Connection connection = null; // 数据库连接
PreparedStatement pstmt = null; // SQL 执行对象
int result = 0; // 记录 SQL 执行结果(影响的行数)
// SQL 插入语句
String sql = "insert into books(name, author, library_id, sort_id, position, status, description) values(?,?,?,?,?,?,?)";
System.out.println(sql); // debug输出 SQL 语句
// 获取响应输出流
PrintWriter out = resp.getWriter();
try {
// 获取数据库连接
connection = (Connection) Base.getConnection();
// 创建 PreparedStatement 对象
pstmt = connection.prepareStatement(sql);
// 设置 SQL 语句中的参数
pstmt.setString(1, name);
pstmt.setString(2, author);
pstmt.setString(3, library_id);
pstmt.setString(4, sort_id);
pstmt.setString(5, position);
pstmt.setString(6, status);
pstmt.setString(7, description);
// 执行 SQL 插入操作,返回影响的行数
result = pstmt.executeUpdate();
} catch (SQLException e) {
// 捕获 SQL 异常(可以在这里做日志记录或处理)
e.printStackTrace();
} catch (ClassNotFoundException e) {
// 捕获 ClassNotFoundException 异常(数据库驱动类未找到)
e.printStackTrace();
} finally {
// 关闭数据库资源
try {
Base.closeResource(connection, pstmt, null);
} catch (SQLException e) {
e.printStackTrace(); // 关闭资源时发生异常
}
}
// 判断插入操作是否成功,返回相应的 JSON 数据
if (result == 1) {
// 插入成功,返回成功的 JSON 响应
json.put("code", "0"); // code = 0 表示成功
json.put("msg", "success"); // 返回成功消息
} else {
// 插入失败,返回错误的 JSON 响应
json.put("code", "1"); // code = 1 表示失败
json.put("msg", "error"); // 返回失败消息
}
// 将 JSON 响应写入输出流
out.write(json.toString());
}
}