2010-02-14 6 views
8

Est-il possible d'avoir une servlet contenant un objet (une ArrayList dans ce cas) qui équivaut à afficher une page jsp et à passer cet objet à la jsp page. Dans ce cas, ArrayList contient des résultats de base de données que je veux parcourir et afficher les résultats sur la page JSP.Comment transmettre des informations d'une servlet à une page JSP

Je n'utilise aucun framework MVC, est-ce possible avec l'architecture de base Servlet/JSP.

Répondre

10

Oui.

  1. dans l'appel de servlet request.setAttribute("result", yourArrayList);
  2. alors avec impatience le jsp:

    getServletContext().getRequestDispatcher("your.jsp") 
        .forward(request, response); 
    
  3. utilisant JSTL, dans le jsp:

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

Si vous n » Je veux utiliser JSTL (mais je recommande de l'utiliser), alors vous pouvez obtenir la valeur en utilisant request.getAttribute("result") dans la JSP.

Alternativement, mais non recommandé, vous pouvez utiliser request.getSession().setAttribute(..) à la place, si vous voulez redirect() plutôt que forward().

+0

Notez que la raison de l'approche redirect() n'est pas recommandée, parce que vous dites au navigateur d'aller à une nouvelle URL provoquant une nouvelle requête où la portée "request" est différente, donc le résultat ne peut pas être stocké dans "request" -scope (request.setAttribute ...) mais doit être stocké dans une portée disponible pour une nouvelle requête. Dans JSP standard, il n'y a que la portée de session disponible où les objets vivent pour toujours, ce qui n'est généralement pas souhaité. Je crois que MyFaces Orchestra a une alternative intéressante - http://myfaces.apache.org/orchestra/myfaces-orchestra-core/installation.html –

+1

oui, mais c'est trop, puisqu'il ne veut pas utiliser un framework mvc – Bozho

2

Vous pouvez transmettre des objets à jsp en les intégrant dans la requête.

request.setAttribute("object", object);

et dans le jsp:

request.getAttribute("object");

+0

Que devrais-je google pour obtenir plus d'informations, je ne semble rien obtenir. – Ankur

2

Vous pouvez le mettre à l'aide request.setAttribute ("myobj", myObj); voir javadoc

Questions connexes