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

初心者向け!@RequestParamの使い方を徹底解説|Spring MVCでのクエリパラメータ処理方法

@RequestParamとは?@RequestParamの使い方
@RequestParamとは?@RequestParamの使い方

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

新人

「先輩、Spring MVCでURLのパラメータを受け取る方法ってありますか?」

先輩

「それなら@RequestParamを使うと簡単に受け取れるよ。クエリパラメータを処理するときによく使うんだ。」

新人

「具体的にどのように使うんですか?コード例も見てみたいです!」

先輩

「それじゃあ、基本的な使い方と利便性について説明するね!」

1. @RequestParamとは?(基本的な説明)

1. @RequestParamとは?(基本的な説明)
1. @RequestParamとは?(基本的な説明)

@RequestParamは、Spring MVCでHTTPリクエストのクエリパラメータを取得するために使われるアノテーションです。クエリパラメータとは、URLの「?」以降に付加されるデータで、フォーム送信やリンククリック時に情報をサーバーに渡すのに使います。

例えば、以下のURLの場合、nameageがクエリパラメータです。


http://localhost:8080/user?name=Tanaka&age=25

@RequestParamを使うと、クエリパラメータを簡単に取得できます。以下に基本的なコード例を示します。


@Controller
public class UserController {

    @GetMapping("/user")
    public String getUser(@RequestParam String name, @RequestParam int age, Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "user";
    }
}

上記のコードでは、http://localhost:8080/user?name=Tanaka&age=25にアクセスすると、クエリパラメータがメソッドの引数に自動でマッピングされます。

2. @RequestParamがなぜ使われるのか(役割と利便性)

2. @RequestParamがなぜ使われるのか(役割と利便性)
2. @RequestParamがなぜ使われるのか(役割と利便性)

@RequestParamが使われる理由は、以下のような利便性があるからです。

  • 簡単なパラメータ取得: URLやフォーム送信時のデータ取得が簡単です。
  • コードの可読性向上: メソッドの引数に直接マッピングでき、コードが分かりやすくなります。
  • オプションパラメータへの対応: 必須でないパラメータにも対応可能です。

オプションパラメータの例を以下に示します。


@GetMapping("/user")
public String getUser(@RequestParam(required = false) String name, @RequestParam(defaultValue = "0") int age, Model model) {
    model.addAttribute("name", name != null ? name : "未指定");
    model.addAttribute("age", age);
    return "user";
}

このコードでは、nameパラメータが省略された場合、「未指定」と表示されます。また、ageは指定されていないときにデフォルトで「0」が適用されます。

3. @RequestParamの基本的な使い方(簡単なコード例付き)

3. @RequestParamの基本的な使い方(簡単なコード例付き)
3. @RequestParamの基本的な使い方(簡単なコード例付き)

@RequestParamは、クエリパラメータやフォームデータを簡単に取得するためのSpring MVCのアノテーションです。特にGETリクエストやPOSTリクエストで、クライアントから送られてくるデータをメソッドの引数として受け取ることができます。ここでは、基本的な使い方を具体的なコード例とともに解説します。

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


package com.example.demo.controller;

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

@Controller
public class GreetingController {

    @GetMapping("/greet")
    public String greetUser(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "greeting";
    }
}

このコードでは、ブラウザで/greet?name=太郎のようにアクセスすると、クエリパラメータnameを取得し、HTML画面に渡しています。

② HTMLファイル(greeting.html)の作成


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>挨拶ページ</title>
</head>
<body>
    <h1>挨拶</h1>
    <p th:text="'こんにちは、' + ${name} + 'さん!'">こんにちは、ゲストさん!</p>
</body>
</html>

③ 実行結果のイメージ


こんにちは、太郎さん!

ブラウザでlocalhost:8080/greet?name=太郎にアクセスすると、入力した名前が画面に表示されます。これが@RequestParamを使った基本的なデータ取得方法です。

4. クエリパラメータの取得方法

4. クエリパラメータの取得方法
4. クエリパラメータの取得方法

クエリパラメータは、URLの末尾に?key=valueの形式でデータを渡す方法です。@RequestParamを使うことで、簡単に取得できます。

① 複数のクエリパラメータを取得する例


@GetMapping("/search")
public String search(@RequestParam("query") String query, @RequestParam("page") int page, Model model) {
    model.addAttribute("query", query);
    model.addAttribute("page", page);
    return "searchResults";
}

上記のメソッドでは、/search?query=Spring&page=2のようなURLからquerypageの値を取得できます。

② HTMLファイル(searchResults.html)の作成


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>検索結果</title>
</head>
<body>
    <h1>検索結果</h1>
    <p th:text="'検索ワード: ' + ${query}">検索ワード: 未入力</p>
    <p th:text="'ページ番号: ' + ${page}">ページ番号: 未指定</p>
</body>
</html>

③ 実行結果のイメージ


検索ワード: Spring
ページ番号: 2

URLに複数のクエリパラメータを指定することで、検索やページネーションの処理が簡単に実装できます。

5. デフォルト値や必須設定の使い方

5. デフォルト値や必須設定の使い方
5. デフォルト値や必須設定の使い方

@RequestParamには、デフォルト値を指定したり、パラメータを必須にするかどうかを設定する機能があります。これにより、入力ミスやパラメータ不足のエラーを防ぐことができます。

① デフォルト値を設定する方法


@GetMapping("/welcome")
public String welcome(@RequestParam(value = "name", defaultValue = "ゲスト") String name, Model model) {
    model.addAttribute("name", name);
    return "welcome";
}

