カテゴリ: SpringのWeb開発(Spring MVC) 更新日: 2025/12/11

@RequestMappingの基本を完全ガイド!初心者でもわかるルーティングの仕組み

@RequestMappingの基本(ルーティングの仕組み)
@RequestMappingの基本(ルーティングの仕組み)

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

新人

「先輩、Springで@RequestMappingってよく見かけるんですけど、これは何に使うんですか?」

先輩

@RequestMappingは、Spring MVCでルーティングを設定するためのアノテーションだよ。ユーザーがブラウザでアクセスしたURLを、適切な処理メソッドに振り分ける役割があるんだ。」

新人

「なるほど、URLと処理を結びつけるんですね。具体的にどうやって使うんですか?」

先輩

「それじゃあ、@RequestMappingの基本的な使い方を詳しく説明していこう!」

1. @RequestMappingとは?

1. @RequestMappingとは?
1. @RequestMappingとは?

@RequestMappingは、Spring FrameworkのMVC機能で使用されるアノテーションで、WebアプリケーションにおいてURLとコントローラ内の処理メソッドを結びつけるために使用されます。これにより、ユーザーがブラウザで特定のURLにアクセスしたときに、対応する処理を実行して適切なHTMLを返すことができます。

例えば、ユーザーが「http://localhost:8080/home」にアクセスすると「ホームページへようこそ!」と表示させたい場合、この@RequestMappingを使います。

このアノテーションは非常に柔軟で、GETやPOSTなどのHTTPメソッドを指定することもでき、同じURLでもリクエストの種類によって処理を変えることができます。

2. @RequestMappingの役割と基本的な使い方

2. @RequestMappingの役割と基本的な使い方
2. @RequestMappingの役割と基本的な使い方

ここでは、実際に@RequestMappingを使用して簡単なルーティングを設定し、Webページを表示する方法を解説します。開発環境はPleiadesを使用し、ビルドツールはGradleを利用します。

2.1 プロジェクトの作成方法(Pleiades使用)

  1. Pleiadesを起動し、新規Springプロジェクトを作成します。
  2. プロジェクト名を入力し、ビルドツールはGradleを選択します。
  3. 依存関係の設定画面で、Spring Webにチェックを入れて追加します。
  4. 「完了」をクリックし、プロジェクトを生成します。

2.2 コントローラクラスの作成

次に、URLのリクエストを受け取るコントローラクラスを作成します。以下は、ブラウザで/homeにアクセスすると「ホームページへようこそ!」というメッセージを表示する基本的な例です。


package com.example.demo.controller;

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

@Controller
public class HomeController {

    @RequestMapping("/home")
    public String home() {
        return "home";
    }
}

このコードのポイントは以下の通りです。

  • @Controller: クラスがコントローラであることを示します。
  • @RequestMapping("/home"): /homeへのリクエストをこのメソッドで処理します。
  • return "home": home.htmlというテンプレートを返します。

2.3 Viewファイルの作成

ルーティングが正しく設定されたら、画面に表示するHTMLファイルを作成します。以下の手順で作成してください。

  1. src/main/resources/templatesディレクトリを作成します。
  2. その中にhome.htmlというファイルを作成します。

以下がhome.htmlのサンプルコードです。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ホームページ</title>
</head>
<body>
    <h1>ホームページへようこそ!</h1>
</body>
</html>

2.4 アプリケーションの実行と確認

  1. Pleiadesで左側のパッケージエクスプローラーからDemoApplication.javaを右クリックします。
  2. 実行 > Spring Boot アプリケーションを選択して実行します。
  3. ブラウザでhttp://localhost:8080/homeにアクセスします。

正しく実行されると、以下のように画面に表示されます。


ホームページへようこそ!

2.5 注意点

  • HTMLファイルは必ずtemplatesフォルダ内に配置してください。
  • ファイル名は、コントローラのreturnで指定した名前と一致させる必要があります。
  • 実行前に、Pleiadesで依存関係が正しく追加されているか確認してください。

3. @RequestMappingを使った基本的なルーティング方法

3. @RequestMappingを使った基本的なルーティング方法
3. @RequestMappingを使った基本的なルーティング方法

@RequestMappingを使用することで、特定のURLへのアクセスに対して特定の処理を実行することができます。基本的なルーティングの考え方は、「URLパス」と「処理メソッド」を関連付けることです。これにより、ユーザーがWebブラウザでURLを入力すると、Springが対応する処理を実行して結果を返します。

例えば、ユーザーが/aboutというURLにアクセスしたときに、「このサイトについて」というページを表示させることができます。

3.1 単純なルーティングの例

以下は、/aboutというURLにアクセスした際に「このサイトについて」というページを表示させる例です。


package com.example.demo.controller;

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

@Controller
public class AboutController {

