カテゴリ: Spring 更新日: 2025/12/31

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

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

教材紹介 Spring Boot 学習のおすすめ教材

Spring Bootを使ったWebアプリケーション開発を、 環境構築から実践まで一通り学びたい方には、 定評のある入門書が参考になります。

Spring Boot 3 プログラミング入門をAmazonで見る

※ Amazon広告リンク

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

生徒

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

先生

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

生徒

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

先生

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

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

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

Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazon広告リンク

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チェックやバリデーションを行うポイント

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のクエリパラメータを受け取ることができます。
カテゴリの一覧へ
新着記事
JavaのIndexOutOfBoundsExceptionを完全ガイド!初心者でも理解できる例外処理と回避方法
スッキリわかるJava入門 第4版|独学でもレッスンでも学べる完全ガイド
JavaのCookieクラスのgetCommentメソッドを解説!Servlet開発でクッキーの説明文を取得する方法
JavaのBufferedOutputStreamクラスのwriteメソッドを徹底解説!初心者でもわかるファイルへのバイナリ書き込み
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.3
Java&Spring記事人気No3
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.4
Java&Spring記事人気No4
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
No.8
Java&Spring記事人気No8
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク