如何从Servlet传递信息到JSP页面

8

是否可能创建一个包含对象(在这种情况下是ArrayList)的servlet,然后执行显示jsp页面并将该对象传递给jsp页面的相当操作。 在此情况下,ArrayList包含数据库结果,我想迭代并在JSP页面上显示结果。

如果不使用任何MVC框架,是否可以使用基本的Servlet / JSP体系结构来实现此操作。

4个回答

10
是的。
  1. 在servlet中调用 request.setAttribute("result", yourArrayList);
  2. 然后转发到jsp页面:

    getServletContext().getRequestDispatcher("your.jsp")
        .forward(request, response);
    
  3. 使用JSTL,在jsp中:

  4. <c:forEach items="${result}" var="item">
      ...
    </c:forEach>
    
    如果您不想使用JSTL(但我建议使用它),那么您也可以在JSP中使用request.getAttribute("result")获取值。
    或者,但不推荐,如果您想要redirect()而不是forward(),则可以使用request.getSession().setAttribute(..)

请注意,不建议使用redirect()方法的原因是,您告诉浏览器前往一个新的URL,从而引起了一个新的请求,其中“请求”范围是不同的,因此结果不能存储在“请求”范围(request.setAttribute...)中,而必须存储在可用于新请求的范围内。在标准JSP中,只有会话范围可用,对象将永久存在其中,这通常是不希望的。我相信MyFaces Orchestra有一个有趣的替代方案 - http://myfaces.apache.org/orchestra/myfaces-orchestra-core/installation.html - Thorbjørn Ravn Andersen
1
是的,但那太多了,因为他不想使用mvc框架。 - Bozho

2
您可以通过将对象嵌入请求中来传递给JSP页面。
例如:
在Java代码中,使用以下语句将对象传递给JSP页面:
request.setAttribute("object", object);
在JSP页面中,使用以下语句获取该对象:
request.getAttribute("object");

我应该搜索什么来获取更多信息,似乎我没有得到任何东西。 - Ankur

2
您可以使用 request.setAttribute("myobj", myObj) 进行设置,详见 javadoc

2

谢谢,我现在就这么做了。这样更整洁。 - Ankur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接