1

私はjspを持っています。これは、jspロード時にサーブレットを呼び出し、以下と同じ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>

サーブレットでは、結果を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には、JSPに転送するサーブレットが含まれます。JSPに転送するサーブレットが含まれます。JSPに転送するサーブレットが含まれます。JSPに転送するサーブレットが含まれます。サーブレットが含まれるJSPに転送します。これは、JSPに転送します。これには、サーブレットが含まれ、JSPに転送されます。これには、JSPに転送されるサーブレットが含まれます。

ここに深刻な設計上の問題があります。MVCの原則を採用します。すべてのリクエストはサーブレット(コントローラー)に送信され、モデルが読み込まれ、適切なJSP(ビュー)にディスパッチされます。ビューにはサーブレットを含めるべきではなく、このような再帰的な方法であってはなりません。

于 2012-05-03T12:59:20.147 に答える
0

jsp:icludeタグでサーブレットのURLパターンを指定することはできません。その理由は、getメソッドとostメソッドのどちらを呼び出すかがわからないためです。jspパスのみを指定する必要があります。

于 2012-05-03T13:01:25.917 に答える