カテゴリ: SpringのWeb開発(Spring MVC) 更新日: 2026/01/13

@RequestMappingを使ったルーティング(入門)完全ガイド!初心者でもわかるSpring MVCの基本

@RequestMappingを使ったルーティング(入門)
@RequestMappingを使ったルーティング(入門)

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

新人

「SpringでWebページを作るときに、URLの振り分けってどうやるんですか?」

先輩

「それは@RequestMappingを使ってルーティングを設定するんだ。簡単にURLと処理を結びつけられるんだよ。」

新人

「なるほど!具体的にどう書くんですか?」

先輩

「じゃあ、これから基本的な使い方を説明していくね!」

1. @RequestMappingとは?

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

@RequestMappingは、Spring MVCでルーティングを設定するためのアノテーションです。これを使うことで、特定のURLにアクセスしたときにどのメソッドを実行するかを指定できます。例えば、ユーザーがブラウザで/helloにアクセスすると、特定の処理を実行させることができます。

開発環境としては、pleiadesを使用し、ビルドツールにはGradleを使います。プロジェクト作成時に、pleiadesの機能で依存関係も簡単に追加できます。

2. ルーティングとは何か?

2. ルーティングとは何か?
2. ルーティングとは何か?

ルーティングとは、Webアプリケーションで「ユーザーが指定したURLに対して、どの処理を実行するか」を決める仕組みのことです。例えば、Webサイトで「/home」にアクセスするとホーム画面が表示され、「/login」ではログイン画面が表示されるのはルーティングのおかげです。

Spring MVCでは、ルーティングを簡単に設定できるのが特徴です。これにより、開発効率が向上し、URLと処理の対応が直感的に理解できます。

3. なぜ@RequestMappingを使うのか?

3. なぜ@RequestMappingを使うのか?
3. なぜ@RequestMappingを使うのか?

@RequestMappingを使用する理由は、以下のようなメリットがあるからです。

  • シンプルなURL制御:URLと処理の関連付けが簡単で直感的。
  • コードの見やすさ:アノテーションを使うことで、どのメソッドがどのURLに対応するか一目瞭然。
  • 柔軟な設定:GETやPOSTなど、HTTPメソッドごとの処理を指定できる。

以下に、簡単なコード例を示します。@Controllerを使用し、@RestControllerは使わないのでご注意ください。


package com.example.demo.controller;

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

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "こんにちは、Spring MVC!");
        return "hello"; // hello.htmlを表示
    }
}

このコードでは、ユーザーがブラウザで/helloにアクセスすると、sayHelloメソッドが実行され、ビューとしてhello.htmlが表示されます。また、モデルにメッセージを追加して、画面上に「こんにちは、Spring MVC!」と表示させています。

次に、HTMLファイルであるhello.htmlのサンプルを見てみましょう。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Helloページ</title>
</head>
<body>
    <h1 th:text="${message}">デフォルトメッセージ</h1>
</body>
</html>

このHTMLでは、th:text="${message}"を使うことで、Java側で追加したメッセージを画面に表示できます。アクセスすると次のような画面が表示されます。


こんにちは、Spring MVC!

これで、基本的な@RequestMappingを使ったルーティングが理解できたと思います。次の記事では、パス変数の利用方法やさらに具体的な使い方を解説します!

4. @RequestMappingの基本的な使い方(GETリクエストを処理する方法)

4. @RequestMappingの基本的な使い方(GETリクエストを処理する方法)
4. @RequestMappingの基本的な使い方(GETリクエストを処理する方法)

@RequestMappingを使うと、GETリクエストに対する処理を簡単に実装できます。ユーザーがブラウザでURLにアクセスしたとき、そのURLに対応するメソッドが実行されます。以下に、基本的なGETリクエストの処理方法を示します。


package com.example.demo.controller;

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

@Controller
public class GreetingController {

    @RequestMapping("/greet")
    public String greet(Model model) {
        model.addAttribute("message", "ようこそ、Spring MVCの世界へ!");
        return "greet"; // greet.htmlを表示
    }
}

上記のコードでは、/greetというURLにアクセスするとgreetメソッドが呼び出され、greet.htmlというビューが表示されます。モデルに追加されたメッセージがビューで表示されます。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>挨拶ページ</title>
</head>
<body>
    <h1 th:text="${message}">デフォルトメッセージ</h1>
</body>
</html>


ようこそ、Spring MVCの世界へ!

このように、GETリクエストを処理することで、ユーザーが指定したURLにアクセスした際にメッセージを表示することができます。

5. パス変数の使い方(URLにパラメータを渡す方法)

5. パス変数の使い方(URLにパラメータを渡す方法)
5. パス変数の使い方(URLにパラメータを渡す方法)

