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
相关产品推荐
相关产品推荐

