以下是一个使用 Java Web 的 DAO 和 JSP 实现动态查询的示例代码:

  1. 创建数据库表 首先,创建一个名为'employee'的数据库表,包含以下字段:
  • id (int):员工 ID,主键
  • name (varchar):员工姓名
  • age (int):员工年龄
  • department (varchar):员工部门
  1. 创建 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 方法

    // ...
}
  1. 创建 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);
}
  1. 创建 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();
        }
    }
}
  1. 创建查询页面 创建一个名为'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>
  1. 创建 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录