カテゴリ: Spring 更新日: 2025/07/20

Controllerから値を画面に渡す方法を完全解説!初心者でもわかるModelの使い方

Controllerから値を画面に渡す方法(Modelの使い方)
Controllerから値を画面に渡す方法(Modelの使い方)

新人と先輩の会話形式で理解しよう

新人

「Spring Bootで画面にデータを表示したいんですけど、どうやってControllerから値を渡すんですか?」

先輩

「それはModelという仕組みを使ってできるよ。Controllerでデータを用意して、HTMLテンプレートに渡すんだ。」

新人

「Modelって何なんですか?あまりイメージが湧かなくて…」

先輩

「じゃあ、今日はControllerの役割から順番に説明していこうか。」

1. Controllerとは何か(役割や役目)

1. Controllerとは何か(役割や役目)
1. Controllerとは何か(役割や役目)

Controller(コントローラ)は、Spring Bootアプリケーションにおいて非常に重要な役割を担います。ユーザーがブラウザからURLにアクセスしたときに、そのリクエストを受け取り、処理を行い、どのHTMLファイルを表示するかを判断するのがControllerの役目です。

たとえば「http://localhost:8080/greeting」にアクセスがあったとき、対応するControllerが呼び出され、必要なデータを準備してテンプレートに渡します。

以下はControllerの基本的なサンプルです。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class GreetingController {

    @GetMapping("/greeting")
    public String greeting() {
        return "greeting";
    }
}

このように、@Controller@GetMappingを使ってURLとHTMLテンプレートを結びつけます。Spring Bootでは、Controllerが画面表示の入り口になるのです。

2. Controllerから画面に値を渡すとはどういうことか

2. Controllerから画面に値を渡すとはどういうことか
2. Controllerから画面に値を渡すとはどういうことか

単にHTMLを表示するだけではなく、「ようこそ○○さん」のように動的に表示を変えるには、ControllerからHTMLテンプレートにデータを渡す必要があります。

そのときに使うのがModelというオブジェクトです。ControllerのメソッドにModelを引数として渡し、addAttribute()メソッドでデータを設定します。

以下は、名前を渡すサンプルです。


@GetMapping("/hello")
public String hello(Model model) {
    model.addAttribute("name", "山田さん");
    return "hello";
}

このようにしておけば、HTMLテンプレート内で${name}という記述を使って、「山田さん」を表示できます。

Spring Boot Model 使い方として、addAttributeメソッドは最も基本的な書き方です。

3. Modelとは何か(役割と仕組み)

3. Modelとは何か(役割と仕組み)
3. Modelとは何か(役割と仕組み)

Modelは、ControllerからHTMLテンプレートに値を渡すための「データの入れ物」です。

Spring Bootの仕組みでは、Modelにデータを入れると、そのデータはテンプレートエンジン(Thymeleafなど)を通じてHTMLに展開されます。

たとえば、Controllerで次のように書いた場合:


model.addAttribute("message", "こんにちは、Spring Boot!");

HTML側ではこのように記述することで、画面に表示できます。


<p th:text="${message}">ここにメッセージが表示されます</p>

このように、ModelはControllerとテンプレートの橋渡し役です。データベースから取得した情報を画面に出すときにも、このModelを使って値を渡します。

「Controller 値 渡す」方法として、このModelの仕組みを理解することがSpring Boot開発の第一歩です。

4. Modelを使った値の渡し方(addAttributeの基本的な使い方)

4. Modelを使った値の渡し方(addAttributeの基本的な使い方)
4. Modelを使った値の渡し方(addAttributeの基本的な使い方)

さて、ここからは実際にModelを使って値を画面に渡す方法を詳しく見ていきましょう。Spring Boot Model 使い方の中でも最も基本となるのが、addAttribute()メソッドを使うやり方です。

以下の例では、「こんにちは、〇〇さん」というメッセージを画面に表示させるControllerを作成します。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("userName", "田中太郎");
        return "hello";
    }
}

model.addAttribute("userName", "田中太郎");の部分で、キー「userName」と値「田中太郎」をModelに追加しています。これにより、Thymeleafテンプレートで${userName}と書くと、「田中太郎」が表示されます。

このようにController 値 渡すときには、addAttributeを使ってModelにデータを設定します。

5. ControllerとHTMLテンプレートの連携(Thymeleafとの関係)