    @RequestMapping("/about")
    public String about() {
        return "about";
    }
}

次に、about.htmlファイルを作成します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>このサイトについて</title>
</head>
<body>
    <h1>このサイトについて</h1>
    <p>このWebアプリケーションはSpring MVCを使って作成されています。</p>
</body>
</html>

アプリケーションを起動し、ブラウザでhttp://localhost:8080/aboutにアクセスすると、以下のように表示されます。


このサイトについて
このWebアプリケーションはSpring MVCを使って作成されています。

4. HTTPメソッドごとの@RequestMappingの使い方(GET、POSTなど)

4. HTTPメソッドごとの@RequestMappingの使い方(GET、POSTなど)
4. HTTPメソッドごとの@RequestMappingの使い方(GET、POSTなど)

@RequestMappingはURLだけでなく、HTTPメソッドも指定してルーティングすることができます。これにより、同じURLでもリクエストの種類によって異なる処理を実行させることが可能です。

HTTPメソッドの主な種類は以下の通りです。

  • GET:データの取得に使用され、通常ブラウザからのURLアクセス時に使われます。
  • POST:データの送信に使用され、フォーム送信などで使用されます。

4.1 GETリクエストの処理

以下は、ブラウザから/helloにアクセスしたときに挨拶メッセージを表示するGETリクエストの例です。


package com.example.demo.controller;

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

@Controller
public class HelloController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String sayHello() {
        return "hello";
    }
}

次に、hello.htmlファイルを作成します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>挨拶ページ</title>
</head>
<body>
    <h1>こんにちは、Spring MVC!</h1>
</body>
</html>

実行後、ブラウザでhttp://localhost:8080/helloにアクセスすると、以下のように表示されます。


こんにちは、Spring MVC!

4.2 POSTリクエストの処理

次に、フォームからデータを送信するPOSTリクエストの例を紹介します。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class FormController {

    @RequestMapping(value = "/submit", method = RequestMethod.POST)
    public String submitForm(@RequestParam("name") String name, Model model) {
        model.addAttribute("message", "こんにちは、" + name + "さん!");
        return "result";
    }
}

次に、名前を入力するフォームを作成します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>名前入力フォーム</title>
</head>
<body>
    <h1>名前を入力してください</h1>
    <form action="/submit" method="post">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name" required>
        <button type="submit">送信</button>
    </form>
</body>
</html>

フォーム送信後に表示する結果ページを作成します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>挨拶結果</title>
</head>
<body>
    <h1 th:text="${message}">ここにメッセージが表示されます</h1>
</body>
</html>

ブラウザでhttp://localhost:8080/submitにアクセスしてフォームに名前を入力し、送信すると以下のように表示されます。


こんにちは、太郎さん!

5. 実際のコード例とその解説

5. 実際のコード例とその解説
5. 実際のコード例とその解説

ここでは、GETとPOSTを組み合わせた実践的なコード例を紹介します。ユーザーが名前を入力して挨拶を表示する簡単なアプリケーションを作成します。

5.1 コントローラクラスの作成


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class GreetingController {

    @RequestMapping(value = "/greeting", method = RequestMethod.GET)
    public String showForm() {
        return "greetingForm";
    }

    @RequestMapping(value = "/greeting", method = RequestMethod.POST)
    public String processForm(@RequestParam("name") String name, Model model) {
        model.addAttribute("greetingMessage", "ようこそ、" + name + "さん!");
        return "greetingResult";
    }
}

5.2 入力フォームの作成

greetingForm.htmlに以下の内容を記述します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>挨拶フォーム</title>
</head>
<body>
    <h1>名前を入力してください</h1>
    <form action="/greeting" method="post">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name" required>
        <button type="submit">送信</button>
    </form>
</body>
</html>

5.3 結果表示ページの作成

greetingResult.htmlを作成し、以下の内容を記述します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>挨拶結果</title>
</head>
<body>
    <h1 th:text="${greetingMessage}">挨拶が表示されます</h1>
</body>
</html>

5.4 実行と確認

  1. Pleiadesでアプリケーションを実行します。
  2. ブラウザでhttp://localhost:8080/greetingにアクセスし、名前を入力します。
  3. 送信をクリックすると、挨拶メッセージが表示されます。

実行結果は以下のように表示されます。


ようこそ、花子さん!

6. 実践!簡単なWebアプリケーションの作成手順

6. 実践!簡単なWebアプリケーションの作成手順
6. 実践!簡単なWebアプリケーションの作成手順

ここでは、@RequestMappingを使用して「お問い合わせフォーム」を実装するWebアプリケーションを作成します。ユーザーがフォームに入力し、送信すると、確認ページにデータが表示されるシンプルな仕組みです。

