Получение информации о сотрудниках с использованием MVC и Servlet

JavaBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь реализовывать функцию поиска информации о сотрудниках с использованием архитектуры MVC и Servlet2.x. Вы создадите поле поиска на главной странице, где пользователи смогут ввести идентификатор сотрудника для поиска, а затем отобразите информацию о сотруднике на отдельной странице.

👀 Предпросмотр

Предпросмотр результатов поиска сотрудников

🎯 Задачи

В этом проекте вы научитесь:

  • Создавать поле поиска на главной странице, позволяющее пользователям вводить идентификатор сотрудника
  • Реализовывать класс сущности для представления данных о сотруднике
  • Реализовывать утилитный класс JDBC для получения соединения с базой данных
  • Реализовывать класс DAO для извлечения информации о сотрудниках из базы данных
  • Реализовывать класс контроллера для обработки запросов и передачи данных о сотрудниках на страницу JSP
  • Реализовывать страницу JSP для отображения запрошенной информации о сотрудниках

🏆 Достижения

После завершения этого проекта вы сможете:

  • Использовать архитектуру MVC для структурирования веб-приложения
  • Использовать Servlet2.x для обработки HTTP-запросов и ответов
  • Взаимодействовать с базой данных с использованием JDBC
  • Использовать JSP для отображения динамических данных на веб-странице

Создайте поле для поиска

В этом шаге вы создадите поле поиска на главной странице, где пользователи смогут ввести идентификатор сотрудника для поиска.

  1. Откройте файл index.jsp, расположенный в директории EmployeeInfo/src/main/webapp.

  2. Добавьте следующий HTML-код для создания поля поиска:

<form action="/findEmpByEid" method="get">
  <input type="text" name="employeeId" /><input type="submit" value="search" />
</form>

Эта форма отправит GET-запрос по URL /findEmpByEid с параметром employeeId при нажатии пользователем кнопки "search".

Реализуйте класс сущности Employee

В этом шаге вы реализуете класс сущности Employee.java на основе полей таблицы employees.

  1. Откройте файл Employee.java, расположенный в директории EmployeeInfo/src/main/java/org/labex/entity.

  2. Добавьте следующий код для определения полей и соответствующих методов доступа (getter и setter):

public class Employee {
    private Integer id;
    private String name;
    private Integer gender;
    private String phone;
    private String email;
    private String address;

    // Getters and setters
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    // Реализуйте остальные методы доступа
}

Реализуйте класс утилиты JDBC

В этом шаге вы реализуете класс JdbcUtil.java, чтобы предоставить метод для получения соединения с базой данных.

  1. Откройте файл JdbcUtil.java, расположенный в директории EmployeeInfo/src/main/java/org/labex/jdbc.

  2. Добавьте следующий код для реализации метода getConn():

public class JdbcUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/test";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "";

    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConn() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

Этот метод вернет соединение с базой данных, используя указанный URL, имя пользователя и пароль.

Реализуйте класс DAO

В этом шаге вы реализуете класс EmployeeDao.java, чтобы предоставить метод для извлечения информации о сотрудниках.

  1. Откройте файл EmployeeDao.java, расположенный в директории EmployeeInfo/src/main/java/org/labex/dao.

  2. Добавьте следующий код для реализации метода getEmployee():

public class EmployeeDao {
    public Employee getEmployee(Integer employeeId) {
        Connection conn = JdbcUtil.getConn();
        String sql = "select * from employees where employee_id =?";
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        Employee employee = null;
        try {
            preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setInt(1, employeeId);
            resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                employee = new Employee();
                employee.setId(resultSet.getInt(1));
                employee.setName(resultSet.getString(2));
                employee.setGender(resultSet.getInt(3));
                employee.setPhone(resultSet.getString(4));
                employee.setEmail(resultSet.getString(5));
                employee.setAddress(resultSet.getString(6));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return employee;
    }
}

Этот метод использует метод getConn() из JdbcUtil.java для получения соединения с базой данных, а затем использует идентификатор сотрудника, переданный из контроллера, для запроса к базе данных и возврата объекта Employee.

Реализуйте класс Контроллера

В этом шаге вы реализуете класс EmployeeController.java для обработки запросов на получение информации о сотрудниках.

  1. Откройте файл EmployeeController.java, расположенный в директории EmployeeInfo/src/main/java/org/labex/controller.

  2. Добавьте следующий код для реализации методов doGet() и doPost():

@WebServlet("/findEmpByEid")
public class EmployeeController extends HttpServlet {
    EmployeeDao employeeDao = new EmployeeDao();

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String employeeId = req.getParameter("employeeId");
        Employee employee = employeeDao.getEmployee(Integer.parseInt(employeeId));
        req.setAttribute("employee", employee);
        req.getRequestDispatcher("info.jsp").forward(req, resp);
    }
}

Метод doGet() извлекает параметр employeeId из запроса, использует класс EmployeeDao для получения информации о сотруднике, сохраняет ее в запросе и затем перенаправляет запрос на страницу info.jsp для отображения информации о сотруднике.

Реализуйте страницу JSP

В этом шаге вы реализуете файл info.jsp для отображения запрошенной информации о сотруднике.

  1. Откройте файл info.jsp, расположенный в директории EmployeeInfo/src/main/webapp.

  2. Добавьте следующий код для создания таблицы для отображения информации о сотруднике:

<%@ page import="org.labex.entity.Employee" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Информация о сотруднике</title>
    <style>
        th, td {
            border: 1px solid black;
            padding: 8px;
        }
    </style>
</head>
<body>
    <% Object employeeObj = request.getAttribute("employee");
    if (employeeObj!= null) {
        Employee employee = (Employee) employeeObj; %>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Имя</th>
                <th>Пол</th>
                <th>Номер телефона</th>
                <th>Email</th>
                <th>Адрес</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td><%= employee.getId() %></td>
                <td><%= employee.getName() %></td>
                <td><%= employee.getGender() == 1? "мужчина" : "женщина" %></td>
                <td><%= employee.getPhone() %></td>
                <td><%= employee.getEmail() %></td>
                <td><%= employee.getAddress() %></td>
            </tr>
        </tbody>
    </table>
    <% } else { %>
    <p>Информация не найдена.</p>
    <% } %>
</body>
</html>

Эта JSP-страница извлекает объект employee из запроса и затем отображает информацию о сотруднике в таблице.

  1. Перейдите в директорию EmployeeInfo и используйте следующую команду для запуска сервиса.
cd ~/project/EmployeeInfo/
mvn clean tomcat7:run

Ожидаемый результат запроса информации о сотруднике выглядит следующим образом:

Результат таблицы с информацией о сотруднике

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться