The Human Swiss Army knife

アウトプットメイン

【Spring】画面表示や画面遷移

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を返す