Java EE项目数据库数据获取函数失效,页面无数据显示求助
问题排查与修复方案
1. 数据库连接字符串语法错误
Noms类中getConnection调用存在语法错误,末尾缺失闭合双引号和括号:
// 错误代码 connexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee","root",""; // 修复后 connexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee","root","");
2. SQL查询字段拼写错误
查询语句中写的是prennom,但数据库表字段和实体类属性为prenom,拼写不一致导致无法读取数据:
// 错误代码 resultat = statement.executeQuery("Select nom, prennom from noms;"); // 修复后 resultat = statement.executeQuery("Select nom, prenom from noms;");
3. 异常捕获未打印日志
原代码catch (SQLException e)块为空,无法定位连接或查询阶段的异常,必须添加日志输出:
catch (SQLException e) { e.printStackTrace(); // 打印异常堆栈,快速定位问题 }
4. JSTL循环变量命名混淆
JSP中c:forEach的var使用了集合同名的utilisateurs,应改为单数utilisateur避免逻辑混乱:
<!-- 错误代码 --> <c:forEach var="utilisateurs" items="${ utilisateurs }"> <!-- 修复后 --> <c:forEach var="utilisateur" items="${ utilisateurs }"> <li><c:out value="${ utilisateur.prenom }" /> <c:out value="${ utilisateur.nom }" /></li> </c:forEach>
5. MySQL 8.0驱动时区配置
MySQL 8.0驱动需指定时区,否则可能连接失败,建议给JDBC URL添加时区参数:
connexion = DriverManager.getConnection( "jdbc:mysql://localhost:3306/javaee?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC", "root", "" );
6. 可选:手动注册MySQL驱动类
部分环境下需手动加载驱动,在try块开头添加:
Class.forName("com.mysql.cj.jdbc.Driver");
额外检查项
- 确认WampServer的MySQL服务正常运行,端口3306未被占用
- 确认数据库
javaee中的noms表存在,包含nom、prenom字段且有数据 - 确认Servlet已正确配置(如添加
@WebServlet("/bonjour")注解或在web.xml中配置映射) - 确认
mysql-connector-java-8.0.30.jar已放入项目WEB-INF/lib目录
内容的提问来源于stack exchange,提问作者Dayvin
相关产品推荐
相关产品推荐

