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

Javaの@Controllerアノテーションを完全ガイド!初心者でもわかるSpringの使い方

Springの@Controllerアノテーション
Springの@Controllerアノテーション

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

生徒

「JavaのSpringで、@Controllerってどう使うんですか?」

先生

「Spring Frameworkで@@Controllerアノテーションは、主にWebアプリケーションの開発で使われるとても重要な機能なんですよ。」

生徒

「@Controllerを使うと、どんなことができるんですか?」

先生

「@Controllerは、ユーザーからのリクエストを受け取って、それに応じた処理を行うクラスやメソッドを定義するときに使われます。では、具体的な使い方を見ていきましょう!」

1. @Controllerアノテーションとは?

1. @Controllerアノテーションとは?
1. @Controllerアノテーションとは?

@Controllerアノテーションは、JavaのSpring Frameworkにおいて、Webアプリケーションの構築に使われる特別なアノテーションです。Webアプリケーションでは、ユーザーがブラウザを通じてサーバーにリクエストを送りますが、@Controllerを使うことで、そのリクエストを適切な処理に振り分けることができます。

具体的には、@Controllerがつけられたクラスがリクエストを受け取る「窓口」となり、リクエストに応じたレスポンスを返す役割を担います。

2. @Controllerの基本的な使い方

2. @Controllerの基本的な使い方
2. @Controllerの基本的な使い方

まず、@Controllerを使う際にはSpringプロジェクトを作成し、@Controllerアノテーションをつけたクラスを作成します。次のコードは、@Controllerアノテーションの簡単な使い方を示しています。


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @RequestMapping("/hello")
    @ResponseBody
    public String sayHello() {
        return "Hello, Spring!";
    }
}

上記の例では、@ControllerアノテーションがHelloControllerクラスについており、@RequestMapping("/hello")/helloというURLに対応した処理を指定しています。このクラスにアクセスすると、sayHelloメソッドが実行され、"Hello, Spring!"という文字列が返されます。

3. @RequestMappingアノテーションとの組み合わせ

3. @RequestMappingアノテーションとの組み合わせ
3. @RequestMappingアノテーションとの組み合わせ

@Controllerを使う際は、@RequestMappingアノテーションも頻繁に使います。@RequestMappingを用いることで、特定のURLに対するリクエストを特定のメソッドに関連付けることができます。

例えば、上記の/helloの他にも、以下のように異なるURLパターンを使うことができます。


@Controller
public class MultiController {

    @RequestMapping("/home")
    @ResponseBody
    public String home() {
        return "This is the Home Page";
    }

    @RequestMapping("/about")
    @ResponseBody
    public String about() {
        return "This is the About Page";
    }
}

上記のコードでは、/homeにアクセスすると"Home Page"が、/aboutにアクセスすると"About Page"が表示されるようになっています。

4. @ResponseBodyアノテーションの役割

4. @ResponseBodyアノテーションの役割
4. @ResponseBodyアノテーションの役割

Springの@@Controllerを使用する際には、@ResponseBodyアノテーションもよく併用されます。@ResponseBodyは、メソッドの返り値を直接HTTPレスポンスの本文として返すことを示します。

例えば、@ResponseBodyがない場合は、リターンされた文字列はビュー名として扱われますが、@ResponseBodyがあることでその文字列がそのままレスポンスとしてブラウザに表示されます。

5. @Controllerと@RestControllerの違い

5. @Controllerと@RestControllerの違い
5. @Controllerと@RestControllerの違い

@Controllerと似たアノテーションとして@@RestControllerがあります。@@RestControllerは@@Controller@ResponseBodyを組み合わせたもので、特にREST APIの開発で便利です。

通常の@@Controllerでは@ResponseBodyをメソッドごとに明示する必要がありますが、@@RestControllerを使うと、全てのメソッドに@ResponseBodyが適用されるため、シンプルに記述できます。


import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class GreetingController {

    @RequestMapping("/greeting")
    public String greeting() {
        return "Hello, this is a RESTful response!";
    }
}

このように、@RestControllerはJSONデータなどを返すAPIを作成するときに役立ちます。

6. @Controllerを活用したWebアプリケーションの開発例

6. @Controllerを活用したWebアプリケーションの開発例
6. @Controllerを活用したWebアプリケーションの開発例

それでは、@Controllerを用いたWebアプリケーション開発の簡単な例を紹介します。次のコードは、ユーザーからのリクエストに対してフォームの入力内容を返すシンプルなアプリケーションです。


@Controller
public class FormController {

    @GetMapping("/form")
    public String showForm() {
        return "form";  // form.htmlビューを表示
    }

    @PostMapping("/submit")
    @ResponseBody
    public String submitForm(@RequestParam("name") String name) {
        return "Hello, " + name + "!";
    }
}

上記のコードでは、showFormメソッドでformビューが表示され、ユーザーがフォームを入力して送信すると、submitFormメソッドが呼ばれ、入力された名前が表示されます。

7. @RequestParamと@PathVariableでパラメータを受け取る

7. @RequestParamと@PathVariableでパラメータを受け取る
7. @RequestParamと@PathVariableでパラメータを受け取る

