2010-02-14 61 views
8

È possibile avere un servlet che contiene un oggetto (un ArrayList in questo caso) che quindi equivale a visualizzare una pagina jsp e passare quell'oggetto al jsp pagina. In questo caso ArrayList contiene i risultati del database e voglio scorrere e visualizzare i risultati sulla pagina JSP.Come passare informazioni da un servlet a una pagina JSP

Non utilizzo alcun framework MVC, è possibile farlo con l'architettura Servlet/JSP di base.

risposta

10

Sì.

  1. nella chiamata servlet request.setAttribute("result", yourArrayList);
  2. quindi con ansia il jsp:

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

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

Se don' t voglio usare JSTL (ma ti consiglio di usarlo), allora puoi farlo ottenere il valore usando request.getAttribute("result") anche nel JSP.

In alternativa, ma non consigliato, è possibile utilizzare request.getSession().setAttribute(..) invece, se si desidera redirect() anziché forward().

+0

Si noti che il motivo per cui l'approccio redirect() non è raccomandato, è perché si dice al browser di andare a un nuovo URL che causa una nuova richiesta in cui l'ambito "richiesta" è diverso, quindi il risultato non può essere memorizzato in "richiesta" -scope (request.setAttribute ...) ma deve essere archiviato in un ambito disponibile per una nuova richiesta. Nel JSP standard è disponibile solo lo spazio di sessione in cui gli oggetti vivono per sempre, cosa che di solito non è desiderata. Credo che MyFaces Orchestra abbia un'interessante alternativa - http://myfaces.apache.org/orchestra/myfaces-orchestra-core/installation.html –

+1

sì, ma è troppo, dal momento che non vuole usare un framework mvc – Bozho

2

È possibile passare oggetti a jsp incorporandoli all'interno della richiesta.

request.setAttribute("object", object);

e all'interno della jsp:

request.getAttribute("object");

+0

Cosa dovrei trovare su Google per ottenere maggiori informazioni, non mi sembra di ottenere nulla. – Ankur

2

si può mettere con request.setAttribute ("myObj", myObj); vedi javadoc

Problemi correlati