2010-02-14 14 views
8

? Es posible tener un servlet que contiene un objeto (una ArrayList en este caso) que hace el equivalente de mostrar una página jsp y pasar ese objeto al jsp página. En este caso, ArrayList contiene los resultados de la base de datos a los que quiero iterar y mostrar los resultados en la página JSP.¿Cómo paso la información de un servlet a una página JSP

No estoy utilizando ningún framework MVC, es posible hacer esto con la arquitectura básica de Servlet/JSP.

Respuesta

10

Sí.

  1. en la llamada de servlet request.setAttribute("result", yourArrayList);
  2. luego hacia adelante a la JSP:

    getServletContext().getRequestDispatcher("your.jsp") 
        .forward(request, response); 
    
  3. usando JSTL, en el jsp:

    <c:forEach items="${result}" var="item"> 
        ... 
    </c:forEach> 
    

Si no' Quiero usar JSTL (pero recomiendo usarlo), entonces puedes obtenga el valor usando request.getAttribute("result") en el JSP también.

Como alternativa, pero no se recomienda, puede usar request.getSession().setAttribute(..) en su lugar, si desea redirect() en lugar de forward().

+0

Tenga en cuenta que el motivo del enfoque redirect() no se recomienda porque le indica al navegador que vaya a una nueva URL que causa una nueva solicitud cuando el alcance de "solicitud" es diferente, por lo que el resultado no puede almacenarse en "solicitud" -scope (request.setAttribute ...) pero debe almacenarse en un alcance disponible para una nueva solicitud. En JSP estándar, solo está disponible el alcance de sesión donde los objetos viven para siempre, lo que generalmente no se desea. Creo que MyFaces Orchestra tiene una alternativa interesante: http://myfaces.apache.org/orchestra/myfaces-orchestra-core/installation.html –

+1

sí, pero eso es demasiado, ya que no quiere usar un framework de mvc – Bozho

2

Puede pasar objetos a jsp incrustándolos dentro de la Solicitud.

request.setAttribute("object", object);

y dentro del JSP:

request.getAttribute("object");

+0

¿Qué debo hacer para obtener más información, no parece obtener nada. – Ankur

2

puede ponerlo usando request.setAttribute ("myObj", myObj); ver javadoc

Cuestiones relacionadas