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

使用<c:forEach>遍历数据库数据时JSP页面空白问题求助

页面空白问题排查及修复方案

核心问题1:Servlet未完成请求转发

你的Servlet仅将products存入request属性,但没有将请求转发到目标JSP页面,导致JSP根本接收不到products数据。

  • 修复:在request.setAttribute后添加转发代码:
request.getRequestDispatcher("/你的首页路径.jsp").forward(request, response);

核心问题2:空catch块吞掉异常

catch块为空,ProductDAO.getAllProducts()执行时如果出现异常(比如数据库连接失败、SQL语法错误),你完全无法感知,也无法定位问题。

  • 修复:至少添加异常日志打印:
catch(Exception xcp) {
    xcp.printStackTrace(); // 控制台打印异常信息,方便排查
}

JSP代码中的问题

  1. 未引入JSTL核心标签库:使用<c:forEach>必须在JSP开头添加标签库声明,否则标签会被当作普通文本忽略,不会执行遍历逻辑。
    • 修复:在JSP最顶部添加:
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
  2. 多余的<jsp:useBean>标签:这行代码会重新创建一个空的Products对象,覆盖<c:forEach>中遍历出来的p变量,导致原本的商品数据无法读取。
    • 修复:直接删除<jsp:useBean id="p" class="com.testing.products.Products"/>这一行。

额外验证点

  • 确认ProductDAO.getAllProducts()确实返回非空List:在Servlet中添加System.out.println(products.size());,查看控制台输出是否大于0。
  • 确认EL表达式生效:如果页面直接显示${p.price}而非具体数值,需检查web.xml是否配置了Servlet 2.4及以上版本(通常无需额外配置,除非手动关闭EL)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:18:55