トップページを表示する
この章のゴール
/にアクセスしたときにトップページを表示できる- HTML ファイル(テンプレート)を返す方法を理解する
- Controller が画面表示の入り口であることを学ぶ
1. これまでの仕組みを振り返る
前の章では、次のようにして「Hello, Spring!」を表示していた。
@GetMapping("/")
@ResponseBody
public String home() {
return "Hello, Spring!";
}
このときは構成をシンプルにするため、@ResponseBody を使っていた。
これは「戻り値をそのままブラウザに出力する」ことを意味する。
つまり、ブラウザへ文字列を直接返すだけの仕組みである(今後は使わないため覚えなくてよい)。
今回は HTML ファイルを画面として表示したい。
そのため、@ResponseBody を外し、テンプレートファイルを返すように変更する。
2. コントローラで画面を返す
src/main/java/com/example/ecsample/controller/にあるHomeController.javaを修正する。
return "home"; は、src/main/resources/templates/home.html というテンプレートを探して表示することを意味する。
3. テンプレートファイルを作成する
src/main/resources/templatesフォルダにhome.htmlを作成する。- 次の内容を記述する。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>EC Sample - トップページ</title>
</head>
<body>
<h1>ようこそ EC Sample へ</h1>
<p>このサイトでは商品一覧を閲覧し、カートに追加・購入する体験ができます。</p>
<a href="/products">▶ 商品一覧を見る</a>
</body>
</html>
4. 起動して確認する
- Eclipse のメニューから 実行 > Spring Boot アプリケーション を選択。
- ブラウザで http://localhost:8080/ にアクセス。
- 「ようこそ EC Sample へ」と表示され、リンクが見えたら成功。
5. 商品一覧リンクをクリックしてみる
- トップページの「▶ 商品一覧を見る」をクリックする。
- ブラウザに Whitelabel Error Page が表示されることを確認する。
これは、/productsに対応するコントローラやテンプレートがまだ存在しないためである。 - このエラーを解消するため、商品一覧ページを新たに追加する。
6. 商品一覧ページを表示する
src/main/java/com/example/ecsample/controller/にProductController.javaを新規作成する。
package com.example.ecsample.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class ProductController {
@GetMapping("/products")
public String showList() {
// 商品一覧ページを表示する
return "product/list";
}
}
src/main/resources/templates/product/フォルダを作成し、その中にlist.htmlを作成する。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>商品一覧</title>
</head>
<body>
<h1>商品一覧ページ</h1>
<ul>
<li>サンプル商品A</li>
<li>サンプル商品B</li>
<li>サンプル商品C</li>
</ul>
<a href="/">▶ トップページに戻る</a>
</body>
</html>
7. 動作確認
- アプリを再起動する。
- トップページにアクセスし、「商品一覧を見る」をクリックする。
- 「商品一覧ページ」が表示されれば成功。
- URL を直接 http://localhost:8080/products に入力しても同じページが表示される。
8. ファイル構成の確認
ecsample/
├─ src/
│ ├─ main/
│ │ ├─ java/com/example/ecsample/controller/
│ │ │ ├─ HomeController.java
│ │ │ └─ ProductController.java
│ │ └─ resources/templates/
│ │ ├─ home.html
│ │ └─ product/
│ │ └─ list.html
└─ pom.xml
9. Gitでコミットを作成する
ここまでの変更を保存し、コミットを取る。
この状態に戻せるようにしておこう。
git add .
git commit -m "トップページと商品一覧ページを表示するController・テンプレートを追加"
次の章では、URL に含まれる ID を使って「商品詳細ページ」を表示する方法を学ぶ。