カテゴリ: Spring 更新日: 2025/07/13

@RequestParamでURLの値を取得する方法を初心者向けにやさしく解説!

@RequestParamでURLの値を取得する方法
@RequestParamでURLの値を取得する方法

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

新人

「Spring Bootで、URLの末尾にある値をコントローラで取得したいんですけど、どうすればいいですか?」

先輩

「それなら@RequestParamというアノテーションを使うと、URLのクエリパラメータを簡単に取得できるよ。」

新人

「クエリパラメータってなんですか?よくわかりません……」

先輩

「じゃあ、まずはURLの値についてから順番に説明していこう!」

1. URLの値(クエリパラメータ)とは?

1. URLの値(クエリパラメータ)とは?
1. URLの値(クエリパラメータ)とは?

Webアプリケーションでは、URLの末尾に「?キー=値」の形式でデータを渡すことができます。これを「クエリパラメータ」と呼びます。例えば、以下のようなURLを見てみましょう。


http://localhost:8080/hello?name=Tanaka

この例では、「name=Tanaka」という部分がクエリパラメータです。つまり「name」という名前で「Tanaka」という値が渡されています。

2. Spring BootでURLの値を取得する基本的な方法

2. Spring BootでURLの値を取得する基本的な方法
2. Spring BootでURLの値を取得する基本的な方法

Spring Bootでは、クエリパラメータを取得するために、@RequestParamというアノテーションを使用します。これは、コントローラクラス内で使うことで、URLのパラメータを簡単に取得できる便利な仕組みです。

例えば、以下のようなコードでパラメータを受け取れます。


@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(@RequestParam String name, Model model) {
        model.addAttribute("message", "こんにちは、" + name + "さん!");
        return "hello";
    }
}

この場合、http://localhost:8080/hello?name=Tanaka にアクセスすると、name に「Tanaka」という文字列が入ります。

3. @RequestParamの使い方と基本の書き方

3. @RequestParamの使い方と基本の書き方
3. @RequestParamの使い方と基本の書き方

@RequestParamは、コントローラのメソッド引数に付けて使用します。基本の書き方は次の通りです。


@RequestParam 型 変数名

具体的な例を見てみましょう。


@GetMapping("/greet")
public String greet(@RequestParam String user, Model model) {
    model.addAttribute("greeting", "ようこそ、" + user + "さん");
    return "greet";
}

このように書くことで、URLの「?user=値」の部分を受け取ることができます。

URLの例:http://localhost:8080/greet?user=Sato にアクセスすると、「ようこそ、Satoさん」というメッセージが画面に表示されるようになります。

4. 複数の値を@RequestParamで受け取る方法

4. 複数の値を@RequestParamで受け取る方法
4. 複数の値を@RequestParamで受け取る方法

@RequestParamでは、同じ名前のパラメータを複数受け取ることもできます。例えば、複数のチェックボックスで選ばれた値をリストで受け取りたいときなどに便利です。

URLの例:http://localhost:8080/items?item=apple&item=banana&item=grape

このように同じキー名(ここではitem)に対して複数の値があると、List<String>で受け取ることができます。


@GetMapping("/items")
public String items(@RequestParam List<String> item, Model model) {
    model.addAttribute("items", item);
    return "items";
}

このコードでは、複数のitemがリストとしてitemsに格納され、画面に渡されます。

5. @RequestParamのrequired属性とdefaultValue属性の使い方

5. @RequestParamのrequired属性とdefaultValue属性の使い方
5. @RequestParamのrequired属性とdefaultValue属性の使い方

@RequestParamには、required属性とdefaultValue属性があります。これを使うことで、パラメータが省略された場合の動作を細かく制御できます。

required=true(デフォルト)は、パラメータが必須であることを意味します。パラメータが無いとエラーになります。

一方、required=falseとすれば、パラメータが無くてもエラーになりません。代わりに、引数にはnullが入ります。

さらに、defaultValueを使えば、パラメータが無いときに代わりの値を設定できます。


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

この例では、nameパラメータが無い場合は自動的に「ゲスト」という値になります。これにより、URLにパラメータが無くても画面が正しく表示されます。

このように、@RequestParam required defaultValueの組み合わせは、初心者が最初に覚えておくととても便利な設定です。

6. パラメータが無いときの処理(エラー回避と初期値)

6. パラメータが無いときの処理(エラー回避と初期値)
6. パラメータが無いときの処理(エラー回避と初期値)

初心者がよくつまずくポイントとして、URLにクエリパラメータが無いとエラーになるという問題があります。これは、required=trueがデフォルトであるため、パラメータが無いと400 Bad Requestエラーになるからです。

このような状況を回避するには、先ほど紹介したrequired=falsedefaultValueを上手に活用することが重要です。

