Thymeleafというテンプレートエンジンを使って、HTMLをレスポンスするWebアプリを作成していきたいと思います!
1つのController、1つのテンプレートを使ったWebアプリを作ります。
テンプレートとは?
テンプレートは、Webアプリケーションで表示する画面のレイアウトやデザインを定義するファイルです。
MVCモデルのViewの役割を担います。Controllerから受け取ったデータを適切な形式で表示します。ビジネスロジックと表示ロジックを明確に分離することができます。
HTMLを生成するためのベースとなるファイルで、静的なHTMLの構造を定義しながら、動的なコンテンツを埋め込むことができます。テンプレートエンジンによって処理される際に、実際のデータと組み合わされて最終的なHTMLページが生成されます。
Thymeleafとは?
Thymeleafは、JavaのWebアプリケーションで広く使用されているテンプレートエンジンです。HTMLファイルに直接テンプレート構文を記述できるため、デザイナーとの協業がしやすく、静的なプロトタイプとしても使用できます。Spring Bootと組み合わせることで、効率的な開発が可能になります。
具体的には、以下のような特徴的な機能があります:
- テンプレートの中で変数を使用できます。Controllerから渡された値を、${変数名}の形式で参照できます。
- 繰り返し処理やif文などの制御構文を使用できます。th:eachやth:ifといった属性を使って実現します。
- Thymeleafでは「th」という識別子を使用します。
- HTMLテンプレートのhtml開始タグ内にxmlns属性を記述します。定型的な書式となっています。
- 「th」の仕様はこのURLで定義されている。
- Thymeleafでは「th」という識別子を使用します。
Gradleプロジェクトの概要
ブラウザ上に以下のような文字列を表示するアプリケーションを作成します。
プロジェクトの構成
以下の内容(または同等のもの)を指定してください。
Spring Initializr | 意味 | 選択 |
---|---|---|
Specify Spring Boot version. | Spring Bootのバージョン | 3.4.0 |
Specify project language. | プロジェクトで使用する言語 | Java |
Input Group Id for your project. | Group Idを入力してください | com.example(default) |
Input Artifact Id for your project. | Artifact Idを入力してください | hello |
Specify packaging type. | パッケージングタイプ | Jar |
Specify Java version. | Javaのバージョン | 17(任意) |
Choose dependencies. | 依存関係 | Last used Spring Web, Thymeleaf, Spring Boot DevTools |
Generate into this folder | プロジェクトフォルダを作成する場所を指定します | デスクトップ |
クラスの作成
src > main > javaフォルダの下のcom.example.helloの下に作成します。ファイル名は、HelloController.javaとします。
Controllerクラス
HelloController.javaを以下のように変更します。
package com.example.hello;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/")
public String index() {
return "index";
}
}
Controllerで使用するアノテーション
-
@Controller
このアノテーションは、このクラスがWebリクエストを処理するMVCモデルのControllerであることを示します。Spring MVCフレームワークがこのクラスをControllerとして認識し、HTTPリクエストをハンドリングできるようになります。
テンプレートの作成
src > main > resourcesフォルダの下のtemplatesの下に作成します。ファイル名index.html
にHTMLの雛形を作成してください。
index.htmlを以下のように変更します。
<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello Thymeleaf!</h1>
</body>
</html>
プロジェクトの起動
Spring Boot Dashboardからプロジェクトを起動します。プロジェクト起動後にブラウザで http://localhost:8080 にアクセスすると、以下の画面が表示されます。
このように、Thymeleafを使用することで、HTMLテンプレートとJavaのコントローラーを組み合わせた基本的なWebアプリケーションを作成することができました。これがThymeleafを使用したWebアプリ開発の第一歩となります。