[解決済み] RequestDispatcher.forward()とHttpServletResponse.sendRedirect()の比較
疑問点
との概念の違いは何ですか?
forward()
と
sendRedirect()
?
どのように解決するのですか?
<ブロッククオートrequestDispatcher - forward() メソッド
-
を使うとき
forward
メソッドを使用すると、リクエストは同じサーバー内の別のリソースに転送され、さらに処理されます。 -
の場合は
forward
の場合、ウェブコンテナはすべての処理を内部で処理し、クライアントやブラウザは関与しません。 -
いつ
forward
が呼び出されるとrequestDispatcher
オブジェクト上で呼び出され、リクエストオブジェクトとレスポンスオブジェクトを渡すので、古いリクエストオブジェクトはリクエストを処理する新しいリソース上に存在することになります。 -
視覚的に、転送されたアドレスは見えません。
-
を使用すると
forward()
メソッドを使う方がsendRedirect
. -
forwardを使ってリダイレクトしたときに、新しいリソースで同じデータを使いたい場合は
request.setAttribute()
を使用することができます。
SendRedirect
-
の場合
sendRedirect
の場合、リクエストは別のリソース、別のドメイン、または別のサーバに転送され、さらに処理されます。 別のサーバに転送され、さらに処理されます。 -
を使用する場合
sendRedirect
を使うと、コンテナはリクエストをクライアントやブラウザに転送します。sendRedirect
メソッド内で与えられた URL は、クライアントへの新しいリクエストとして表示されます。 -
の場合
sendRedirect
の呼び出しの場合、ブラウザが新しいリクエストとして扱うため、古いリクエストとレスポンスオブジェクトは失われます。 -
アドレスバーでは、新しいリダイレクトされたアドレスを見ることができます。透明ではありません。
-
sendRedirect
は、完全に新しいリクエストが作成され、古いリクエストオブジェクトが失われるため、1つの余分なラウンドトリップが必要であるため、遅くなります。ブラウザのリクエストは 2 つ必要です。 -
しかし
sendRedirect
では、新しいリソースに同じデータを使いたい場合、データをセッションに保存するか、URL と共に渡す必要があります。
どちらが良いのでしょうか?
どの方法がより有用であるかは、シナリオに依存します。
もし、制御を新しいサーバやコンテキストに移し、完全に新しいタスクとして扱いたい場合は
sendRedirect
.
一般に、ブラウザでウェブページを再読み込みしたときに安全に操作を繰り返すことができ、結果に影響を与えない場合は、forwardを使用すべきです。
関連
-
java オープンソースフレームワーク統合 Context initialization failed の共通エラー。
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] JSP/Servletを使用してサーバーにファイルをアップロードするにはどうすればよいですか?
-
[解決済み] Javaサーブレットとは?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
-
[解決済み】getAttribute()とgetParameter()の違いについて)
-
[解決済み] クッキーとセッションの違い?
-
[解決済み] 別のJSPファイルをインクルードする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Serious: End event threw exception java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedM
-
java オープンソースフレームワーク統合 Context initialization failed の共通エラー。
-
[解決済み] response.sendRedirect()とrequest.getRequestDispatcher().forward(request,response)の違いは何ですか[重複]?
-
[解決済み] JSPページでサーブレットを呼び出す方法
-
[解決済み] JSTLでのif-elseオプションの使用方法
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
-
[解決済み] クッキーとセッションの違い?
-
[解決済み] JSTLをインストールするには?絶対 URI: http://java.sun.com/jstl/core は解決できません。
-
[解決済み] 別のJSPファイルをインクルードする
-
[解決済み] jsp の出力から空白を取り除く