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

🎯 Задачи
В этом проекте вы научитесь:
- Создавать поле поиска на главной странице, позволяющее пользователям вводить идентификатор сотрудника
- Реализовывать класс сущности для представления данных о сотруднике
- Реализовывать утилитный класс JDBC для получения соединения с базой данных
- Реализовывать класс DAO для извлечения информации о сотрудниках из базы данных
- Реализовывать класс контроллера для обработки запросов и передачи данных о сотрудниках на страницу JSP
- Реализовывать страницу JSP для отображения запрошенной информации о сотрудниках
🏆 Достижения
После завершения этого проекта вы сможете:
- Использовать архитектуру MVC для структурирования веб-приложения
- Использовать Servlet2.x для обработки HTTP-запросов и ответов
- Взаимодействовать с базой данных с использованием JDBC
- Использовать JSP для отображения динамических данных на веб-странице
Создайте поле для поиска
В этом шаге вы создадите поле поиска на главной странице, где пользователи смогут ввести идентификатор сотрудника для поиска.
Откройте файл
index.jsp, расположенный в директорииEmployeeInfo/src/main/webapp.Добавьте следующий 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.
Откройте файл
Employee.java, расположенный в директорииEmployeeInfo/src/main/java/org/labex/entity.Добавьте следующий код для определения полей и соответствующих методов доступа (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, чтобы предоставить метод для получения соединения с базой данных.
Откройте файл
JdbcUtil.java, расположенный в директорииEmployeeInfo/src/main/java/org/labex/jdbc.Добавьте следующий код для реализации метода
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, чтобы предоставить метод для извлечения информации о сотрудниках.
Откройте файл
EmployeeDao.java, расположенный в директорииEmployeeInfo/src/main/java/org/labex/dao.Добавьте следующий код для реализации метода
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 для обработки запросов на получение информации о сотрудниках.
Откройте файл
EmployeeController.java, расположенный в директорииEmployeeInfo/src/main/java/org/labex/controller.Добавьте следующий код для реализации методов
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 для отображения запрошенной информации о сотруднике.
Откройте файл
info.jsp, расположенный в директорииEmployeeInfo/src/main/webapp.Добавьте следующий код для создания таблицы для отображения информации о сотруднике:
<%@ 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 из запроса и затем отображает информацию о сотруднике в таблице.
- Перейдите в директорию
EmployeeInfoи используйте следующую команду для запуска сервиса.
cd ~/project/EmployeeInfo/
mvn clean tomcat7:run
Ожидаемый результат запроса информации о сотруднике выглядит следующим образом:

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



