JSPの3種類のページジャンプ方式の比較
1438 ワード
JSPを使用するには、次の3つのジャンプ方法があります.
実験によって以下の規則が得られた.
一.response.sendRedirect()
この文の前にoutは許可されていません.flush()、ある場合は異常があります:
ジャンプ後、ブラウザのアドレスバーの変化が異なるホストの下にジャンプする場合、ジャンプ後、この文の後ろの文はスレッドが新しく開かれたように実行されますが、responseの操作には意味がありません.もしBR>
二.response.setHeader("Location","")
この文の前にoutは許可されていません.flush()は、ある場合はページがジャンプしません.ジャンプするとブラウザのアドレスバーが変化します.この文の後ろの文は実行が完了してからジャンプします.
この文の前にoutは許可されていません.flush()、ある場合は異常があります:
ジャンプするとブラウザのアドレスバーは変わりませんが、現在のホストの下にある文の後ろにある文の実行が完了するまでジャンプできません.
1 response.sendRedirect();
2 response.setHeader("Location","");
3 <jsp:forward page="" />
実験によって以下の規則が得られた.
一.response.sendRedirect()
この文の前にoutは許可されていません.flush()、ある場合は異常があります:
java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
ジャンプ後、ブラウザのアドレスバーの変化が異なるホストの下にジャンプする場合、ジャンプ後、この文の後ろの文はスレッドが新しく開かれたように実行されますが、responseの操作には意味がありません.もしBR>
二.response.setHeader("Location","")
この文の前にoutは許可されていません.flush()は、ある場合はページがジャンプしません.ジャンプするとブラウザのアドレスバーが変化します.この文の後ろの文は実行が完了してからジャンプします.
この文の前にoutは許可されていません.flush()、ある場合は異常があります:
java.lang.IllegalStateException: forward() not allowed after buffer has committed.
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)
at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)
at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836)
...
ジャンプするとブラウザのアドレスバーは変わりませんが、現在のホストの下にある文の後ろにある文の実行が完了するまでジャンプできません.