JSP 没有正确地从来自 servlet 的数组中接收信息

问题描述 投票:0回答:0

我正在尝试创建一个项目,我在其中使用 servlet 将信息传递到 JSP 页面。问题是我无法让 JSP 生成我期望的内容。

进一步解释,在 servlet 中,我从数据库中检索信息并将其存储在数组中(在我的例子中,值为 2 和 3)。但是当我将它传递给 JSP 时,我似乎无法将该信息存储在另一个数组中,然后将其显示在屏幕上。如果我使用 ${partidas},它会给出所需的值 2,3。但是当我使用 `<% List partidas = (List) request.getAttribute("partidas"); 时,什么都没有存储。我在下面包含了我的代码。 服务小程序:

import java.io.;
import javax.servlet.;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.;
import java.sql.;
import java.util.*;

public class PartidasAMedias extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    Connection con;
    Statement st;
    ResultSet rs;
    PrintWriter out;

    String SQL, Nombre;
    int IdUsu, Estado;

    List<Integer> partidas = new ArrayList<Integer>();
    try { Nombre = req.getParameter("nombreRecogido"); System.out.println("Nombre: " + Nombre);
    Class.forName("com.mysql.cj.jdbc.Driver"); 
    con = DriverManager.getConnection("jdbc:mysql://localhost/cuatroenraya", "root", ""); 
    st = con.createStatement(); SQL = "SELECT IdUsuario FROM usuarios WHERE Nombre ='" + Nombre + "'"; 
    rs = st.executeQuery(SQL);
        if (rs.next()) {
            System.out.println("2." + rs.getInt("IdUsuario"));
            IdUsu = rs.getInt("IdUsuario");
            SQL = "SELECT IdPartida, Estado FROM partidas WHERE Creador ='" + IdUsu + "' OR Invitado = '" + IdUsu + "'";
            rs = st.executeQuery(SQL);
            if (rs.next()) {
                
                Estado = rs.getInt("Estado");
                while (rs.next()) {
                    if (Estado == 1) {
                        int idPartida = rs.getInt("IdPartida");
                        System.out.println("3." + idPartida);
                        partidas.add(rs.getInt("IdPartida"));
                        System.out.println("Partida agregada: " + rs.getInt("IdPartida"));
                    }
                }
                System.out.println("4."+ partidas);
                HttpSession session = req.getSession(true);
                //session.setAttribute("partidas", partidas);
                req.getSession().setAttribute("partidas", partidas);
                System.out.println("Redirigiendo a ListadoPartidas.jsp con partidas: " + partidas);
                res.sendRedirect("ListadoPartidas.jsp");

            } else {                
                res.sendRedirect("zSinPartidas.html");
            }

        }
        rs.close();
        st.close();
        con.close();

    } catch (Exception e) {
        System.err.println(e);
    } 
}
}

ListadoPartidas.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> <%@ page import="java.util.List" %>  
 <!DOCTYPE html>
    <html lang="es" dir="ltr">

    <head>
        <meta http-equiv="Content-Type" contest="text/html; charset=ISO-8859-1">
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Partidas en curso</title>
    </head>
    <body>
        ${partidas}
        <% List<Integer> partidas = (List<Integer>) request.getAttribute("partidas");
                if (partidas != null && !partidas.isEmpty()) {
                %>
                <table>
                    <thead>
                        <tr>
                            <th>ID Partida</th>
                        </tr>
                    </thead>
                    <tbody>
                        <% for (Integer idPartida : partidas) { %>
                            <tr>
                                <td>
                                    <%= idPartida %>
                                </td>
                            </tr>
                            <% } %>
                    </tbody>
                </table>
                <% } else { %>
                   <p>No hay partidas a medias</p>
                    <% } %>
    </body>
    </html>

我附上的图像是JSP生成的以及我在Web服务器控制台中可以看到的。Web server console jsp

html jsp servlets setattribute getattribute
© www.soinside.com 2019 - 2024. All rights reserved.