デフォルト値を設定すると、URLにクエリパラメータが指定されていない場合でも、指定した初期値が使われます。

② HTMLファイル(welcome.html)の作成


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ようこそ</title>
</head>
<body>
    <h1>ようこそ!</h1>
    <p th:text="'お名前: ' + ${name}">お名前: 未入力</p>
</body>
</html>

③ 実行結果のイメージ


お名前: ゲスト

/welcomeにアクセスすると、クエリパラメータが無い場合でも「お名前: ゲスト」と表示されます。

④ 必須パラメータの設定


@GetMapping("/details")
public String details(@RequestParam(value = "id", required = true) int id, Model model) {
    model.addAttribute("id", id);
    return "details";
}

required = trueが指定されている場合、パラメータが欠如するとエラーが発生します。デフォルトではrequiredtrueです。

⑤ HTMLファイル(details.html)の作成


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>詳細情報</title>
</head>
<body>
    <h1>詳細情報</h1>
    <p th:text="'ID: ' + ${id}">ID: 未指定</p>
</body>
</html>

⑥ 実行結果のイメージ


ID: 1001

クエリパラメータを正しく指定することで、エラーを回避しながら安全なデータ取得が可能です。デフォルト値の活用や必須設定を適切に使うことで、アプリケーションの信頼性が向上します。

6. 複数のパラメータの取得方法とその活用例

6. 複数のパラメータの取得方法とその活用例
6. 複数のパラメータの取得方法とその活用例

実際の開発では、複数のクエリパラメータを同時に取得することがよくあります。以下の例では、nameageemailの3つのパラメータを受け取ります。


@GetMapping("/profile")
public String getProfile(@RequestParam String name,
                         @RequestParam int age,
                         @RequestParam(required = false, defaultValue = "未登録") String email,
                         Model model) {
    model.addAttribute("name", name);
    model.addAttribute("age", age);
    model.addAttribute("email", email);
    return "profile";
}

上記コードを実行後、以下のURLにアクセスしてみてください。


http://localhost:8080/profile?name=Suzuki&age=30&email=suzuki@example.com

結果は次のように表示されます。


名前: Suzuki
年齢: 30
メールアドレス: suzuki@example.com

メールアドレスが指定されていない場合は「未登録」と表示されます。

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

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

@RequestParamを使用する際、初心者がよく直面するエラーとその対処方法を紹介します。

① パラメータの型不一致エラー

例えば、以下のコードでageに数値以外の値を渡すとエラーが発生します。


@GetMapping("/user")
public String getUser(@RequestParam int age, Model model) {
    model.addAttribute("age", age);
    return "user";
}

以下のURLでageに文字列を指定すると、"400 Bad Request"が返されます。


http://localhost:8080/user?age=abc

解決方法: パラメータが整数であることを事前に確認し、正しい値を指定してください。

② 必須パラメータが不足しているエラー

パラメータを省略した場合、required=trueがデフォルトのためエラーになります。


http://localhost:8080/user

解決方法: オプションパラメータにするか、デフォルト値を指定します。


@GetMapping("/user")
public String getUser(@RequestParam(required = false, defaultValue = "0") int age, Model model) {
    model.addAttribute("age", age);
    return "user";
}

③ URLの記述ミス

クエリパラメータの区切りを間違えると値が取得できません。


正しい: /user?name=Tanaka&age=25
間違い: /user?name=Tanakaage=25

解決方法: パラメータ間は&で区切ることを忘れないでください。

8. @RequestParamを学ぶ際のポイントと今後の学習ステップ

8. @RequestParamを学ぶ際のポイントと今後の学習ステップ
8. @RequestParamを学ぶ際のポイントと今後の学習ステップ

@RequestParamを使いこなすためには、以下のポイントに注意しながら実際にコードを書いて学習を進めることが重要です。

  • クエリパラメータの基本的な書き方と取得方法に慣れる。
  • 必須・オプションパラメータの違いと活用方法を理解する。
  • エラーが出たときは、パラメータの型やURLの書き方を確認する。
  • 実際に複数のパラメータを使ったアプリケーションを作成してみる。

今後は以下のトピックも学習することで、さらにSpring MVCでの開発スキルが向上します。

  • @PathVariable: パスパラメータの取得方法。
  • フォームバリデーション: ユーザー入力の検証方法。
  • エラーハンドリング: @ExceptionHandlerを使用したエラー処理の実装。

これらを習得することで、より実践的で信頼性の高いWebアプリケーションが作れるようになります。

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

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

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

@RequestParamとは何ですか?Spring MVCで何に使うのですか?

@RequestParamは、Spring MVCでURLのクエリパラメータやフォーム送信のデータを受け取るために使うアノテーションです。URLに含まれる?以降のパラメータをメソッドの引数として簡単に取得できます。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
静的リソースの配置場所(HTML・CSS・画像など)を完全ガイド!Spring Boot初心者向け解説
Servletとは?Pleiadesで始めるJava Webアプリ開発の基礎を初心者向けに徹底解説
Spring Bootの設定ファイルとは?初心者向けにapplication.propertiesの基本項目を解説
Java の continue 文で1回スキップする方法を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Javaとは?初心者向けにやさしく解説
No.2
Java&Spring記事人気No2
SQLのビュー(VIEW)を完全ガイド!初心者でもわかる仮想テーブルの使い方
No.3
Java&Spring記事人気No3
Spring Initializrの使い方を完全ガイド!初心者でも簡単にできるプロジェクト作成方法
No.4
Java&Spring記事人気No4
DB接続失敗やSQLエラーの表示と対策を完全解説!初心者でもわかるSpringのエラーハンドリング