2009-03-05 76 views
21

私はActionMessagesが表示されないアクションの実行中に作成された問題を抱えていましたが、私の問題はstruts-config.xmlにredirect=trueという私の転送が原因であることがわかりました。なぜstruts 1で 'redirect = true'を使用するのですか?* forward?

デフォルトの動作はredirect=falseなので、私はredirect=trueを使ってどのような利点があるのか​​考えていましたが、回答が見つかりませんでした。誰がいつ、なぜredirect=trueをアクションフォワードに使用すべきかを知っていますか?

答えて

31

それは

をGET

POSTから移動しREDIRECT

を使用して取得することを利用して

常に負荷ページを投稿する応答内のページを表示することはありません '二重の問題を提出する' 防止します

詳細hereおよびhere

24

リダイレクトはブラウザに応答を送信し、ブラウザに新しい要求を強制します。サーバーの観点からは、ブラウザーは(自動ではあるが)新しい要求を作成するだけです。リダイレクトのいくつかの特徴:

  • 既存のパラメータと 属性が配置されているが、新しい 要求はURLで指定 パラメータが形成されています。
  • 新しいURL がブラウザに表示され、ユーザ はそれをブックマークに追加できます。
  • ブラウザを経由して戻るので、 が遅くなる可能性があります。

サーバーでフォワードが発生します。ブラウザはこれに関与していません。転送のいくつかの特性:

  • 新しいパラメータが追加されたり、既存のパラメータを上書きします。したがって、既存のパラメータは要求から削除できません。
  • リクエスト文脈では追加することができますが、利用可能なままです。この方法で情報を渡すことができます。
  • URLはブラウザでは変更されません。ブラウザの元のアドレスは変更されません。
  • 同じアプリケーション内の別のURLにのみ転送できます。

したがって、達成したいことによって異なります。フォワードは一般的に速く話されます。しかし、ユーザーが新しい場所をブックマークできるようにする必要がある場合は、オプションではありません。

0

redirect="true"を指定した場合、Strutsはクライアント側のリダイレクト[response.sendRedirect()]を使用します。 JSPは新しいブラウザー要求によって呼び出され、古い要求に保管されているデータはすべて失われます。

関連する問題