1

我有一个jsp。它在 jsp 加载时调用一个 servlet,并以如下相同的 jsp 显示结果。

一些.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 中,我将结果存储在 request 中,并使用 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)

请帮我..

4

2 回答 2

2

JSP包含servlet,它转发给JSP,它包含servlet,它转发给JSP,它包含servlet,它转发给JSP,它包含servlet,它转发给JSP,它包含servlet,哪个转发给JSP,里面包含servlet,转发给JSP,里面包含servlet,转发给JSP...

你在这里有一个严重的设计问题。采用 MVC 原则:所有请求都转到一个 servlet(控制器),它加载模型,并分派到适当的 JSP(视图)。一个视图不应该包含一个 servlet,当然也不应该以这样的递归方式。

于 2012-05-03T12:59:20.147 回答
0

您不能在 jsp:iclude 标记中提供 servlet url 模式。原因是它不知道调用get方法还是ost方法。您应该只提供 jsp 路径。

于 2012-05-03T13:01:25.917 回答