2010-02-14 110 views
8

是否有可能擁有一個包含對象的servlet(在這種情況下是ArrayList),然後執行相當於顯示jsp頁面並將該對象傳遞給jsp頁。在這種情況下,ArrayList包含我想要遍歷並在JSP頁面上顯示結果的數據庫結果。如何將信息從servlet傳遞到JSP頁面

我沒有使用任何MVC框架,是否有可能使用基本的Servlet/JSP架構來實現這一點。

回答

10

是的。

    在servlet調用
  1. request.setAttribute("result", yourArrayList);
  2. 然後轉發給JSP:

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

如果你不」:使用JSTL,在jsp

getServletContext().getRequestDispatcher("your.jsp") 
    .forward(request, response); 
  • 不想使用JSTL(但我建議使用它),那麼你可以在JSP中也使用request.getAttribute("result")獲取值。

    或者,但不推薦,如果您想要redirect()而不是forward(),則可以使用request.getSession().setAttribute(..)

  • +0

    請注意,不建議使用redirect()方法的原因是,因爲您告訴瀏覽器在「請求」範圍不同的情況下轉到新的請求導致新請求的URL,因此結果無法存儲在「請求」 -scope(request.setAttribute ...)但必須存儲在可用於新請求的作用域中。在標準JSP中,只有會話範圍可用,而對象通常不會被永久居住。我相信MyFaces Orchestra有一個有趣的選擇 - http://myfaces.apache.org/orchestra/myfaces-orchestra-core/installation.html – 2010-02-14 15:21:49

    +1

    是的,但這太多了,因爲他不想使用mvc框架 – Bozho 2010-02-14 15:35:07

    2

    您可以通過將對象嵌入到請求中來將對象傳遞給jsp。

    request.setAttribute("object", object);

    和JSP中:

    request.getAttribute("object");

    +0

    我應該怎樣谷歌獲得更多信息,我似乎沒有得到任何東西。 – Ankur 2010-02-14 14:48:21

    2

    你可以把它使用了request.setAttribute( 「MyObj中」,MyObj中);見javadoc

    相關問題