从servlet调用jsp时获取异常?

时间:2012-05-03 12:45:50

标签: java jsp servlets

我有一个jsp。它在jsp load上调用servlet,并在同一个jsp中显示结果,如下所示。

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)

请帮帮我..

2 个答案:

答案 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路径。