カテゴリ: Spring 更新日: 2026/01/14

SpringのModelAndViewクラスとaddObjectメソッドの使い方を完全ガイド!初心者でも安心

ModelAndViewのaddObject
ModelAndViewのaddObject

先生と生徒の会話形式で理解しよう

生徒

「Springでコントローラーからデータをビューに渡す方法を教えてください!」

先生

「SpringではModelAndViewクラスを使って、ビューとデータを一緒に管理することができます。」

生徒

「具体的にはどのように使うんですか?」

先生

「それでは、ModelAndViewクラスの基本とaddObjectメソッドの使い方を見ていきましょう!」

1. SpringのModelAndViewクラスとは?

1. SpringのModelAndViewクラスとは?
1. SpringのModelAndViewクラスとは?

SpringのModelAndViewクラスは、コントローラーから画面(ビュー)に渡したい情報をまとめて持っておくための「入れ物」のようなクラスです。画面のテンプレート名と、画面に表示したいデータ(モデル)を一つのオブジェクトとして管理できるので、初心者でも処理の流れを理解しやすくなります。

もう少しイメージしやすく言うと、「どの画面を表示するか」という情報と、「その画面にどんな内容を表示するか」という情報を、宅配便の箱に一緒に詰めて受け渡しするような感覚です。コントローラーは箱(ModelAndView)に中身を入れて返すだけなので、処理がシンプルになり、コードも読みやすく整理された形になります。

例えば、ユーザー情報を表示するページを考えてみましょう。ユーザー一覧を表示する画面では、「どのテンプレートを使うか」というビュー名と、「ユーザーの名前やID」といったデータをセットで用意する必要があります。ここでModelAndViewを使えば、次のようにビュー名だけ先に設定しておくことができます。


ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("userView"); // 「userView」という画面を表示する指定

このように、まずはどの画面を表示するかをModelAndViewに登録し、その後で画面に表示したいデータを少しずつ追加していく、という使い方が基本になります。コントローラーからは最終的にこのModelAndViewを返すだけなので、「どの画面に」「どんなデータを渡したのか」が一目で分かる、初心者にも扱いやすいクラスです。

2. addObjectメソッドとは?

2. addObjectメソッドとは?
2. addObjectメソッドとは?

addObjectメソッドは、ModelAndViewに「画面に渡したいデータ」を入れるためのメソッドです。かんたんに言うと、「名前付きでデータを箱に入れる」ための機能で、Spring MVCで画面表示をするときによく使われます。

このメソッドは、最初の引数に「キー(名前)」、二つ目の引数に「実際の値」を渡します。ビュー側(テンプレート)では、キーの名前を使って値を取り出して表示します。HTMLのテンプレートエンジン(ThymeleafやJSPなど)から、「username」や「message」といった名前で参照されるイメージです。


ModelAndView modelAndView = new ModelAndView("userView");
modelAndView.addObject("username", "太郎");
modelAndView.addObject("message", "こんにちは");

上のサンプルでは、"userView"というビューに対して、"username"という名前で「太郎」、"message"という名前で「こんにちは」という文字列を渡しています。テンプレート側ではusernamemessageというキーを使って値を表示できるので、「どの値がどの項目に対応しているのか」が分かりやすくなります。

同じModelAndViewに対してaddObjectを何回も呼び出せるため、「ユーザー名」「メッセージ」「日付」など、必要な情報を少しずつ追加していくことができます。プログラミング初心者の方でも、「名前を付けてデータを詰めておくメソッド」と覚えておくと理解しやすいでしょう。

3. 基本的な使い方

3. 基本的な使い方
3. 基本的な使い方

以下は、ModelAndViewクラスとaddObjectメソッドを使ってデータをビューに渡す例です。


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

@Controller
public class UserController {

    @GetMapping("/user")
    public ModelAndView user() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("userView");
        modelAndView.addObject("username", "太郎");
        modelAndView.addObject("message", "こんにちは、Spring MVCの世界へ!");
        return modelAndView;
    }
}

上記のコードでは、addObjectメソッドを使って、usernamemessageという2つのデータをビューに渡しています。

4. 実行結果の例

4. 実行結果の例
4. 実行結果の例

上記のコードを実行し、/userにアクセスすると、設定されたデータがビューに表示されます。以下はその出力の例です。


ユーザー名: 太郎
メッセージ: こんにちは、Spring MVCの世界へ!

5. 応用編:複数のデータを追加する

5. 応用編:複数のデータを追加する
5. 応用編:複数のデータを追加する

addObjectメソッドを使えば、複数のデータを一度に追加することも可能です。以下はその例です。


@GetMapping("/dashboard")
public ModelAndView dashboard() {
    ModelAndView modelAndView = new ModelAndView("dashboardView");
    modelAndView.addObject("title", "ダッシュボード");
    modelAndView.addObject("userCount", 120);
    modelAndView.addObject("activeSessions", 35);
    return modelAndView;
}