5. ControllerとHTMLテンプレートの連携(Thymeleafとの関係)
5. ControllerとHTMLテンプレートの連携(Thymeleafとの関係)

次に、Controllerで渡した値をどのようにHTML側で受け取って表示するのかを説明します。ここで使うのが「Thymeleaf(タイムリーフ)」というテンプレートエンジンです。

Spring Bootでは、デフォルトでThymeleafが使えるようになっているので、特別な設定をしなくても利用できます。Thymeleafは、HTMLの中に特殊な属性(th:textなど)を書くことで、Modelから受け取った値を埋め込むことができます。

たとえば、Controllerで先ほどのように「userName」を渡していた場合、HTMLファイル(resources/templates/hello.html)では以下のように記述します。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hello Page</title>
</head>
<body>
    <p th:text="'こんにちは、' + ${userName} + 'さん!'">ここにメッセージが表示されます</p>
</body>
</html>

このように、th:text属性を使うことで、Modelに追加された値をHTMLの中に動的に表示できます。これが、Spring BootとThymeleafを使った基本的なデータ連携の流れです。

この仕組みを理解することで、「Spring Boot Model 使い方」や「Thymeleaf 表示方法」が自然に身につきます。

6. 実際に値を表示するHTMLの書き方(th:textの使用例)

6. 実際に値を表示するHTMLの書き方(th:textの使用例)
6. 実際に値を表示するHTMLの書き方(th:textの使用例)

それでは、実際に値を表示するHTMLの書き方をもう少し具体的に説明します。初心者でもわかりやすいように、HTML構造はできるだけシンプルにしています。

以下は、Controllerから渡された複数の値をHTMLで表示するサンプルです。


@GetMapping("/info")
public String info(Model model) {
    model.addAttribute("title", "プロフィール情報");
    model.addAttribute("name", "佐藤花子");
    model.addAttribute("age", 29);
    return "info";
}

このControllerに対応するHTMLは以下のようになります。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title th:text="${title}">タイトル</title>
</head>
<body>
    <h1 th:text="${title}">タイトル</h1>
    <p th:text="'名前:' + ${name}">名前を表示</p>
    <p th:text="'年齢:' + ${age} + '歳'">年齢を表示</p>
</body>
</html>

th:textを使うことで、動的に値をHTMLに埋め込むことができます。表示する値はControllerでModelに追加されたものなので、Thymeleaf側で特別な設定は必要ありません。

また、PleiadesでこのアプリケーションをGradleプロジェクトとして実行する場合は、resources/templatesフォルダの中に上記のHTMLを保存しておきましょう。

このように、Controller 値 渡すときの定番パターンとして、ModelとThymeleafの組み合わせを使うことが一般的です。

7. 複数の値を渡す方法(文字列・数値・日付など)

7. 複数の値を渡す方法(文字列・数値・日付など)
7. 複数の値を渡す方法(文字列・数値・日付など)

ここでは、Spring BootのControllerから複数のデータ型の値を画面に渡す方法を紹介します。「Spring Boot Model 使い方」として、文字列だけでなく数値や日付などもModelを使って渡せることを理解しておくと実務で役立ちます。

以下は、名前(文字列)、年齢(整数)、現在日時(日付)をModelに追加してHTMLテンプレートに渡す例です。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.time.LocalDateTime;

@Controller
public class InfoController {

    @GetMapping("/profile")
    public String profile(Model model) {
        model.addAttribute("name", "鈴木一郎");
        model.addAttribute("age", 35);
        model.addAttribute("now", LocalDateTime.now());
        return "profile";
    }
}

このように、文字列や数値、日付型(LocalDateTime)など、さまざまなデータをModelに追加できます。

次に、これらの値を受け取って表示するHTMLテンプレートの書き方を見ていきましょう。

8. 画面側での取り扱い(複数値の埋め込み表示)

8. 画面側での取り扱い(複数値の埋め込み表示)
8. 画面側での取り扱い(複数値の埋め込み表示)

テンプレートエンジンであるThymeleafを使って、Controllerから渡された複数の値をHTMLに表示する方法を紹介します。

先ほどの/profileのControllerに対応するテンプレートは以下のようになります。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>プロフィール</title>
</head>
<body>
  <h1>プロフィール詳細</h1>
  <p th:text="'氏名:' + ${name}">氏名</p>
  <p th:text="'年齢:' + ${age} + '歳'">年齢</p>
  <p th:text="'現在時刻:' + ${#temporals.format(now, 'yyyy/MM/dd HH:mm:ss')}">現在時刻</p>
