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

