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

Servlet传递产品列表至JSP后无法迭代展示问题求助

Servlet传递产品列表至JSP后无法迭代展示问题求助

大家好,我现在碰到个棘手的问题:我想通过Servlet获取产品列表,然后在JSP页面里迭代展示这些产品,但目前页面上完全看不到产品数据。我已经尝试了一些方法,但还是没搞定,下面是我的代码和环境信息,麻烦各位帮我看看哪里出问题了!

我的运行环境

  • Apache Tomcat版本:9.0.76
  • Java版本:openjdk 11.0.19 2023-04-18
  • Javac版本:javac 11.0.19

我的代码实现

ProductsServlet.java

package product.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import product.dao.ProductDAO;
import product.model.Product;

@WebServlet("/")
public class ProductServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private ProductDAO productDAO;

public ProductServlet() {
super();
this.productDAO = new ProductDAO();
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getServletPath();
System.out.println("Action: " + action);

try {
switch (action) {
case "/insert":
insertProduct(request, response);
break;
case "/delete":
deleteProduct(request, response);
break;
case "/update":
updateProduct(request, response);
break;
case "/getProductByID":
getProductByID(request, response);
break;
case "/openProductsPage":
openProductsPage(request, response);
break;
default:
getProducts(request, response);
break;
}
} catch (SQLException ex) {
throw new ServletException(ex);
}
}

private void getProducts(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException, ServletException {
List<Product> products = productDAO.getProducts();
request.setAttribute("products", products);
request.getRequestDispatcher("products.jsp");
}

private void getProductByID(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException, ServletException {
int productId = Integer.parseInt(request.getParameter("id"));
Product product = productDAO.getProductByID(productId);
request.setAttribute("product", product);
RequestDispatcher dispatcher = request.getRequestDispatcher("product_details.jsp");
dispatcher.forward(request, response);
}

private void openProductsPage(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException, ServletException {
List<Product> products = productDAO.getProducts();
for(Product product: products) {
System.out.println("Product: " + product.getProductName());
}
request.setAttribute("products", products);
RequestDispatcher dispatcher = request.getRequestDispatcher("products.jsp");
dispatcher.forward(request, response);
}

private void insertProduct(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException {
String productName = request.getParameter("productName");
String productPhoto = request.getParameter("productPhoto");
double productPrice = Double.parseDouble(request.getParameter("productPrice"));
int stockAmount = Integer.parseInt(request.getParameter("stockAmount"));
int categoryID = Integer.parseInt(request.getParameter("categoryID"));
Product newProduct = new Product(productName, productPhoto, productPrice, stockAmount, categoryID);
productDAO.insertProduct(newProduct);
response.sendRedirect("getProducts");
}

private void updateProduct(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException {
int productId = Integer.parseInt(request.getParameter("id"));
String productName = request.getParameter("productName");
String productPhoto = request.getParameter("productPhoto");
int productPrice = Integer.parseInt(request.getParameter("productPrice"));
int stockAmount = Integer.parseInt(request.getParameter("stockAmount"));
Product product = new Product(productId, productName, productPhoto, productPrice, stockAmount);
productDAO.updateProduct(product);
response.sendRedirect("getProducts");
}

private void deleteProduct(HttpServletRequest request, HttpServletResponse response)
throws SQLException, IOException {
int productId = Integer.parseInt(request.getParameter("id"));
productDAO.deleteProduct(productId);
response.sendRedirect("getProducts");
}
}

pages/products.jsp

<div class="row isotope-grid">
<c:forEach var="product" items="${products}">
<div class="col-sm-6 col-md-4 col-lg-3 p-b-35 isotope-item ${product.getCategory().getCategoryName()}">
<!-- Block2 -->
<div class="block2">
<div class="block2-pic hov-img0">
<img src="..a${product.getProductPhoto()}" alt="IMG-PRODUCT" />
<a
href="#"
class="block2-btn flex-c-m stext-103 cl2 size-102 bg0 bor2 hov-btn1 p-lr-15 trans-04 js-show-modal1"
>
Hızlı İncele
</a>
</div>
<div class="block2-txt flex-w flex-t p-t-14">
<div class="block2-txt-child1 flex-col-l">
<a
href="product-detail.html"
class="stext-104 cl4 hov-cl1 trans-04 js-name-b2 p-b-6"
>
${product.getProductName()}
</a>
<span class="stext-105 cl3"> ${product.getProductPrice()} TRY </span>
</div>
<div class="block2-txt-child2 flex-r p-t-3">
<a
href="#"
class="btn-addwish-b2 dis-block pos-relative js-addwish-b2"
>
<img
class="icon-heart1 dis-block trans-04"
src="../images/icons/icon-heart-01.png"
alt="ICON"
/>
<img
class="icon-heart2 dis-block trans-04 ab-t-l"
src="../images/icons/icon-heart-02.png"
alt="ICON"
/>
</a>
</div>
</div>
</div>
</div>
</c:forEach>
</div>

我尝试过的排查步骤

我跟着一个视频教程来写的代码,现在还在自己排查问题,但没找到关键错误点。

真心希望各位能帮我找出问题,谢谢大家!

备注:内容来源于stack exchange,提问作者bgebes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:23:09