次に、URLに変数を含めてパラメータを渡す方法を紹介します。これにより、URLに動的な値を埋め込み、異なるデータを処理することが可能になります。@PathVariableを使うことで、URL内の一部をメソッドの引数として受け取れます。


package com.example.demo.controller;

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

@Controller
public class UserController {

    @RequestMapping("/user/{name}")
    public String userProfile(@PathVariable("name") String name, Model model) {
        model.addAttribute("username", name);
        return "user-profile"; // user-profile.htmlを表示
    }
}

このコードでは、ユーザーが/user/太郎にアクセスするとuserProfileメソッドが実行され、URL内の"太郎"がname引数に渡されます。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ユーザープロファイル</title>
</head>
<body>
    <h1 th:text="'ユーザー名: ' + ${username}">ユーザー名: デフォルト</h1>
</body>
</html>


ユーザー名: 太郎

このようにパス変数を使うことで、URLから直接値を取得し、個別のユーザーページなどを動的に生成できます。

6. 実際に簡単なルーティングを実装してみよう(具体的なコード例)

6. 実際に簡単なルーティングを実装してみよう(具体的なコード例)
6. 実際に簡単なルーティングを実装してみよう(具体的なコード例)

これまで学んだ内容を踏まえて、複数のルーティングを持つ簡単なWebアプリケーションを実装してみましょう。以下のコードは、挨拶ページとユーザープロファイルページを切り替える例です。


package com.example.demo.controller;

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

@Controller
public class MainController {

    @RequestMapping("/")
    public String home(Model model) {
        model.addAttribute("message", "ホームページへようこそ!");
        return "home"; // home.htmlを表示
    }

    @RequestMapping("/greet")
    public String greet(Model model) {
        model.addAttribute("message", "こんにちは!今日も頑張りましょう。");
        return "greet";
    }

    @RequestMapping("/user/{name}")
    public String userProfile(@PathVariable("name") String name, Model model) {
        model.addAttribute("username", name);
        return "user-profile";
    }
}

各URLにアクセスした際に表示されるHTMLファイルの例を以下に示します。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ホーム</title>
</head>
<body>
    <h1 th:text="${message}">デフォルトメッセージ</h1>
    <nav>
        <ul>
            <li><a href="/greet">挨拶ページへ</a></li>
            <li><a href="/user/花子">花子のプロフィール</a></li>
        </ul>
    </nav>
</body>
</html>


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

このようにルーティングを組み合わせることで、複数ページへの遷移がスムーズに行えます。各リンクをクリックすることで、それぞれのページが表示されることを確認できます。

7. POSTリクエストの処理方法(フォーム送信の受け取り方)

7. POSTリクエストの処理方法(フォーム送信の受け取り方)
7. POSTリクエストの処理方法(フォーム送信の受け取り方)

これまでGETリクエストを中心に解説してきましたが、Webアプリケーション開発においては、ユーザーがフォームからデータを送信する際にPOSTリクエストを使用することが一般的です。Spring MVCでは、@RequestMappingを使用してPOSTリクエストも簡単に処理できます。

以下は、名前を入力して送信するフォームの例です。ユーザーが名前を入力して送信ボタンを押すと、POSTリクエストが送信されます。


package com.example.demo.controller;

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

@Controller
public class FormController {

    @RequestMapping(value = "/form", method = RequestMethod.GET)
    public String showForm() {
        return "form"; // form.htmlを表示
    }

    @RequestMapping(value = "/submit", method = RequestMethod.POST)
    public String submitForm(@RequestParam("name") String name, Model model) {
        model.addAttribute("username", name);
        return "result"; // result.htmlを表示
    }
}

このコードでは、/formへのGETリクエストでフォーム画面が表示され、/submitへのPOSTリクエストで入力された名前を受け取って結果ページに表示します。


<!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="'こんにちは、' + ${username} + 'さん!'">こんにちは!</h1>
</body>
</html>


こんにちは、山田さん!

このように、@RequestMappingmethod = RequestMethod.POSTを指定することで、フォームから送信されたデータを簡単に受け取ることができます。

8. @RequestMappingのオプション設定(メソッド、ヘッダー、パラメータの指定方法)

8. @RequestMappingのオプション設定(メソッド、ヘッダー、パラメータの指定方法)
8. @RequestMappingのオプション設定(メソッド、ヘッダー、パラメータの指定方法)

@RequestMappingは単純なルーティング以外にも、さまざまなオプションを指定することができます。ここでは、リクエストメソッドの指定、ヘッダーの条件、リクエストパラメータの指定方法について解説します。

8.1 メソッドの指定

