从servlet调用jsp时获取异常?

问题描述:

我有一个jsp。它在jsp负载上调用一个servlet并将结果显示在如下所示的相同jsp中。从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) 

请帮助我..

+0

您应该在将请求转发到JSP之后编写返回信息 –

的JSP包括servlet,它转发给JSP,其中包括servlet,它转发给包含servlet的JSP,该servlet转发到包含servlet的JSP,该servlet转发到包含servlet的JSP,该JSP转发到包含servlet的JSP,该JSP转发到JSP,其中包括servlet,它用于病房到JSP ...

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

+0

Hi Nizet,感谢您的回复。在getRequestDispatcher方法中,我可以使用另一个jsp来显示结果吗?谢谢! – user1016403

+0

测试它。但是你真的想继续使用糟糕的设计吗?为什么不这样做干净的方式? –

+0

感谢您的回复Nizet。而不是调用jsp页面加载servlet,我可以直接调用servlet并在jsp中显示结果吗?请建议我.. – user1016403

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