介绍
在这个项目中,你将学习如何使用 MVC 架构和 Servlet 2.x 实现员工信息检索功能。你将在索引页面上创建一个搜索框,用户可以在其中输入员工 ID 进行搜索,然后在单独的页面上显示员工信息。
👀 预览

🎯 任务
在这个项目中,你将学习:
- 如何在索引页面上创建一个搜索框,允许用户输入员工 ID
- 如何实现实体类来表示员工数据
- 如何实现 JDBC 实用工具类以获取数据库连接
- 如何实现 DAO 类以从数据库中检索员工信息
- 如何实现控制器类来处理请求并将员工数据转发到 JSP 页面
- 如何实现 JSP 页面以显示查询到的员工信息
🏆 成果
完成这个项目后,你将能够:
- 使用 MVC 架构来构建你的 Web 应用程序
- 使用 Servlet 2.x 来处理 HTTP 请求和响应
- 使用 JDBC 与数据库进行交互
- 使用 JSP 在网页上显示动态数据
创建搜索框
在这一步中,你将在索引页面上创建一个搜索框,用户可以在其中输入员工 ID 进行搜索。
打开位于
EmployeeInfo/src/main/webapp目录下的index.jsp文件。添加以下 HTML 代码来创建搜索框:
<form action="/findEmpByEid" method="get">
<input type="text" name="employeeId" /><input type="submit" value="search" />
</form>
当用户点击“搜索”按钮时,此表单将向 /findEmpByEid URL 发送一个带有 employeeId 参数的 GET 请求。
实现员工实体类
在这一步中,你将根据 employees 表中的字段来实现 Employee.java 实体类。
打开位于
EmployeeInfo/src/main/java/org/labex/entity目录下的Employee.java文件。添加以下代码来定义字段及其相应的 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;
}
// 实现其余的 getter 和 setter 方法
}
实现 JDBC 实用工具类
在这一步中,你将实现 JdbcUtil.java 类,以提供一个获取数据库连接的方法。
打开位于
EmployeeInfo/src/main/java/org/labex/jdbc目录下的JdbcUtil.java文件。添加以下代码来实现
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 类,以提供一个检索员工信息的方法。
打开位于
EmployeeInfo/src/main/java/org/labex/dao目录下的EmployeeDao.java文件。添加以下代码来实现
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;
}
}
此方法使用 JdbcUtil.java 中的 getConn() 方法来获取数据库连接,然后使用从控制器传递过来的员工 ID 查询数据库并返回一个 Employee 对象。
实现控制器类
在这一步中,你将实现 EmployeeController.java 类来处理检索员工信息的请求。
打开位于
EmployeeInfo/src/main/java/org/labex/controller目录下的EmployeeController.java文件。添加以下代码来实现
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 文件来显示查询到的员工信息。
打开位于
EmployeeInfo/src/main/webapp目录下的info.jsp文件。添加以下代码以创建一个表格来显示员工信息:
<%@ 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>邮箱</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 中练习更多实验以提升技能。