特定のHTTPメソッドにのみ対応させたい場合、method属性を使用します。例えば、以下のようにGETとPOSTに分けた処理が可能です。


@RequestMapping(value = "/data", method = RequestMethod.GET)
public String getData(Model model) {
    model.addAttribute("info", "これはGETリクエストです。");
    return "data";
}

@RequestMapping(value = "/data", method = RequestMethod.POST)
public String postData(Model model) {
    model.addAttribute("info", "これはPOSTリクエストです。");
    return "data";
}

8.2 ヘッダーの条件指定

特定のヘッダーが含まれるリクエストのみ処理したい場合は、headers属性を使用します。


@RequestMapping(value = "/header", headers = "key=secret")
public String headerCheck(Model model) {
    model.addAttribute("info", "ヘッダー条件を満たしました。");
    return "header";
}

8.3 リクエストパラメータの指定

特定のリクエストパラメータがある場合のみ処理したい場合は、params属性を使用します。


@RequestMapping(value = "/param", params = "mode=test")
public String paramCheck(Model model) {
    model.addAttribute("info", "パラメータ条件を満たしました。");
    return "param";
}

これらのオプションを活用することで、より柔軟なルーティング設定が可能になります。

9. 実践!簡単なWebアプリケーションを作成してみよう(まとめと実践例)

9. 実践!簡単なWebアプリケーションを作成してみよう(まとめと実践例)
9. 実践!簡単なWebアプリケーションを作成してみよう(まとめと実践例)

最後に、これまでの内容を活用して、簡単なユーザー登録アプリケーションを作成してみましょう。ユーザーが名前を入力して登録し、その後登録完了画面を表示する流れを実装します。


package com.example.demo.controller;

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

@Controller
public class RegistrationController {

    @RequestMapping(value = "/register", method = RequestMethod.GET)
    public String showRegistrationForm() {
        return "register"; // register.htmlを表示
    }

    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public String processRegistration(@RequestParam("name") String name, Model model) {
        model.addAttribute("username", name);
        return "success"; // success.htmlを表示
    }
}

register.html(登録フォーム)


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ユーザー登録</title>
</head>
<body>
    <h1>ユーザー登録フォーム</h1>
    <form action="/register" method="post">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name" required>
        <button type="submit">登録</button>
    </form>
</body>
</html>

success.html(登録完了画面)


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>登録完了</title>
</head>
<body>
    <h1 th:text="${username} + 'さん、登録が完了しました!'">登録が完了しました!</h1>
</body>
</html>


山田さん、登録が完了しました!

このアプリケーションでは、ユーザーが名前を入力して送信すると、その名前が次の画面に表示されます。これにより、@RequestMappingを使用したルーティングの基本から応用までを学ぶことができます。

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

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

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

@RequestMappingとは何ですか?Spring MVCでどう使うのか教えてください

@RequestMappingはSpring MVCでルーティングを設定するためのアノテーションです。Webアプリケーションにおいて、特定のURLにアクセスしたときにどの処理を行うかを指定できます。URLとJavaメソッドを結びつけるため、直感的で管理しやすいのが特徴です。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
Thymeleaf
Thymeleaf 変数の定義方法をわかりやすく解説|初心者向けテンプレート入門
New2
Thymeleaf
Thymeleaf th:attrで属性をまとめて設定する方法を初心者向けに解説
New3
Thymeleaf
ThymeleafとJavaScriptのonclickで引数を渡す方法を完全解説!初心者でもわかる値の受け渡し
New4
Thymeleaf
Thymeleaf javascript inlineの書き方と使い方を完全ガイド!初心者でもわかるテンプレートエンジンとJavaScript連携
人気記事
No.1
Java&Spring記事人気No1
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.2
Java&Spring記事人気No2
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.3
Java&Spring記事人気No3
SpringのWeb開発(Spring MVC)
Spring MVC入門(概要とアーキテクチャ)
No.4
Java&Spring記事人気No4
SpringのAPI開発(REST & GraphQL)
REST APIの主要なHTTPメソッド(GET, POST, PUT, DELETE)を初心者向けにわかりやすく解説!
No.5
Java&Spring記事人気No5
SpringのDB操作
findByXxx, existsByXxx の基本(JPA)を完全解説!初心者でもわかるクエリメソッドの使い方
No.6
Java&Spring記事人気No6
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み
No.7
Java&Spring記事人気No7
Thymeleaf
Thymeleaf if elseの書き方と条件分岐の活用法!初心者でもわかる使いこなしガイド
No.8
Java&Spring記事人気No8
SpringのWeb開発(Spring MVC)
Spring Bootでの@GetMappingと@PostMappingの基本を完全解説!初心者でも理解できる使い方