このコードでは、titleuserCountactiveSessionsの3つのデータが追加されています。

6. よくある質問

6. よくある質問
6. よくある質問

Q: addObjectメソッドで追加するデータの型に制限はありますか?

A: 制限はありません。任意のJavaオブジェクトを渡すことができます。ただし、ビュー側で正しく扱うためには、そのデータをテンプレートエンジンで適切に処理する必要があります。

Q: ModelAndViewを使わずにデータを渡す方法はありますか?

A: はい、SpringではModelインターフェースやRedirectAttributesを使用する方法もあります。ただし、ModelAndViewはビュー名とデータをまとめて扱える点で便利です。

7. まとめ

7. まとめ
7. まとめ

SpringのModelAndViewクラスとaddObjectメソッドについて学んできました。ModelAndViewは、コントローラーからビュー名とデータを一緒に管理するための便利なクラスであり、addObjectメソッドを使用することで、ビューに渡すデータを簡単に設定できます。

特に、動的なビューの作成や、複数のデータを渡す必要がある場合に、このクラスとメソッドを利用することで、開発がより効率的になります。また、テンプレートエンジンとの組み合わせによって、データを柔軟にレンダリングできる点も大きな特徴です。

以下に、まとめとして簡単なコード例を記載します。


@GetMapping("/summary")
public ModelAndView summary() {
    ModelAndView modelAndView = new ModelAndView("summaryView");
    modelAndView.addObject("title", "Springの基本");
    modelAndView.addObject("description", "ModelAndViewとaddObjectメソッドの活用例です。");
    return modelAndView;
}

上記のコードでは、ビュー名としてsummaryViewを設定し、タイトルと説明をデータとして渡しています。この基本的な使い方を応用して、より複雑なアプリケーションにも対応できます。

先生と生徒の振り返り会話

生徒

ModelAndViewクラスとaddObjectメソッドを使うことで、データを簡単にビューに渡せることがわかりました!」

先生

「その通りです。これらを使えば、コントローラーでのデータ管理が非常に効率的になりますね。」

生徒

「次は、テンプレートエンジンとの組み合わせを試してみたいです!」

先生

「ぜひ!ThymeleafやJSPを使えば、ビューの構築がさらに楽しくなりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

SpringのModelAndViewクラスはどのような場面で使いますか?

SpringのModelAndViewクラスは、コントローラーからビュー名とデータを同時に管理したいときに使います。特に、動的にデータをビューに渡す必要がある場合に便利です。

addObjectメソッドで複数のデータを渡すことはできますか?

はい、できます。addObjectメソッドを複数回呼び出して、異なるキーと値のペアを追加することで、複数のデータをビューに渡すことが可能です。

addObjectメソッドで渡すデータはどんな型でも良いですか?

はい、addObjectメソッドでは任意のJavaオブジェクトを渡すことができます。ただし、ビュー側で正しく処理されるように、テンプレートエンジンの対応を確認してください。

ModelAndViewクラスを使わずにデータを渡す方法はありますか?

はい、SpringではModelインターフェースやRedirectAttributesを使うことで、ModelAndViewを使用せずにデータを渡すことができます。

addObjectメソッドを使う場合、ビュー名を動的に変更できますか?

はい、setViewNameメソッドを併用すれば、条件に応じてビュー名を動的に変更しながらaddObjectでデータを渡すことが可能です。

Springのテンプレートエンジンには何がありますか?

Springでよく使用されるテンプレートエンジンには、Thymeleaf、JSP、Freemarker、Velocityなどがあります。初心者にはThymeleafがわかりやすいでしょう。

Spring MVCでビューに渡すデータの管理方法は?

ModelAndViewクラスを使う方法が一般的ですが、シンプルなケースではModelインターフェースを使うこともできます。状況に応じて使い分けましょう。

Spring BootでもModelAndViewは使えますか?

はい、Spring BootでもModelAndViewクラスは使用可能です。Spring BootはMVCの設定を簡素化するため、すぐに利用できます。

ビュー名に間違いがある場合、どうなりますか?

指定されたビュー名が存在しない場合、Springはエラーをスローします。テンプレートエンジンの設定とビュー名が一致していることを確認してください。

テンプレートエンジンとModelAndViewの連携例を教えてください。

テンプレートエンジンでの連携では、addObjectでデータを渡し、テンプレート内でそのデータを変数として使用します。例えば、Thymeleafでは${variableName}の形式でデータを表示できます。

Springの学習を効率化したい方へ

この記事の内容をもっと深く知るには、以下の入門書が最適です。

Spring Framework超入門をAmazonで見る
カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「StartingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「NotLike」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Like」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.3
Java&Spring記事人気No3
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.4
Java&Spring記事人気No4
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.5
Java&Spring記事人気No5
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.6
Java&Spring記事人気No6
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説