【问题标题】:How do I pass information from a servlet to a JSP page如何将信息从 servlet 传递到 JSP 页面
【发布时间】:2011-01-16 17:07:30
【问题描述】:

是否有可能有一个 servlet 包含一个对象(在这种情况下是一个 ArrayList),然后相当于显示一个 jsp 页面并将该对象传递给 jsp 页面。在这种情况下,ArrayList 包含我想要遍历的数据库结果并将结果显示在 JSP 页面上。

我没有使用任何 MVC 框架,是否可以使用基本的 Servlet/JSP 架构来做到这一点。

【问题讨论】:

    标签: java model-view-controller jsp servlets


    【解决方案1】:

    如果您正在尝试制作某种“组件”,那么最好将 JSP 页面转换为自定义标签。这是一篇很棒的文章:http://onjava.com/pub/a/onjava/2004/05/12/jsp2part4.html

    【讨论】:

    • 谢谢,我现在确实这样做了。它更整洁。
    【解决方案2】:

    是的。

    1. 在servlet调用request.setAttribute("result", yourArrayList);
    2. 然后转发到jsp:

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

      <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 有一个有趣的选择 - myfaces.apache.org/orchestra/myfaces-orchestra-core/…
    • 是的,但这太过分了,因为他不想使用 mvc 框架
    【解决方案3】:

    你可以使用 request.setAttribute("myobj", myObj);见javadoc

    【讨论】:

      【解决方案4】:

      您可以通过将对象嵌入到请求中来将对象传递给 jsp。

      request.setAttribute("object", object);

      在jsp中:

      request.getAttribute("object");

      【讨论】:

      • 我应该用谷歌搜索什么以获得更多信息,我似乎什么都没有。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多