JSPの forward と redirect の動作の違いをはっきり覚えておく必要がある。なぜか自分はよく混同してしまう。
まずは forward のサンプルを。
[JspForwardRedirect1.jsp]
JspForwardRedirect1.jsp にアクセスするとサーバ内で top.html へのリクエストし、そのレスポンスを JspForwardRedirect1.jsp へのアクセス結果として返す。
そのためブラウザのURLは JspForwardRedirect1.jsp にアクセスしたままになる。
そしてredirectのサンプル。
[JspForwardRedirect2.jsp]
<% response.sendRedirect("top.html"); %>
JspForwardRedirect2.jsp にアクセスするとブラウザに対して「top.html へリダイレクトしなさい」というHTTPステータスコードが返され、ブラウザが再度 top.html を読みにいく。
この動作と、ネットワーク環境(PCか携帯電話か?)を考慮すればどちらを利用すればいいか判断できる。
ちなみに redirect の方は他のサイトへ飛ばすことができるが、 forward ではできない。
可能
<% response.sendRedirect("http://msn.co.jp"); %>
不可
この二つをはっきり区別してイメージ的に覚える方法はないか?...
redirect はブラウザにHTTPコードを返すので、「ブラーリ」(ブラウザにリダイレクト)と覚えようか。