我没有收到从我的 servlet 到我的 jsp 的数据

I don't receive the data from my servlet to my jsp

提问人:NIXON 提问时间:10/20/2023 最后编辑:JensNIXON 更新时间:10/20/2023 访问量:22

问:

我正在尝试显示从 servlet 到 JSP 的数据,但是当我运行 JSP 时,它没有显示任何内容。我已经尝试过数据库连接并且它成功了,但是当我使用JSP时,它不会返回任何内容。

这是唯一给我一个错误的东西: “描述资源路径位置类型 类型安全性:从对象到列表目录的未选中强制转换o.jsp /CL1/src/main/webapp 第 20 行 JSP 问题”

我正在使用 jdk-17 和 apache Tomcat 10.1

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ page import="servlet.productoServlet"%>
<%@ page import="dao.productoDao"%>
<%@ page import="model.producto"%>
<%@ page import="java.util.List"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <div class="container">
        <h1>Catálogo de Productos</h1>
        <div class="row">
            <%
            Object productoListObject = request.getAttribute("productoList");
            if (productoListObject instanceof List) {
                List<producto> productoList = (List<producto>) productoListObject;
                for (producto producto : productoList) {
            %>
            <div class="col-md-4">
                <div class="card">
                    <div class="card-body">
                        <h5 class="card-title"><%= producto.getNombre() %></h5>
                        <p class="card-price"><%= producto.getPrecio() %></p>
                        <a href="ComprarServlet?productId=<%= producto.getId() %>" class="btn btn-primary">Comprar</a>
                    </div>
                </div>
            </div>
            <%  
            }
                }
            %>
        </div>
    </div>
</body>
</html>

Servlet:

package servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

import java.util.List;

import dao.productoDao;
import model.producto;

@WebServlet
public class productoServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
productoDao ProductoDao = new productoDao();
         List<producto> productoList = ProductoDao.obtenerStructura();
         request.setAttribute("productoList", productoList);
         request.getRequestDispatcher("/catalogo.jsp").forward(request, response);

    }
}

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import util.MySQLconexion;


import model.producto;

public class productoDao {
    public List<producto> obtenerStructura(){
        List<producto> listaProducto = new ArrayList<>();
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        
        
        try {
            con = MySQLconexion.getConexion();
            String consultaSQL = "SELECT * FROM productos";
            stmt = con.prepareStatement(consultaSQL);
            rs = stmt.executeQuery();           
            
            while (rs.next()) {
                int id = rs.getInt("id");
                String nombre = rs.getString("nombre");
                double precio = rs.getDouble("precio");
                
                producto Producto = new producto(id, nombre ,precio);
                listaProducto.add(Producto);
            }
            
            
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
             MySQLconexion.closeResultSet(rs);
             MySQLconexion.closeStatement(stmt);
             MySQLconexion.closeConexion(con);
        }
        
        return listaProducto;
    }
}
Java JSP

评论

0赞 Jens 10/20/2023
请注意 java 命名约定。类名应以大写字符开头,变量名应以小写字符开头
1赞 Jens 10/20/2023
使用 try-with-ressources 而不是自行关闭连接
0赞 Jens 10/20/2023
尝试调试您的代码,您可以查看是否从数据库中获取数据以及它们“丢失”的位置
0赞 Maurice Perry 10/20/2023
尝试在定义之前添加@SuppressWarnings("unchecked")productoList

答: 暂无答案