ページ遷移の種類
1) フォワード(RequestDispatcher#forward) 2) インクルード(RequestDispatcher#include) 3) リダイレクト(HttpServletResponse#sendRedirect)
比較
`フォワード | `インクルード | リダイレクト | |
転送スピード(*1) | 速い | 速い | 遅い |
リクエスト情報 | 引き継ぐ | 引き継ぐ | 引き継がない |
転送範囲 | 内部サーバのみ | 内部サーバのみ | 内部・外部サーバ |
転送後に処理が処理元に戻るか | 処理元に戻らない | 処理元に戻る | ‐ |
*1:転送スピードについて
フォワード/インクルード
* 1 回のリクエストでいい1) クライアント [ページX] を要求 2) サーバ [ページY] を返却
リダイレクト
* リクエストを 2 回送信する必要があるため、パフォーマンスが悪い1) クライアント [ページX] を要求 2) サーバ [ページY] に リダイレクトするようにクライアントに指示 3) クライアント [ページY] を要求 4) サーバ [ページY] を返却
構文
1) フォワード
RequestDispatcher dispatcher = request.getRequestDispatcher("/Sample.jsp"); dispatcher.forward(request, response);
2) インクルード
RequestDispatcher dispatcher = request.getRequestDispatcher("/Sample.jsp"); dispatcher.include(request, response);
3) リダイレクト
response.sendRedirect(request.getContextPath() + "/Sample.jsp");
参考文献
http://news.mynavi.jp/column/java/066/http://www.atmarkit.co.jp/fjava/javatips/062jspservlet029.html
http://d.hatena.ne.jp/okoba23/20080518/1211109078