0
0

ForwardではなくRedirectをした場合

Last updated at Posted at 2023-12-02

ForwardではなくRedirectをした場合

1~5まではSpringMVCの大きな流れを参照
6. View名の代わりにredirectが入った文字列を返す。(ex. return “redirect:/member/signup”;)
7. ViewResolverをスキップし、RedirectViewを通じて応答ヘッダーを作り出し、クライアントに応答を伝える。 (302: redirect)
스크린샷 2023-12-02 22.19.17.png
8. クライアントは応答を受けて、ステータスコードが3xxだからLocationに書かれているurl(/member/signup)で再リクエストするべきだと考え、ブラウザはLocationのurlで自動的に再リクエストする。
9. Dispatcher Servletで再び要請を受けてControllerに要請を伝達した後、既存SpringMVCの大きな流れの6の過程を進行する。

Redirectを使用する理由

  • Forward
    • 次に移動したURLに要請情報をそのまま伝達する。
    • そのため、ユーザーが最初に要請した要請情報が次のURLでも有効である。
  • Redirect
    • 再要請を送るため、最初の要請情報はこれ以上有効ではなくなる。
  • 例えば、postで登録しながら、リロードをしたという。
    Web Browserの更新は、最後にサーバーに転送したデータを再送信するため、Forwardの場合、同じデータが複数回登録されてしまう可能性がある。
    この時、Redirectは最初の要請情報がもはや有効ではないため、同じデータが何度も登録されない。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0