概要
表題の件について、基本がわかっていなかったので、まとめてみました。
前提条件
コントローラのクラスに@Requestmapping("/home")
を設定、doGet()
メソッドに@Getmapping("/foo")
を設定している場合に、return "記述部分";
の記述部分に何を書くかという前提条件です。
パスのみ記述した場合
例えば、home/foo
と記述した場合、それをビュー名として解釈し、ビューリゾルバによって適切なビュー(Thymeleafであれば、resources/templatesフォルダの中のhome/foo.html)を探してレンダリングします。ビューリゾルバは、ビュー名をどのように解釈するかを設定ファイルやビューテンプレートエンジンに基づいて判断します。
forward:パスと記述した場合
現在のリクエストが/homeであり、forward:home/foo
を指定した場合、Springはこれを相対パスとして解釈し、/home/home/fooのように/homeを基準に相対的に解決することになります。
redirect:パスと記述した場合
リダイレクトは、ブラウザに新しいリクエストを発行させるため、完全なURLとして解釈されます。
redirectで遷移する場合、最初の/をつけることで、アプリケーションのルートパスを基準にリダイレクトが解釈されます。もし最初に/がないと、現在のパスを基準にリダイレクトが行われ、意図しない遷移が発生する可能性があります。