redirect と forward の違い
Servlet による WEB アプリケーションでは画面遷移の方法に
redirect(リダイレクト) と forward(フォワード)
があります。それぞれの動作の違いとメリット、デメリットについてまとめておきます。
|
redirect |
forward |
ソース |
response.sendRedirect("[ページ2]");
|
request.getRequestDispatcher("[ページ2]")
.forward(request, response);
|
処理の流れ |
クライアント [ページ1] を要求
↓
サーバ [ページ2] に redirect 命令を返却
↓
クライアント [ページ2] を要求
↓
サーバ [ページ2] を返却
|
クライアント [ページ1] を要求
↓
サーバ [ページ2] を返却
|
パフォーマンス |
悪い (リクエストを 2 回送信する必要がある) |
良い (通常通り 1 回のリクエストで良い) |
リクエスト情報 |
引き継がない (全く別の 2 つのリクエストの為) |
引き継ぐ (同一の 1 つのリクエストの為) |
転送可能範囲 |
外部サーバも OK |
同一サーバ内のみ |
同一サーバー内の処理には出来るだけ forward を使用する事。
別サーバーに転送したい時だけ redirect を使用するように心がける
|
|