2012-05-03 155 views
1

我有一個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之後編寫返回信息 –

回答

2

的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

0

您不能在jsp:iclude標記中提供servlet url模式。原因是,它不知道是否要調用get方法或ost方法。你應該只給jsp路徑。

相關問題