package servlet; import db.Database; import module.admin; 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.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; @WebServlet(name = "viewServlet",urlPatterns = "/view") public class viewServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final String SQL = "select s_id, password from admin"; // 从连接池获取连接 Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; ArrayList<admin> admins = new ArrayList<>(); protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { connection = Database.getConnection(); statement = connection.prepareStatement(SQL); resultSet = statement.executeQuery(); System.out.println("连接成功"); while (resultSet.next()) { int s_id = resultSet.getInt("s_id"); String password = resultSet.getString("password"); admin admin = new admin(s_id, password); admins.add(admin); req.setAttribute("message", "数据读取成功"); } req.setAttribute("admins", admins); req.getRequestDispatcher("view.jsp").forward(req, resp); } catch (SQLException e) { e.printStackTrace(); req.setAttribute("message", "操作失败!"); } finally { Database.closeResource(connection, statement, resultSet); } } }
时间: 2024-02-22 09:59:17 浏览: 84
这段代码是一个 Servlet 类,实现了在数据库中查询数据并将结果显示在 JSP 页面上的功能。以下是对代码的逐行解释:
```java
package servlet;
import db.Database;
import module.admin;
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.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
@WebServlet(name = "viewServlet",urlPatterns = "/view")
public class viewServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String SQL = "select s_id, password from admin"; // SQL 查询语句
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
ArrayList<admin> admins = new ArrayList<>();
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
connection = Database.getConnection(); // 获取数据库连接
statement = connection.prepareStatement(SQL); // 创建 PreparedStatement 对象
resultSet = statement.executeQuery(); // 执行 SQL 查询语句
System.out.println("连接成功");
while (resultSet.next()) {
int s_id = resultSet.getInt("s_id"); // 获取查询结果中的 s_id 列
String password = resultSet.getString("password"); // 获取查询结果中的 password 列
admin admin = new admin(s_id, password); // 创建 admin 对象
admins.add(admin); // 将 admin 对象添加到 ArrayList 中
req.setAttribute("message", "数据读取成功"); // 在 request 对象中设置提示信息
}
req.setAttribute("admins", admins); // 在 request 对象中设置查询结果
req.getRequestDispatcher("view.jsp").forward(req, resp); // 将请求转发到 view.jsp 页面
} catch (SQLException e) {
e.printStackTrace();
req.setAttribute("message", "操作失败!");
} finally {
Database.closeResource(connection, statement, resultSet); // 关闭资源
}
}
}
```
以上代码中,我们首先定义了一个 `SQL` 常量,用于存储 SQL 查询语句。在 `doPost` 方法中,我们首先获取了数据库连接,并创建了一个 `PreparedStatement` 对象,用于执行 SQL 查询语句。然后通过 `executeQuery` 方法执行查询,并通过 `while` 循环遍历查询结果,将查询结果中的每一行数据封装为一个 `admin` 对象,并将其添加到一个 `ArrayList` 中。最后,将查询结果和提示信息设置到 `request` 对象中,并通过 `requestDispatcher` 将请求转发到 `view.jsp` 页面。在 `finally` 块中,我们调用了 `closeResource` 方法关闭了数据库连接、`PreparedStatement` 对象和查询结果集对象。
阅读全文