web-dev-qa-db-ja.com

Struts 1. *フォワードで 'redirect = true'を使用する理由

表示されないアクションの実行中に作成されたActionMessagesでいくつかの問題がありました。私の問題は、フォワードがredirect=true struts-config.xml内。

デフォルトの動作はredirect=false、私は人がredirect=trueそして私は答えを見つけることができませんでした。誰もいつ、なぜ知っていますかredirect=trueアクションフォワードで使用する必要がありますか?

24
Raibaz

「二重送信の問題」を防ぎます

POSTに応答してページを表示しない

常にGETを使用してページをロードします

POSTからDIRECTを使用してGETに移動します)

これの詳細 ここ および ここ

36
Boris Pavlović

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

  • 既存のパラメーターと属性が破棄され、URLで指定したパラメーターで新しい要求が形成されます。
  • 新しいURLはブラウザに表示され、ユーザーはブックマークすることができます。
  • ブラウザに戻って戻るため、処理が遅くなる可能性があります。

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

  • 新しいパラメータが追加されるか、既存のパラメータが上書きされます。そのため、既存のパラメーターをリクエストから削除することはできません。
  • リクエストコンテキストにスタッフを追加できますが、引き続き使用できます。この方法で情報を渡すことができます。
  • ブラウザではURLは変更されません。ブラウザの場合、元のアドレスはそのまま残ります。
  • 同じアプリケーション内の別のURLにのみ転送できます。

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

26

_redirect="true"_を指定すると、Strutsはクライアント側リダイレクト[response.sendRedirect()]を使用します。 JSPは新しいブラウザリクエストによって呼び出され、古いリクエストに格納されていたデータは失われます。

0
Mohit Singh