java サーブレット ページをジャンプするにはいくつかの方法があります。必要な場合は、
サーブレットを参照してください。
もちろん、サーブレットでは、一般的なジャンプは doGet、doPost、およびその他のメソッドで発生します。
1)リダイレクトメソッド
response.sendRedirect("/a.jsp");
ページのパスは相対パスです。 sendRedirect は、次のような任意のページにジャンプできます。必ずしもこの Web アプリケーションに限定されるわけではありません。
response.sendRedirect("http://www.jb51.net");
ジャンプ後にブラウザのアドレス バーが変わります。
この方法で値を渡したい場合は、パラメータを URL に含めるか、セッションに置くことしかできません。request.setAttribute を使用して渡すことはできません。
2) forwardメソッド
RequestDispatcherdispatcher = request.getRequestDispatcher("/a.jsp");
dispatcher .forward(request,response);
ページのパスは相対パスです。 forward メソッドは、この Web アプリケーション内のページにのみジャンプできます。
ブラウザのアドレスバーはジャンプ後も変化しません。
このメソッドを使用してジャンプすると、パラメーター付きの URL、セッション、request.setAttribute
JSP:
1) response.sendRedirect();
、およびサーブレットの response.sendRedirect( ) の 3 つのメソッドを使用して値を渡すことができます。同じ方法。このステートメントの前に
Out.flush() を使用することはできません。ある場合は、例外が発生します:
java.lang.IllegalStateException: データが client.
at com にコミットされた後は、sendRedirect() を実行できません。 caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
ジャンプ後にブラウザのアドレスバーが変わります
別のホストにジャンプしたい場合は、ジャンプ後に次のステートメントを実行しますこのステートメントは続行します 実行は新しいスレッドを開くのと似ていますが、応答に対する操作は無意味です
同じホストにジャンプしたい場合、このステートメントの後のステートメントは実行が完了するまでジャンプしません
2)このステートメントの前に、response.setHeader(" Location","");
out.flush() が存在する場合、ページはジャンプしません。
ジャンプ後にブラウザのアドレスバーが変化します
ジャンプは、このステートメントに続くステートメントが実行された後にのみ発生します
以上がJavaサーブレットでのページジャンプのいくつかのメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。