You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSP页面提示员工列表为空,但数据库存在数据的问题求助

排查JSP展示员工数据为空的问题

以下是针对你遇到的数据库有数据但JSP显示空列表问题的排查步骤和解决方法:

1. 先确认数据库查询是否真的返回数据

直接在数据库客户端(如MySQL Workbench、Navicat)执行Servlet中的SQL语句:

SELECT id, first_name, last_name, email, hire_date FROM employees
  • 确保当前操作的是test03数据库
  • 检查表名是否正确:比如是不是写成了employee而非employees
  • 检查字段名拼写:确认数据库中确实存在first_name、last_name、hire_date这些字段

2. 不要默默吞掉异常,暴露问题根源

你的Servlet中捕获了所有异常但仅打印堆栈,可能存在异常但你没注意到。修改异常处理逻辑,主动抛出异常以便快速定位:

} catch (Exception e) {
    e.printStackTrace();
    throw new ServletException("数据库查询失败", e); // 新增该行,将异常抛出
}

这样如果出现SQL语法错误、表不存在、权限不足等问题,会直接在页面或控制台显示明确的错误信息。

3. 确认访问路径正确

你的Servlet映射路径是/employees,必须访问http://localhost:端口号/项目名/employees才能触发Servlet查询数据。如果直接访问employees.jsp,request.getAttribute("employees")必然为空——因为没有经过Servlet的数据库查询逻辑。

4. 加日志验证数据读取过程

在Servlet的查询循环中添加日志,确认是否真的读取到数据:

while (rs.next()) {
    Employee employee = new Employee();
    employee.setId(rs.getInt("id"));
    employee.setFirstName(rs.getString("first_name"));
    employee.setLastName(rs.getString("last_name"));
    employee.setEmail(rs.getString("email"));
    employee.setHireDate(rs.getDate("hire_date"));
    employees.add(employee);
    System.out.println("读取到员工数据:" + employee); // 打印读取到的单条数据
}
System.out.println("最终员工列表数量:" + employees.size()); // 打印列表总数量

通过控制台日志可以明确是查询没返回数据,还是数据未被正确添加到列表中。

5. 验证JDBC连接有效性

  • 确认MariaDB JDBC驱动版本与数据库版本兼容(比如MariaDB 10.x建议使用最新驱动包)
  • 检查连接URL、用户名、密码是否正确:jdbc:mariadb://127.0.0.1:3306/test03、root、1234是否匹配数据库配置
  • 确认root用户有权限访问test03数据库的employees表

内容的提问来源于stack exchange,提问作者ekgus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:00:54