(1) Servlet(サーブレット)におけるフォワード(forward)とリダイレクト(redirect)の違い
(1-1) フォワード(forward)とは?
(1-2) リダイレクト(redirect)とは?
(1-3) まとめ:フォワード(forward)とリダイレクト(redirect)の違い
(1) Servlet(サーブレット)におけるフォワード(forward)とリダイレクト(redirect)の違い
(1-1) フォワード(forward)とは?
●概要
フォワードはサーバ内部で要求されたページを別のページとして応答する処理です。例えば、次の図のように、クライアントから「ページAAA」を要求されたものの、サーバ内で別の「ページBBB」に転送して、そのBBBをレスポンスとして応答するような流れです。
(図111)
通信的にはクライアント←→サーバ間は1往復で完結します(後述のリダイレクトと似ていますが、通信的には異なるフローである)。
●構文&サンプルプログラム
(1-2) リダイレクト(redirect)とは?
●概要
対するリダイレクト(redirect)はクライアントからのリクエストに一旦応答するものの、自動的にリダイレクト先のページへのリクエスト(request)を発生させて、リダイレクト先のページを返却(response)する仕組みです。
(図121)
●構文
(構文)
response. sendRedirect([リダイレクト先のパス]);
●サンプルプログラム
・JSP①(初期画面)
・JSP②(要求画面)
・JSP③(リダイレクト先画面)
この動画では、JSP①からJSP②を要求 ⇒ JSP②を返却+JSP③へリダイレクト ⇒ JSP③を返却という流れで画面遷移しており、JSP②までは通常のformのsubmitなのでリクエストの内容(テキストボックスに入力された値など)を引き継げており、右側のコンソールにログ(### ScreenA通過 リクエスト値=XXX)が出力されていますが、JSP③にリダイレクトされた際にはrequest.getParameterでリクエストの値を引き継げなくなっています(※リダイレクトの仕様)。
(1-3) まとめ:フォワード(forward)とリダイレクト(redirect)の違い
①リクエスト情報を引き継げるのはforward
②URLが遷移先画面に変化するのはredirect
JSP①⇒Servlet(JSP②にforward)→JSP②