@Controllerを使ったWebアプリケーションでは、URLやフォームから送られてくるパラメータを受け取って処理することが非常に重要です。Springでは、@RequestParam@PathVariable という2つのアノテーションを使って、簡単に値を取得することができます。

@RequestParamは、クエリパラメータやフォームの入力値を取得するときに使います。例えば、/search?keyword=spring のようなURLから keyword の値を取得できます。


@Controller
public class SearchController {

    @GetMapping("/search")
    @ResponseBody
    public String search(@RequestParam("keyword") String keyword) {
        return "検索キーワードは: " + keyword;
    }
}

一方、@PathVariableはURLの一部を変数として受け取りたいときに使います。例えば、/users/1/users/2 のように、IDごとにページを変えたい場合に便利です。


@Controller
public class UserController {

    @GetMapping("/users/{id}")
    @ResponseBody
    public String getUser(@PathVariable("id") Long id) {
        return "ユーザーID: " + id;
    }
}

このように、@RequestParamは「?」以降のパラメータ、@PathVariableはURLパスの一部を受け取るために使われます。@Controllerと組み合わせることで、柔軟なリクエスト処理が可能になります。

8. @Controllerからビューへデータを渡す方法(Modelの活用)

8. @Controllerからビューへデータを渡す方法(Modelの活用)
8. @Controllerからビューへデータを渡す方法(Modelの活用)

@Controllerは単に文字列を返すだけではなく、HTMLテンプレート(ビュー)にデータを渡して画面を表示する役割も担います。Springでは、ModelModelMap を使ってビューに値を渡すのが一般的です。

たとえば、Thymeleafなどのテンプレートエンジンと組み合わせる場合、@Controllerで用意したデータをHTMLに表示することができます。


@Controller
public class ProfileController {

    @GetMapping("/profile")
    public String showProfile(Model model) {
        model.addAttribute("name", "Taro");
        model.addAttribute("age", 25);
        return "profile";  // profile.html を表示
    }
}

上記の例では、model.addAttribute メソッドを使って nameage というデータをビューに渡しています。テンプレート側(例:profile.html)では、次のようにして受け取った値を表示します。


<p>名前:<span th:text="${name}"></span></p>
<p>年齢:<span th:text="${age}"></span></p>

このように、@Controllerは「リクエストを受け取る窓口」であると同時に、「ビューへデータを渡す橋渡し役」でもあります。ビジネスロジックはサービスクラスに分けつつ、@Controllerでは画面との連携に集中させると、より読みやすく保守しやすいSpringアプリケーションを作ることができます。

まとめ

まとめ
まとめ

今回は、JavaのSpring Frameworkにおける@Controllerアノテーションについて詳しく解説しました。初心者の方でも理解できるように、基本的な使い方から@RequestMapping@ResponseBody、さらには@RestControllerとの違いまでを学びました。@Controllerは、Webアプリケーション開発においてリクエストを受け取り、それに応じた処理を行うための重要な役割を果たします。

Web開発でのリクエストの受け口となる@Controllerは、URLごとの処理を@RequestMappingで紐づけ、@ResponseBodyでレスポンスを直接返す際に使います。これらを活用することで、柔軟かつ効率的にWebアプリケーションを構築できます。また、REST API開発に特化した@RestControllerも合わせて覚えておくと、API開発時のコーディングが非常にシンプルになります。

さらに@Controllerを利用したWebアプリケーションの具体例も紹介し、ユーザーからの入力を受け取って動的に応答を返す方法を確認しました。これらの知識があると、Spring Frameworkを使用したWeb開発がスムーズに進みます。是非、実際にコードを書いて動作を確認しながら、理解を深めていきましょう。

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

生徒

「@Controllerについて学んだことで、Springでのリクエストの処理がイメージしやすくなりました!」

先生

「そうですね。特に@RequestMappingと組み合わせて、URLごとに異なるメソッドで処理を振り分けることができますから、Webアプリの設計がしやすくなります。」

生徒

@ResponseBodyも便利でしたね。メソッドの返り値を直接レスポンスとして返せるのは効率的だと思います。」

先生

「はい、APIやシンプルなレスポンスを返すときには特に便利です。JSONデータを返すことも可能ですし、API開発で役立つでしょう。」

生徒

「それから、@RestControllerを使うと、@ResponseBodyを省略できるのも便利ですね。REST APIを作るときには効率が上がりそうです!」

先生

「その通りです。API開発では@RestControllerが標準的に使われますから、REST APIを作成する際には迷わず使うと良いですよ。」

生徒

「実際にコードを書いて試してみることで、理解が深まりました!次はどの機能を勉強すればよいでしょうか?」

先生

「それでは次に、Springの依存性注入(DI)や@Service@Repositoryといった他のアノテーションについて学ぶと、Webアプリ全体の構成が理解しやすくなりますよ。」

生徒

「ありがとうございます!Springの知識をもっと深めていきたいと思います。」

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

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

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

JavaのSpring Frameworkで@Controllerとは何をするものですか?

@ControllerはJavaのSpring Frameworkにおいて、Webアプリケーションのリクエストを受け取って処理を行うクラスにつけるアノテーションで、ユーザーからのアクセスを適切なメソッドに振り分ける役割があります。

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
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.6
Java&Spring記事人気No6
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説