2010-02-14 85 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