6.1 プロジェクトの作成(Pleiades使用)

  1. Pleiadesを起動し、新規Springプロジェクトを作成します。
  2. プロジェクト名をcontact-formと入力し、ビルドツールはGradleを選択します。
  3. 依存関係の設定画面でSpring Webにチェックを入れて追加します。
  4. 完了ボタンをクリックしてプロジェクトを生成します。

6.2 コントローラクラスの作成

ContactControllerを作成し、GETリクエストでフォーム表示、POSTリクエストでデータ処理を行います。


package com.example.contactform.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class ContactController {

    @RequestMapping(value = "/contact", method = RequestMethod.GET)
    public String showForm() {
        return "contactForm";
    }

    @RequestMapping(value = "/contact", method = RequestMethod.POST)
    public String submitForm(
        @RequestParam("name") String name,
        @RequestParam("email") String email,
        @RequestParam("message") String message,
        Model model) {

        model.addAttribute("name", name);
        model.addAttribute("email", email);
        model.addAttribute("message", message);
        return "contactResult";
    }
}

6.3 Viewファイルの作成

6.3.1 入力フォーム(contactForm.html)

以下のHTMLファイルをsrc/main/resources/templatesに作成します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>お問い合わせフォーム</title>
</head>
<body>
    <h1>お問い合わせ</h1>
    <form action="/contact" method="post">
        <label for="name">名前:</label><br>
        <input type="text" id="name" name="name" required><br><br>

        <label for="email">メールアドレス:</label><br>
        <input type="email" id="email" name="email" required><br><br>

        <label for="message">メッセージ:</label><br>
        <textarea id="message" name="message" rows="5" required></textarea><br><br>

        <button type="submit">送信</button>
    </form>
</body>
</html>

6.3.2 結果表示ページ(contactResult.html)

送信後に表示される確認ページを作成します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>送信完了</title>
</head>
<body>
    <h1>お問い合わせ内容確認</h1>
    <p>名前: <span th:text="${name}"></span></p>
    <p>メールアドレス: <span th:text="${email}"></span></p>
    <p>メッセージ: <span th:text="${message}"></span></p>
    <p>お問い合わせありがとうございました!</p>
</body>
</html>

6.4 アプリケーションの実行と確認

  1. PleiadesでContactFormApplication.javaを右クリックし、実行 > Spring Boot アプリケーションを選択。
  2. ブラウザでhttp://localhost:8080/contactにアクセス。
  3. 名前、メール、メッセージを入力して送信。

送信後、以下の画面が表示されます。


お問い合わせ内容確認
名前: 山田太郎
メールアドレス: yamada@example.com
メッセージ: お問い合わせ内容を確認しました。
お問い合わせありがとうございました!

7. よくあるエラーとその解決方法

7. よくあるエラーとその解決方法
7. よくあるエラーとその解決方法

初心者がSpring MVCで@RequestMappingを使う際に遭遇しやすいエラーと解決策を紹介します。

7.1 404エラー(ページが見つからない)

原因: URLの指定ミスや、コントローラ内の@RequestMappingパスが間違っている場合に発生します。

解決方法:

  • URLパスとメソッド内の@RequestMappingが一致しているか確認。
  • Viewファイルがtemplatesディレクトリに正しく配置されているか確認。
  • ファイル名のスペルミスをチェック。

7.2 405エラー(HTTPメソッドが許可されていない)

原因: GETメソッドでPOST専用のURLにアクセスした場合などに発生します。

解決方法:

  • @RequestMappingmethod属性が正しく設定されているか確認。
  • フォームのmethod="post"が正しいかチェック。

7.3 500エラー(内部サーバーエラー)

原因: コントローラ内でのNullPointerExceptionや、Modelに渡すデータが不足している場合に発生します。

解決方法:

  • コントローラで必要な値が正しく渡されているか確認。
  • Viewで参照している変数がmodel.addAttribute()で追加されているか確認。

8. 次のステップと今後の学習ポイント

8. 次のステップと今後の学習ポイント
8. 次のステップと今後の学習ポイント

@RequestMappingを学んだ次のステップとして、以下のトピックに進むことでより深い理解が得られます。

  • @GetMapping@PostMappingの使用: @RequestMappingの簡略版として、より読みやすいコードが書けます。
  • バリデーション: フォーム入力値のチェック方法を学びましょう。
  • セッション管理: ログイン情報の保持やユーザー情報の保存方法を学べます。
  • エラーハンドリング: @ExceptionHandlerを使った例外処理も重要です。

次の記事では、@GetMapping@PostMappingを活用したルーティングの簡略化方法を解説します。実際のWeb開発では、これらのアノテーションを活用して、さらに読みやすく保守性の高いコードを書けるようにしましょう。

まとめ

まとめ
まとめ

