forwardとredirectの違い

1487 ワード

一.リクエスト転送(forward)
直接転送方式とも呼ばれ、クライアントとブラウザは一度だけ要求、サーブレット、HTML、JSPまたはその他の情報資源を発行し、2番目の情報資源から要求を鳴らす.要求対象requestでは、保存されたオブジェクトは情報資源ごとに共有される.
構文:
request.getRequestDispatcher(path).forward(request, response);

特徴:
  1.アドレスバーのアドレスは【変わりません】、通常はサービス側のジャンプと見なされます
  2.ひとつだけお願い
  3.リソースは共有されています
//      Servlet          ,                
request.setAttribute(String var1, Object var2);
//              
request.getAttribute(String var1);

  4.【可能】WEB-INFのリソースへのアクセス
WEB-INFフォルダは、Java Webアプリケーションのデフォルトのセキュリティディレクトリです.つまり、クライアントが直接アクセスできず、サービス側のみがアクセスできるディレクトリです.ページ内のファイルに直接アクセスするには、webを通過する必要があります.xmlは、アクセスしたファイルに対応するマッピングを行ってからアクセスできます.
注意:実際の開発では、ユーザーが直接アクセスしたくないページをフォルダに配置し、対応するマッピングでアクセスできます.
  5.リクエスト転送【不可】ドメイン間アクセス
二.URLリダイレクト(redirect)
間接転送方式とも呼ばれ、実際には2回のHTTPリクエストであり、サーバ側は1回目のリクエストに応答する際にブラウザに別のURLにリクエストを発行させ、転送の目的を達成させる.
構文:
response.sendRedirect(String location);

特徴:
  1.アドレスバーのアドレス【会】が変更され、通常はクライアントジャンプとみなされます
  2.2つのリクエストがあります
  3.2つのサーブレットではリクエストのデータを共有できません
  4.最終的な応答はすべてリダイレクトされたサーブレット決定であり、前のサーブレットとは関係ない
  5.【不可】WEB-INFのリソースへのアクセス
  6.ドメイン間アクセスのリダイレクトを要求
まとめ:URLリダイレクトはリダイレクトしたリソースパスをブラウザアドレスバーに再コピーしてリターンを押すように、新しいリクエストを再送信します.