1.index.htmlを表示させる。
@Controller public class IndexController { @GetMapping("/") public String index() { return "index"; } }
・("/")はルートパスを指すため、Webアプリケーションの最上位URLにアクセスしたときに呼び出されるメソッドに対して指定する。
・localhost:8080にアクセスしたときにindex.htmlが表示される。
・"src/main/resources/templates/index.html"に配置しておく。
2.index.htmlから画面遷移させる。
<a href="./user/userManagement.html" th:href="@{/user/userManagement}">ユーザ管理</a>
・index.htmlに遷移先を記載する。
・thタグはthymeleafのもの。user配下のuserManagement.htmlをリンクにしている。
@Controller @RequestMapping("/user") public class UserController { @GetMapping("/userManagement") public String showManegement() { return "user/userManagement"; } }
・コントローラーでuserManagementへ要求が来たため、showManagement()メソッドが動いて、userManagement.htmlが表示される。
・@RequestMapping("/user")は、GetMapping("xxx")のxxxにフルパス記載しちゃえば不要な認識。多分。
画面遷移の流れ
①ブラウザから"http://localhost:8080/user/userManagement"にリクエスト要求
②コントローラ定義にあるGetMappingがリクエストを処理する。今回だと、showManagement()メソッド。
※return "user/userManagement"; は、ビュー名 (View Name) を返している。
③ビュー名(src/main/resources/templates/user/userManagement.html)を使ってテンプレートをレンダリングする。実際はSpring MVC の内部でビュー解決 (ViewResolver) が行われる。
④Thymeleaf (テンプレートエンジン)にてサーバサイドでhtmlを生成してブラウザに表示される。
以下イメージ。
Browser
|
v
Request: /user/userManagement
|
v
@Controller:
@GetMapping("/userManagement") -> "user/userManagement" (ビュー名)
|
v
ViewResolver:
"src/main/resources/templates/user/userManagement.html" (テンプレートファイル)
|
v
Thymeleaf (テンプレートエンジン):
HTML を生成
|
v
Response: ブラウザにHTMLを返す