2012-03-27 7 views
5

は、私は私が支柱1を使用して、目の前に持っているいくつかのレガシーコードを見ると、私は次を参照してください。リダイレクトまたは転送

<global-forwards> 
    ... 
    <forward name="accessDenied" path="/www/jsp/AccessDeniedForm.do" redirect="true" /> 
</global-forwards> 

は、だから、アクセス拒否されたページに送信するだけでグローバル楽しみです。 私は、転送するのではなくリダイレ​​クトするという決定に興味があります。それを使用するメリットとデメリットは何ですか?

+0

私が探していたのは... http://stackoverflow.com/questions/614516/why-use-redirect-true-in-struts-1-forwardこのスレッドは重複して閉じることができます。ごめんなさい。 – dublintech

答えて

5

それを使用するプロとは何ですか?

リダイレクトをtrueに設定してフォワード要素を使用していることについてプロとコンシューマが議論する前に、その構成で実際に何が起こっているのかを理解してみましょう。転送要素でリダイレクトがtrueに設定されている場合、この転送のリソースに対して新しい要求が発行されるように、ユーザーエージェントにリダイレクト命令を発行する必要があります。このlinkはおそらく、必要な詳細情報を提供します。

リダイレクトのデフォルト値はfalseです。本質的にforward要素が呼び出されると、指定されたパスに転送されます。リダイレクトをtrueに設定している場合、ブラウザは別のリクエストを行います。だから私はこれらが言ったと思うかもしれません、あなたはおそらく知っているか、あなたが本当にそれを使いたいのであれば、プロと詐欺の考えを持っているでしょう。

1

リダイレクトでは、コントロールを別のサーバーまたは別のドメイン名に割り当てることができます。リダイレクトには往復が必要です。リダイレクトが発行されると、リダイレクトがクライアントに返され、リダイレクトされたURL情報がヘッダーに含まれますブラウザに次のURLに移動するよう指示します。これは新しい要求として機能し、すべての要求および応答データは失われます。

転送では、転送はサーバー側から行われ、クライアントブラウザのURLは変更されません。データも失われません。これはブラウザページの更新と同じです。最初の提出で投稿されたデータはすべて再送信されます。注意して使用してください。

フォワードとリダイレクトの両方が異なるシナリオで使用されている場合、グローバルフォワードはエラー状況であるためリダイレクトする必要があります。

リダイレクトは往復が必要なため、遅くなります。転送は高速です。

+0

フォワードとリダイレクトの違いを理解しています。私はちょうどあなたのstrutsの設定でそれぞれのアプローチを使用する両方のアプローチのproとconのを探しています。 – dublintech

+0

賛否両論も上記の答えで説明されています。 – cherit

0

あなたは

リダイレクト= "true" を指定した場合は、Strutsは、クライアント側が

[response.sendRedirect()]

をリダイレクト使用しています。 JSPは新しいブラウザー要求によって呼び出され、古い要求に保管されているデータはすべて失われます。

関連する問題