カテゴリ: Spring 更新日: 2026/04/06

Javaの@RequestParamアノテーションの使い方を徹底解説!初心者でもわかるリクエストパラメータの基本と応用

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

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

生徒

「SpringでWebアプリを作っているんですが、URLからパラメータを受け取る方法を教えてもらえますか?」

先生

「それなら@RequestParamアノテーションを使うといいよ。これを使えば、URLに付与されたクエリパラメータを簡単に取得できるんだ。」

生徒

「クエリパラメータって具体的にどんなものですか?」

先生

「例えば、URLの末尾に?name=Johnのように書く部分のことだよ。さっそくサンプルコードを見ていこう!」

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

「1. @RequestParamアノテーションとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

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

@RequestParamは、Spring MVCでHTTPリクエストからクエリパラメータを取得するためのアノテーションです。URLに含まれるパラメータを簡単にメソッドの引数として受け取ることができます。

例えば、http://localhost:8080/hello?name=JohnのようなURLからnameパラメータの値を取得したいときに使います。


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello(@RequestParam String name) {
        return "Hello, " + name + "!";
    }
}

実行結果例


GET /hello?name=John
=> Hello, John!

このように、@RequestParamを使えば、簡単にURLからパラメータを取得して処理できます。

2. @RequestParamのデフォルト値の設定

2. @RequestParamのデフォルト値の設定
2. @RequestParamのデフォルト値の設定

@RequestParamにはデフォルト値を設定することも可能です。パラメータが指定されなかった場合に備えて、defaultValue属性を使うことができます。


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    @GetMapping("/greet")
    public String greet(@RequestParam(defaultValue = "Guest") String name) {
        return "Welcome, " + name + "!";
    }
}

実行結果例


GET /greet
=> Welcome, Guest!

このように、?name=を指定しなかった場合でも、デフォルトのGuestが返されます。

3. 複数の@RequestParamの利用方法

3. 複数の@RequestParamの利用方法
3. 複数の@RequestParamの利用方法

複数のクエリパラメータを使いたい場合、@RequestParamを複数指定できます。


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CalculatorController {

    @GetMapping("/calculate")
    public String calculate(@RequestParam int a, @RequestParam int b) {
        return "Sum: " + (a + b);
    }
}

実行結果例


GET /calculate?a=10&b=20
=> Sum: 30

複数のパラメータを使うと、計算などの処理にも応用できます。

4. 必須パラメータの指定

「4. 必須パラメータの指定」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. 必須パラメータの指定
4. 必須パラメータの指定

@RequestParamrequired属性をfalseに設定することで、パラメータを任意にできます。指定しないとデフォルトでは必須になります。


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OptionalParamController {

    @GetMapping("/info")
    public String getInfo(@RequestParam(required = false) String detail) {
        if (detail == null) {
            return "No detail provided";
        }
        return "Detail: " + detail;
    }
}

実行結果例


GET /info
=> No detail provided

このようにrequired = falseを使うと、パラメータが無い場合でもエラーになりません。

5. @RequestParamとリストの利用

5. @RequestParamとリストの利用
5. @RequestParamとリストの利用

Springでは、@RequestParamでリスト形式のパラメータを受け取ることもできます。


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
public class BatchController {

    @GetMapping("/batch")
    public String processBatch(@RequestParam List<String> items) {
        return "Items: " + String.join(", ", items);
    }
}

実行結果例


GET /batch?items=apple&items=banana&items=cherry
=> Items: apple, banana, cherry

リスト形式で複数の値を受け取ることで、柔軟な処理が可能です。

6. @RequestParamで数値・日付など型変換を行う方法

6. @RequestParamで数値・日付など型変換を行う方法
6. @RequestParamで数値・日付など型変換を行う方法

@RequestParamでは、受け取った値を文字列として扱うだけでなく、数値型や日付型など、Springが自動的に型変換を行ってくれる仕組みがあります。例えば、整数を受け取りたい場合はメソッド引数をint型に指定するだけで、自動的に変換された値が渡されます。

また、日時データを扱いたい場合はJavaのLocalDateLocalDateTimeを指定し、適切なフォーマットを指定することで、日付形式のパラメータも扱うことができます。Webアプリケーションで検索条件や分析データを扱う際には、こうした型変換機能が非常に役立ちます。

ただし、フォーマットが一致しない場合はエラーになるため、サーバ側で例外処理を追加したり、フォーマット指定を@DateTimeFormatなどと併用することで、より安全な処理が可能になります。

7. @RequestParamでNULLチェックやバリデーションを行うポイント

「7. @RequestParamでNULLチェックやバリデーションを行うポイント」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. @RequestParamでNULLチェックやバリデーションを行うポイント
7. @RequestParamでNULLチェックやバリデーションを行うポイント

Webアプリケーションでは、クライアントから送信されるリクエストパラメータが正しい形式であるとは限りません。そのため、@RequestParamで受け取った値に対して、必須チェックや空文字チェックなどのバリデーションを行うことが重要です。

例えば、ユーザー名やメールアドレスなどフォーム入力が必要なリクエストでは、値が空の場合にエラーメッセージを返したり、正規表現で形式をチェックすることが求められます。こうしたバリデーションを適切に行うことで、不正データによる処理エラーを防ぎ、堅牢なアプリケーションを構築できます。

