Java Web 动态查询页面实现 - 使用 DAO 和 JSP
以下是一个使用 Java Web 的 DAO 和 JSP 实现动态查询的示例代码:
- 创建数据库表 首先,创建一个名为'employee'的数据库表,包含以下字段:
- id (int):员工 ID,主键
- name (varchar):员工姓名
- age (int):员工年龄
- department (varchar):员工部门
- 创建 Employee 实体类 创建一个名为 Employee 的 Java 类,用于表示员工实体。该类包含以下属性和对应的 getter 和 setter 方法。
public class Employee {
private int id;
private String name;
private int age;
private String department;
// 构造方法
public Employee() {
}
public Employee(int id, String name, int age, String department) {
this.id = id;
this.name = name;
this.age = age;
this.department = department;
}
// Getter 和 Setter 方法
// ...
}
- 创建 EmployeeDAO 接口 创建一个名为 EmployeeDAO 的接口,定义了对员工数据进行增删改查的方法。
public interface EmployeeDAO {
List<Employee> getAllEmployees();
List<Employee> searchEmployees(String name, int age, String department);
void addEmployee(Employee employee);
void updateEmployee(Employee employee);
void deleteEmployee(int id);
}
- 创建 EmployeeDAOImpl 实现类 创建一个名为 EmployeeDAOImpl 的实现类,实现 EmployeeDAO 接口,并使用 JDBC 连接数据库。
public class EmployeeDAOImpl implements EmployeeDAO {
private static final String JDBC_URL = 'jdbc:mysql://localhost:3306/mydatabase';
private static final String JDBC_USERNAME = 'root';
private static final String JDBC_PASSWORD = 'password';
@Override
public List<Employee> getAllEmployees() {
List<Employee> employees = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery('SELECT * FROM employee')) {
while (rs.next()) {
Employee employee = new Employee();
employee.setId(rs.getInt('id'));
employee.setName(rs.getString('name'));
employee.setAge(rs.getInt('age'));
employee.setDepartment(rs.getString('department'));
employees.add(employee);
}
} catch (SQLException e) {
e.printStackTrace();
}
return employees;
}
@Override
public List<Employee> searchEmployees(String name, int age, String department) {
List<Employee> employees = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
PreparedStatement stmt = conn.prepareStatement('SELECT * FROM employee WHERE name LIKE ? AND age = ? AND department LIKE ?')) {
stmt.setString(1, '%' + name + '%');
stmt.setInt(2, age);
stmt.setString(3, '%' + department + '%');
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Employee employee = new Employee();
employee.setId(rs.getInt('id'));
employee.setName(rs.getString('name'));
employee.setAge(rs.getInt('age'));
employee.setDepartment(rs.getString('department'));
employees.add(employee);
}
} catch (SQLException e) {
e.printStackTrace();
}
return employees;
}
@Override
public void addEmployee(Employee employee) {
try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
PreparedStatement stmt = conn.prepareStatement('INSERT INTO employee (name, age, department) VALUES (?, ?, ?)')) {
stmt.setString(1, employee.getName());
stmt.setInt(2, employee.getAge());
stmt.setString(3, employee.getDepartment());
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void updateEmployee(Employee employee) {
try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
PreparedStatement stmt = conn.prepareStatement('UPDATE employee SET name = ?, age = ?, department = ? WHERE id = ?')) {
stmt.setString(1, employee.getName());
stmt.setInt(2, employee.getAge());
stmt.setString(3, employee.getDepartment());
stmt.setInt(4, employee.getId());
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void deleteEmployee(int id) {
try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
PreparedStatement stmt = conn.prepareStatement('DELETE FROM employee WHERE id = ?')) {
stmt.setInt(1, id);
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
- 创建查询页面 创建一个名为'search.jsp'的 JSP 页面,用于接收用户输入的查询条件,并显示查询结果。
<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8' %>
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core' %>
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Dynamic Search</title>
</head>
<body>
<h1>Dynamic Search</h1>
<form action='search' method='get'>
Name: <input type='text' name='name'><br>
Age: <input type='number' name='age'><br>
Department: <input type='text' name='department'><br>
<input type='submit' value='Search'>
</form>
<h2>Search Results</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Department</th>
</tr>
</thead>
<tbody>
<c:forEach items='${employees}' var='employee'>
<tr>
<td>${employee.id}</td>
<td>${employee.name}</td>
<td>${employee.age}</td>
<td>${employee.department}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
- 创建 SearchServlet 创建一个名为 SearchServlet 的 Java 类,用于处理查询请求和跳转到'search.jsp'页面。
@WebServlet('/search')
public class SearchServlet extends HttpServlet {
private EmployeeDAO employeeDAO;
@Override
public void init() throws ServletException {
employeeDAO = new EmployeeDAOImpl();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter('name');
int age = Integer.parseInt(req.getParameter('age'));
String department = req.getParameter('department');
List<Employee> employees = employeeDAO.searchEmployees(name, age, department);
req.setAttribute('employees', employees);
req.getRequestDispatcher('search.jsp').forward(req, resp);
}
}
以上代码演示了如何使用 Java Web 的 DAO 和 JSP 实现动态查询的页面。用户可以在'search.jsp'页面输入查询条件,然后在后端通过 EmployeeDAO 进行查询,最后将查询结果显示在页面上。
原文地址: https://www.cveoy.top/t/topic/pcQj 著作权归作者所有。请勿转载和采集!