Some.jsp
<html>
<jsp:include page="/HelloWorld"/>
<%Iterator itr;%>
<% List data= (List)request.getAttribute("results");
for (itr=data.iterator(); itr.hasNext(); )
{
%>
<TABLE align="center" cellpadding="15" border="1" style="background-color: #ffffcc;">
<TR>
<TD align="center"><%=itr.next()%></TD>
</TR>
</TABLE>
<%}%>
</body>
</html>
在servlet中我将结果存储在请求中并使用requestdispatcher来调用jsp,如下所示。
public class SomeServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
List<String> list = new ArrayList<String>();
//some logic to populate list
request.setAttribute("results", list);
request.getRequestDispatcher("/WEB-INF/Some.jsp").forward(request, response);
}
}
但是我在jsp中显示结果时遇到异常:
java.io.IOException: Stream closed
at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:202)
at org.apache.jasper.runtime.JspWriterImpl.clearBuffer(JspWriterImpl.java:157)
请帮帮我..
答案 0 :(得分:2)
JSP包含servlet,它转发到JSP,其中包括servlet,它转发到JSP,其中包括servlet,它转发到JSP,其中包括转发到JSP的servlet,其中包括servlet,它转发到JSP,其中包括servlet,它转发到JSP,其中包括servlet,它转发给JSP ...
这里有一个严重的设计问题。采用MVC原则:所有请求都转到一个servlet(Controller),它加载Model,并调度到适当的JSP(View)。视图不应该包含servlet,当然也不应该像这样递归。
答案 1 :(得分:0)
你不能在jsp:include标签中给出servlet url模式。原因是,它不知道是否调用get方法或ost方法。你应该只给jsp路径。