Struts Basic: forward vs. redirect

ActionForwardベースクラスのプロパティの中にredirectというのがあります。 これを"true"に設定することにより、コントロールはリダイレクトされます。 ディフォルトは"false"で、フォワードされます。
ではforwardとredirect、どちらも新しいページに移動するんですが、この2つの違いは?

  • forward: HTTPリクエストとリクエストコンテキストの全てがそのまま残る。 同じアプリケーション内のみで使用できる。
  • redirect: Webクライアントに新しいHTTPリクエストを要求する(=オリジナルのリクエストパラメータやリクエストコンテキストは失われる)。 同じアプリケーション内/外で使用可能。

このように、Strutsでよく使うActionFormなんかをリクエストコンテキストに保存しても、redirectにしてしまうと消えてしまったりするのです。特に理由がなければディフォルトのフォワードを使うのが好ましいようです。