本記事では、Spring MVCでルーティングを制御するための基本アノテーションである@RequestMappingについて、基礎から実践まで幅広く解説しました。@RequestMappingは、URLと処理メソッドを結び付ける重要な役割を持ち、GET・POSTといったHTTPメソッドを使い分けることで、より柔軟なWebアプリケーションの構築が可能となります。実際に、@RequestMapping("/home")のようにパスを指定することで、HTML画面との連携や処理の実行が行えるため、初心者でも視覚的に理解しやすい仕組みです。

また、実際のアプリケーション作成を通して、ルーティングだけでなくModelオブジェクトを使ったデータの受け渡し、HTMLフォームの作成、POSTリクエストでの値送信、そして結果画面での表示まで、Web開発の一連の流れを体験することができました。特に、入力フォームからのPOST送信処理では、@RequestParamで値を受け取り、model.addAttribute()でViewにデータを渡す方法は、Spring開発における基礎知識として重要です。

さらに、@RequestMappingに指定するHTTPメソッドの違いによって、405エラーなどのトラブルが発生することも学びました。method = RequestMethod.GETPOSTの指定を正確に理解することで、不要なエラーを回避し、開発の効率を高めることができます。

最後に、お問い合わせフォームを題材にした実践例では、GETとPOSTの両方の使い分け方や、入力→送信→確認画面という流れを通して、@RequestMappingの応用方法も習得できたはずです。このように、ルーティングの基礎を理解することで、今後のWebアプリケーション開発における重要な土台が築かれます。

以下に、POST送信で使用したサンプルコードを再掲します。振り返りに活用してください。


@RequestMapping(value = "/contact", method = RequestMethod.POST)
public String submitForm(
    @RequestParam("name") String name,
    @RequestParam("email") String email,
    @RequestParam("message") String message,
    Model model) {

    model.addAttribute("name", name);
    model.addAttribute("email", email);
    model.addAttribute("message", message);
    return "contactResult";
}
先生と生徒の振り返り会話

新人

「今日の記事で、@RequestMappingがルーティングの要だってわかりました!GETとPOSTを使い分ける方法も理解できました。」

先輩

「その通り!特に、method属性の指定があることで、URLは同じでも処理を切り分けられるのがポイントだったね。POST処理では@RequestParamで値を受け取るのも覚えておこう。」

新人

「はい!あと、404や405のエラーが出る原因とその解決方法もすごく参考になりました。今まで意味がわからず困っていたんです。」

先輩

「よかった。それも理解しておけば、エラーが出たときに焦らず対処できるよ。次は@GetMapping@PostMappingについても勉強してみよう!」

新人

「はい、頑張ります!まずは@RequestMappingで基本をしっかり固めて、実際のアプリ開発にも挑戦していきます!」

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

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

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

Springの@RequestMappingアノテーションって何のために使うの?

@RequestMappingは、Spring FrameworkでURLとメソッドを関連付けて、Webリクエストを処理するために使うアノテーションです。ルーティングの役割を担い、特定のURLに対して特定の処理を実行させることができます。

Spring Bootで@RequestMappingを使うときの基本的な書き方を知りたい

基本的には@Controllerでクラスを定義し、その中で@RequestMapping("/パス")と書いて対応するメソッドを実装します。メソッドではView名(HTMLテンプレート名)をreturnする形で画面に表示されます。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
SpringのWeb開発(Spring MVC)
Spring MVCで @Size を使って文字列長を制限する方法|フォームバリデーションを初心者向けに解説
New2
SpringのWeb開発(Spring MVC)
Spring MVCの数値チェック:@Min / @Max で数値範囲を検証する方法を初心者向けに解説
New3
SpringのWeb開発(Spring MVC)
Spring MVCで使う @Valid と @NotNull の基礎(Spring Bootフォームチェックの基本)を初心者向けに解説
New4
Thymeleaf
Thymeleafの基本的な書き方を完全ガイド!初心者向けサンプル解説
人気記事
No.1
Java&Spring記事人気No1
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.2
Java&Spring記事人気No2
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み
No.3
Java&Spring記事人気No3
Springの基本
Spring Bootの環境変数の設定方法をやさしく解説!初心者向けapplication.propertiesの使い方
No.4
Java&Spring記事人気No4
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.5
Java&Spring記事人気No5
Springの基本
Springの@Autowiredとは?依存性注入(DI)を初心者向けに解説
No.6
Java&Spring記事人気No6
SpringのAPI開発(REST & GraphQL)
REST APIの主要なHTTPメソッド(GET, POST, PUT, DELETE)を初心者向けにわかりやすく解説!
No.7
Java&Spring記事人気No7
SpringのWeb開発(Spring MVC)
@Controller と @RestController の違いを完全解説!初心者向けSpring MVC入門
No.8
Java&Spring記事人気No8
SpringのAPI開発(REST & GraphQL)
REST APIのステータスコード一覧と適切な使い方