是否有可能拥有一个包含对象的servlet(在这种情况下是ArrayList),然后执行相当于显示jsp页面并将该对象传递给jsp页。在这种情况下,ArrayList包含我想要遍历并在JSP页面上显示结果的数据库结果。如何将信息从servlet传递到JSP页面
我没有使用任何MVC框架,是否有可能使用基本的Servlet/JSP架构来实现这一点。
是否有可能拥有一个包含对象的servlet(在这种情况下是ArrayList),然后执行相当于显示jsp页面并将该对象传递给jsp页。在这种情况下,ArrayList包含我想要遍历并在JSP页面上显示结果的数据库结果。如何将信息从servlet传递到JSP页面
我没有使用任何MVC框架,是否有可能使用基本的Servlet/JSP架构来实现这一点。
是的。
request.setAttribute("result", yourArrayList);
然后转发给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(..)
。
您可以通过将对象嵌入到请求中来将对象传递给jsp。
request.setAttribute("object", object);
和JSP中:
request.getAttribute("object");
我应该怎样谷歌获得更多信息,我似乎没有得到任何东西。 – Ankur 2010-02-14 14:48:21
你可以把它使用了request.setAttribute( “MyObj中”,MyObj中);见javadoc
如果您试图制作某种“组件”,那么最好将JSP页面转换为自定义标签。这里有一篇很好的文章:http://onjava.com/pub/a/onjava/2004/05/12/jsp2part4.html
谢谢,我现在确实是这么做的。它很整洁。 – Ankur 2010-10-31 08:40:48
请注意,不建议使用redirect()方法的原因是,因为您告诉浏览器在“请求”范围不同的情况下转到新的请求导致新请求的URL,因此结果无法存储在“请求” -scope(request.setAttribute ...)但必须存储在可用于新请求的作用域中。在标准JSP中,只有会话范围可用,而对象通常不会被永久居住。我相信MyFaces Orchestra有一个有趣的选择 - http://myfaces.apache.org/orchestra/myfaces-orchestra-core/installation.html – 2010-02-14 15:21:49
是的,但这太多了,因为他不想使用mvc框架 – Bozho 2010-02-14 15:35:07