たとえば、以下のようにして初期値を設定すれば、エラーを防ぐことができます。


@GetMapping("/info")
public String info(@RequestParam(defaultValue="未指定") String type, Model model) {
    model.addAttribute("typeInfo", type);
    return "info";
}

このコードでは、URLに?type=xxxが無い場合、「未指定」という文字列が自動で使われます。こうすることで、Spring URL クエリパラメータ 処理時のエラーを防ぎ、安定した動作になります。

このように、@RequestParamはとても便利ですが、使い方を誤るとエラーの原因にもなります。初心者の方はrequireddefaultValueの役割をしっかり覚えておきましょう。

7. @RequestParamとThymeleafを連携させて画面に値を表示する

7. @RequestParamとThymeleafを連携させて画面に値を表示する
7. @RequestParamとThymeleafを連携させて画面に値を表示する

@RequestParamで受け取った値は、Thymeleafと連携させて画面に表示することができます。これにより、動的なWebページを簡単に作成できるようになります。

以下は、ユーザー名を受け取って画面に表示する例です。


@Controller
public class ViewController {

    @GetMapping("/show")
    public String showUser(@RequestParam String name, Model model) {
        model.addAttribute("username", name);
        return "show";
    }
}

このコントローラでは、URLの?name=Tanakaの値を受け取り、usernameという名前で画面に渡しています。

続いて、Thymeleaf側のHTMLテンプレートは以下のように記述します。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>ユーザー表示</title>
</head>
<body>
    <h1>ようこそ!</h1>
    <p th:text="'あなたの名前は:' + ${username}"></p>
</body>
</html>

このように、Spring パラメータ 表示を行うには、@RequestParamで値を受け取り、Modelで画面に渡すという流れを覚えておきましょう。

8. よくあるエラーとその原因・対処法

8. よくあるエラーとその原因・対処法
8. よくあるエラーとその原因・対処法

@RequestParamを使うとき、初心者がよく遭遇するのが「パラメータが無い」というエラーです。

たとえば、次のように必須のパラメータを指定した場合、


@GetMapping("/detail")
public String detail(@RequestParam String id, Model model) {
    model.addAttribute("id", id);
    return "detail";
}

URLに?id=123が無いと、400 Bad Requestエラーになります。

このようなエラーを防ぐには、required=falsedefaultValueを指定するのが効果的です。

また、URLの書き間違い(パスやキーの間違い)もよくある原因です。例えば、


http://localhost:8080/detail?id=123

とすべきところを、http://localhost:8080/detailsと誤って入力すると、リクエストがマッピングされずに404エラーになります。

このような問題に遭遇したときは、コントローラのURLとパラメータの指定が正しいかを丁寧に見直しましょう。

これらは@RequestParam エラーでよく検索される内容なので、初心者は特に注意しておくと安心です。

9. 初心者がつまずきやすいポイントとアドバイス

9. 初心者がつまずきやすいポイントとアドバイス
9. 初心者がつまずきやすいポイントとアドバイス

Springで@RequestParamを使う際に初心者がつまずきやすいポイントは、以下のようなものです。

  • URLの末尾にクエリパラメータが無いときにエラーになる
  • パラメータ名のタイプミス(例えば「name」と「username」を混同)
  • 画面への値の渡し忘れ(model.addAttributeの書き忘れ)

これらの問題を防ぐには、以下のアドバイスを守ると良いでしょう。

  • 必ずdefaultValuerequired=falseを使っておく
  • URLとメソッドのパラメータが対応しているか確認する
  • 受け取った値をちゃんとModelで画面に渡す

また、Spring パラメータ 処理に関する公式ドキュメントやサンプルコードをたくさん読むことで、理解が深まります。

「初心者向け Spring パラメータ処理」で検索して、実例を確認しながら練習すると、つまずきにくくなるでしょう。

コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
Javaの文字列をループで1文字ずつ取り出す方法を初心者向けに解説
Javaで文字列が始まる・終わるかをチェックする方法(startsWith, endsWith)
Javaで文字列が含まれているか調べるcontains()の使い方
Javaで数値を文字列に変換するString.valueOf()の使い方を徹底解説
人気記事
No.1
Java&Spring記事人気No1
SQLのサブクエリを完全ガイド!入れ子クエリの使い方を初心者向け解説
No.2
Java&Spring記事人気No2
SQLのロック(LOCK)を完全ガイド!初心者でもわかるデータの整合性の守り方
No.3
Java&Spring記事人気No3
Java の文字列を分割する「split()」の使い方
No.4
Java&Spring記事人気No4
Java のファイル構成を理解しよう(.javaと.class)|初心者向けにわかりやすく解説