</body>
</html>

${#temporals.format(now, 'yyyy/MM/dd HH:mm:ss')}の部分では、Thymeleafのtemporalsユーティリティを使って、日付を整形して表示しています。

このようにテンプレートエンジンを使えば、Javaのデータを画面上に簡単に展開できます。「Thymeleaf 表示方法」の基本として、日付フォーマットや文字列連結の書き方はしっかり押さえておきましょう。

実行結果のイメージ:

  • 氏名:鈴木一郎
  • 年齢:35歳
  • 現在時刻:2025/07/09 15:30:45

9. 初心者がやりがちなミスとその対処法(変数名の不一致、テンプレート配置ミスなど)

9. 初心者がやりがちなミスとその対処法(変数名の不一致、テンプレート配置ミスなど)
9. 初心者がやりがちなミスとその対処法(変数名の不一致、テンプレート配置ミスなど)

ここでは、初心者が「Controller 値 渡す」際によくあるミスとその対処法をまとめて紹介します。Spring BootをPleiadesで使う場合にも注意すべきポイントがいくつかあります。

(1)変数名の不一致

ControllerでModelに追加したキー名と、HTML側で参照する変数名が一致していないと、画面に値が表示されません。


// Controller側
model.addAttribute("username", "佐藤太郎");

<!-- 間違ったHTML -->
<p th:text="${userName}">ユーザー名</p>

↑この場合、usernameuserNameが異なるため、画面上では何も表示されません。

正しくは以下のように書きます:


<!-- 正しいHTML -->
<p th:text="${username}">ユーザー名</p>

(2)テンプレートファイルの配置場所が間違っている

HTMLテンプレートは必ずsrc/main/resources/templatesフォルダの中に置きましょう。

それ以外の場所に置くと、テンプレートが見つからないというエラーになります。

(3)HTMLにxmlns属性が抜けている

Thymeleafを使うには、HTMLタグにxmlns:th="http://www.thymeleaf.org"の宣言が必要です。


<!-- 必須の宣言 -->
<html xmlns:th="http://www.thymeleaf.org">

この記述が抜けていると、th:textなどのThymeleaf属性が正しく動作しません。

(4)Javaコードのスペルミス

addAttributeのメソッド名を間違えて記述する例もよくあります。


// 間違い
model.addAtrribute("title", "タイトル"); // スペルミス

正しくは以下のとおりです。


model.addAttribute("title", "タイトル"); // 正しい書き方

(5)Gradle依存関係の不足

Thymeleafを使うには、Gradleのビルドファイル(build.gradle)に以下の依存関係が追加されている必要があります。


dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}

Pleiadesでプロジェクトを作成するとき、「Thymeleaf」にチェックを入れておけば、自動で追加されるので安心です。

まとめ

まとめ
まとめ

今回は、「Controller 値 渡す」ためのModelの使い方について、さらに一歩進んだ内容を解説しました。

  • 複数のデータ型(文字列・数値・日付)をModelで渡せる
  • Thymeleaf 表示方法を使って複数の値を画面に埋め込める
  • テンプレートエンジンとしてThymeleafを正しく使うには構文や宣言が必要
  • 初心者がよく起こすミスには、変数名の不一致やテンプレート配置場所のミスがある

実際にPleiadesで手を動かしながら、値を渡して画面に表示する流れを繰り返すことで、「Spring Boot Model 使い方」や「Thymeleaf 表示方法」の基礎がしっかり身につきます。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
JDBCとは?Javaでデータベースを使うしくみを初心者向けに解説
Springと他のフレームワーク(StrutsやJSF)との違いを初心者向けにわかりやすく解説!
Springのモジュール構成(DI・AOP・MVCなど)を紹介
Javaの論理演算子(&&, ||, !)の使い方を学ぼう
人気記事
No.1
Java&Spring記事人気No1
単体テストと結合テストの違いを理解しよう
No.2
Java&Spring記事人気No2
Javaとは?初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
SQLのサブクエリを完全ガイド!入れ子クエリの使い方を初心者向け解説
No.4
Java&Spring記事人気No4
SQLのトリガー(TRIGGER)を完全ガイド!初心者でもわかる自動処理の仕組み