2015-01-12 11 views

答えて

6

広義には、Redirectはhttpリダイレクト(ヘッダーの場所を使用)を行います。これは、クライアントのブラウザがページを変更することを意味します。それは新しいルーティングに処理され(別のウェブサイトに行くために使用することもできます)、実際のスクリプトは終了します。

Forwardが内部であるのに対し、クライアントのブラウザでは違いは見られません。別のコントローラを実行するだけです。ディスパッチループにより、実行フローを別のコントローラ/アクションに転送できます。これは、ユーザーが特定のオプションにアクセスできるか、ユーザーを他の画面にリダイレクトするか、単にコードを再利用できるかどうかを確認するのに非常に便利です。しかし、 "転送"を行うことは、HTTPリダイレクトを行うことと同じではないことに注意してください。彼らは明らかに同じ結果を得ました。 「転送」は現在のページをリロードせず、すべてのリダイレクトは1回のリクエストで行われますが、HTTPリダイレクトでは2回のリクエストが必要です。同様の類推が同様にJSPで示すことができる

HttpServletResponsesendRedirect(String path)方法は、それが指定されたパスにリクエストを送信しなければならないことをクライアントに教えてくれます。したがって、クライアントは新しい要求を作成し、それをサーバーに送信します。クライアントの履歴が更新され、前方および後方ボタンが機能するようになります。この方法は、他のサーバーやドメインのページにリダイレクトする場合に便利です。

RequestDispatcherの前方方法は、転送することは、応答がクライアントに送信されることはありませんので、クライアントは上のリソースのこの変更について知ることができませんgetRequestDispatcher(String path).で指定されたパスに渡されServletRequestServletResponseサーバー。このメソッドは、サーバー・リソース(サーブレットからサーブレット)間で通信する場合に便利です。この方法は、サーバーへのネットワークラウンドトリップがなく、バックが必要なため、sendRedirectを使用するよりも高速です。

関連する問題