より高度なバリデーションが必要な場合は、@ValidatedやBean Validationを組み合わせてドメインモデルに制約を定義すると、複数画面にまたがるチェックも統一しやすくなります。

8. @RequestParamと@PathVariableの使い分け

8. @RequestParamと@PathVariableの使い分け
8. @RequestParamと@PathVariableの使い分け

Spring MVCでは、URLの一部を動的に取得する@PathVariableと、クエリパラメータを取得する@RequestParamの2つがよく使われます。例えば、商品ページの詳細表示では/product/123のようにパス内に値を含める一方、検索機能では/search?keyword=appleのようにクエリ形式で入力を受け取るのが一般的です。

どちらも値を受け取る仕組みですが、設計の意図が異なります。リソースを特定する場合は@PathVariable、条件検索やフィルタリングに使う場合は@RequestParamを用いると、APIの設計が分かりやすくなります。

REST APIを設計する際には、URLを階層構造として整理し、意味のあるパスでリソースを扱うことで、直感的に理解できるエンドポイントを作成できます。

まとめ

まとめ
まとめ

今回の記事では、JavaのSpringフレームワークを使ったWebアプリケーション開発において、@RequestParamアノテーションの基本的な使い方から応用まで詳しく解説しました。このアノテーションを使えば、URLからのクエリパラメータを簡単に取得できるため、柔軟なWebサービスの構築が可能になります。

まずは、@RequestParamの基本を理解することで、ユーザーからの入力や動的なデータ取得が必要な場合に非常に便利です。特に、Web APIやRESTfulなサービスを開発する際に欠かせない技術です。また、デフォルト値や必須・任意パラメータの設定ができるため、ユーザーエクスペリエンスの向上にも役立ちます。

さらに、複数のパラメータを同時に扱ったり、リスト形式でパラメータを受け取ることで、複雑な入力処理もシンプルに記述できます。これにより、例えば検索機能やフィルタリング機能の実装がスムーズに行えます。

ここで紹介した内容を理解すれば、Springを使ったWebアプリケーション開発の基礎がしっかりと身につくはずです。ぜひ実際に手を動かして、コードを書きながら学んでいきましょう。

サンプルプログラムまとめ

最後に、この記事で学んだ内容を1つのサンプルプログラムにまとめます。複数の@RequestParamを活用した例です。


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
public class SummaryController {

    @GetMapping("/summary")
    public String handleRequest(
            @RequestParam String name,
            @RequestParam(defaultValue = "Guest") String role,
            @RequestParam(required = false) List<String> items) {
        
        String itemList = (items != null) ? String.join(", ", items) : "No items";
        return "User: " + name + " (Role: " + role + ") - Items: " + itemList;
    }
}

実行結果例


GET /summary?name=Alice&role=Admin&items=Book&items=Pen
=> User: Alice (Role: Admin) - Items: Book, Pen

GET /summary?name=Bob
=> User: Bob (Role: Guest) - Items: No items

このサンプルでは、ユーザー名、役割、アイテムのリストをURLパラメータで受け取り、柔軟に処理を行っています。これにより、実際の業務アプリケーションにおいても役立つ実装が可能です。

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

生徒

「Springの@RequestParamって便利ですね!色々なパラメータを受け取れるのがわかりました。」

先生

「そうだね、特にWeb APIではよく使うから、しっかり覚えておこう。デフォルト値の設定やリストの活用など、応用も効くんだ。」

生徒

「必須じゃないパラメータを扱う方法も学べたので、次のプロジェクトで試してみたいです!」

先生

「いいね!次は@PathVariableを使ったURLパスのパラメータ取得についても学んでみるとさらに理解が深まるよ。」

生徒

「それも楽しみです!今回の知識を活かして、もっと色んなアプリを作ってみます。」

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

「この記事を読んだ人からの質問」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

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

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

Javaの@RequestParamって初心者でも使いやすい機能ですか?

はい、Javaの@RequestParamアノテーションはSpring MVCで非常に基本的かつ使いやすい機能で、初心者でも簡単にURLのクエリパラメータを受け取ることができます。

Spring MVCで@RequestParamを使ってURLのパラメータを取得する方法とは?

Spring MVCでは@RequestParamを使うことで、URLの末尾に付けられたクエリパラメータをメソッドの引数として簡単に取得できます。
カテゴリの一覧へ
新着記事
New1
Java
Javaのラムダ式で外部変数を使う方法とは?finalとeffectively finalを徹底解説!
更新記事
New2
Spring
Spring Bootの@RequestBodyと@ResponseBodyを完全解説!初心者でもわかるJSON入出力とJackson設定
更新記事
New3
Servlet
JavaのPushBuilderクラスgetMethodメソッドを完全解説!初心者にもわかるHTTPメソッド取得の使い方
更新記事
New4
Spring
Spring MVCのConverterとFormatter入門!型変換の仕組みと拡張ポイントをわかりやすく解説
更新記事
人気記事
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のScannerクラスとIOExceptionの使い方を完全解説!初心者でもわかる例外処理と入力処理の基本
No.3
Java&Spring記事人気No3
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
No.4
Java&Spring記事人気No4
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.5
Java&Spring記事人気No5
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.6
Java&Spring記事人気No6
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.7
Java&Spring記事人気No7
Java
Java開発環境「Eclipse(Pleiades)」のインストール方法とメリットを初心者向けに解説
No.8
Java&Spring記事人気No8
Spring
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定