カテゴリ: Spring 更新日: 2025/12/18
PR
独学でJavaを学んでいる方向け
「実務レベルに到達できるか不安」「1人だと詰まることが多い」場合は、 実践重視で学べる環境を一度確認しておくのも一つの手です。
EBAエデュケーション |学習内容・サポートを見る

Spring MVCの@PathVariableと@RequestParamを完全解説!初心者向けの使い分け・必須/任意・型変換・デフォルト値まで

Spring MVCの@PathVariableと@RequestParam:必須/任意・型変換・デフォルト値
Spring MVCの@PathVariableと@RequestParam:必須/任意・型変換・デフォルト値

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

生徒

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

先生

「Spring MVCでは@PathVariable@RequestParamの2つがよく使われます。それぞれ使い方や用途が少し違うんですよ。」

生徒

「違いがよくわからなくて…あと、必須か任意にできるんですか?」

先生

「もちろんです。それでは一緒に、使い分けや注意点を詳しく見ていきましょう!」

1. @PathVariableとは?URLの一部を変数として受け取る方法

1. <code>@PathVariable</code>とは?URLの一部を変数として受け取る方法
1. @PathVariableとは?URLの一部を変数として受け取る方法

@PathVariableは、URLパスの一部をパラメータとして受け取るために使用されます。例えば、/users/123というURLの「123」の部分をコントローラーで受け取りたい場合に使います。


@GetMapping("/users/{id}")
public String getUser(@PathVariable Long id) {
    return "User ID: " + id;
}

この例では、URLの{id}部分がLong idにマッピングされます。

2. @RequestParamとは?クエリパラメータを受け取る方法

2. <code>@RequestParam</code>とは?クエリパラメータを受け取る方法
2. @RequestParamとは?クエリパラメータを受け取る方法

@RequestParamは、URLのクエリパラメータ(例:?page=2)を取得するために使われます。フォーム送信や検索機能でよく使われます。


@GetMapping("/search")
public String search(@RequestParam String keyword, @RequestParam int page) {
    return "キーワード:" + keyword + " ページ:" + page;
}

/search?keyword=java&page=2というリクエストに対して、keywordpageを受け取ります。

PR

将来を見据えて、+αのスキルを身につけたい方へ

JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。

AIを学ぶならアイデミープレミアム

3. 必須か任意かを指定するには?

3. 必須か任意かを指定するには?
3. 必須か任意かを指定するには?

@RequestParamはデフォルトでrequired=trueになっており、パラメータが無いとエラーになります。ただし、任意にしたい場合はrequired=falseに設定します。


@GetMapping("/search")
public String search(@RequestParam(required = false) String keyword) {
    return "検索キーワード:" + keyword;
}

一方で、@PathVariableは基本的に必須ですが、バージョンによってはオプションで対応可能なケースもあります。ただし、RESTfulな設計では省略されることは少なく、使い方としては@RequestParamより柔軟性に欠けます。

4. 型変換は自動でしてくれるの?

4. 型変換は自動でしてくれるの?
4. 型変換は自動でしてくれるの?

@PathVariable@RequestParamで受け取る値は、基本的な型(intLongbooleanなど)であれば、Springが自動的に型変換してくれます。


@GetMapping("/age/{value}")
public String showAge(@PathVariable int value) {
    return "年齢:" + value;
}

ただし、文字列を数値に変換できない場合はエラーになるため、バリデーションも重要です。

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

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

@RequestParamにはデフォルト値を設定できます。これにより、値が渡されなかった場合にもエラーを避けられます。


@GetMapping("/search")
public String search(@RequestParam(defaultValue = "1") int page) {
    return "ページ番号:" + page;
}

@PathVariableには直接デフォルト値を設定する方法はないため、別途コントロールロジックで対応します。

6. 実行結果を確認してみよう

6. 実行結果を確認してみよう
6. 実行結果を確認してみよう

/users/10 にアクセス → User ID: 10
/search?keyword=spring&page=2 にアクセス → キーワード:spring ページ:2
/search にアクセス(keywordが任意) → 検索キーワード:null
/search にアクセス(pageがデフォルト1) → ページ番号:1

7. @PathVariable@RequestParamの使い分けのポイント

7. <code>@PathVariable</code>と<code>@RequestParam</code>の使い分けのポイント
7. @PathVariable@RequestParamの使い分けのポイント
  • URLの一部を使うとき:@PathVariableを使う
  • 検索条件・オプション指定など:@RequestParamが便利
  • 任意/デフォルト値を使いたい:@RequestParamのほうが柔軟
  • REST API設計:リソースを特定するIDなどは@PathVariableが適している

8. HTMLでのURL設計とコントローラーの関係

8. HTMLでのURL設計とコントローラーの関係
8. HTMLでのURL設計とコントローラーの関係

HTMLフォームやリンクからのリクエストが、Spring MVCのコントローラーにどうマッピングされるかも重要です。


<form method="get" action="/search">
    <input type="text" name="keyword">
    <input type="submit" value="検索">
</form>

このフォームでは、@RequestParam("keyword")で受け取ることができます。一方、リンクからリソースIDを送る場合は@PathVariableが活躍します。


<a href="/users/5">ユーザー詳細</a>

9. よくあるエラーと対処法

9. よくあるエラーと対処法
9. よくあるエラーと対処法
  • MissingServletRequestParameterException:必須の@RequestParamが不足している
  • TypeMismatchException:型変換に失敗(文字列→数値など)
  • 404エラー:@PathVariableのURLが一致していない

これらのエラーを防ぐには、必須・任意・デフォルト値の扱いをしっかり理解することが重要です。

まとめ

まとめ
まとめ

今回はSpring MVCにおける@PathVariable@RequestParamの使い方について、初心者でも理解しやすいように解説しました。@PathVariableはURLの一部を変数として受け取り、リソースを特定する用途に向いています。一方@RequestParamは、検索条件やオプション指定に適しており、任意パラメータの設定やデフォルト値の設定が簡単に行える柔軟なアノテーションです。

特にREST API開発では、これらを正しく使い分けることが非常に重要です。例えば、ユーザーIDのように明確にリソースを表す情報は@PathVariableで受け取り、検索キーワードやページ番号のように任意で変動する情報は@RequestParamを使うことで、直感的でわかりやすいAPI設計が実現できます。

また、型変換の自動処理やバリデーションの重要性も見逃せません。Spring MVCでは基本的な型(intやbooleanなど)は自動的に変換されますが、文字列から数値への変換時にはエラーが発生する可能性があります。そのため、入力値の検証やエラーハンドリングも重要なポイントです。

実際のHTMLとコントローラーの連携においても、formタグを用いたGETリクエストでは@RequestParam、URLリンクによる詳細画面表示では@PathVariableが活躍します。これにより、フロントエンドとバックエンドの役割が明確になり、コードの見通しも良くなります。

さらに、@RequestParamrequired属性やdefaultValueを活用することで、ユーザーがパラメータを指定しなかった場合でも柔軟に対応可能です。このような実装は、ユーザーにとって使いやすく、開発者にとってもメンテナンスしやすいアプリケーションにつながります。

最後に、よくあるエラーとしてMissingServletRequestParameterExceptionTypeMismatchExceptionなどがあることも確認しました。こうした例外を防ぐには、パラメータの有無や型を意識した設計と適切なハンドリングが不可欠です。

ここまでで、Spring MVCのパラメータ受け取りに関する基本的な知識から実践的な使い分け、エラーハンドリングまで幅広く理解できたかと思います。ぜひ、実際のプロジェクトでも@PathVariable@RequestParamを使いこなし、保守性の高いAPI開発を目指しましょう。

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

生徒

「結局、@PathVariableはどんな場面で使うといいんですか?」

先生

「リソースを一意に識別するための値、たとえばユーザーIDや商品IDをURLの一部から取り出したいときに使います。RESTfulな設計にぴったりです。」

生徒

「じゃあ、@RequestParamは検索やフィルターの条件みたいな“オプション”に使うんですね?」

先生

「その通りです!requireddefaultValueも設定できるので、フォームの入力やページネーションにも最適です。」

生徒

「型変換も自動でしてくれるのは便利ですね。でも、失敗しないようにバリデーションも必要ですよね?」

先生

「まさにそのとおり。開発では想定外の入力が来ることもあるので、型だけでなく中身のチェックも大事です。」

生徒

「今日の学びでAPI設計の基本がだいぶわかってきました!」

先生

「これからは実際のプロジェクトでも意識して使い分けていきましょう。理解が深まったようで何よりです。」

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

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

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

Spring MVCで@PathVariableと@RequestParamの違いがいまいちわかりません。どう使い分ければいいですか?

@PathVariableはURLの一部(パス)から値を受け取るのに使い、@RequestParamはURLのクエリパラメータ(?以降)から値を受け取るときに使います。例えば、ユーザーIDなどリソースの特定には@PathVariable、検索やページ番号など可変的な値には@RequestParamを使い分けます。
カテゴリの一覧へ
新着記事
PR

JavaやLinuxの検証環境に
低コストで使えるVPS

Spring Data JPAのJpaRepositoryインターフェースの使い方を完全ガイド!初心者でも安心
JSPの実行の流れをフローで理解!サーブレットとの関係性と処理順序を理解しよう
JavaのLocalDateTimeクラスとisAfterメソッドを完全ガイド!初心者でもわかる日時比較
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
PR 未経験からITエンジニアを目指す方へ

Javaを学んでいるけど、「このまま未経験で就職できるか不安」という20代向け。 学歴不問・無料サポートの就職支援という選択肢があります。

Tamesy |無料で面談予約
人気記事
No.1
Java&Spring記事人気No1
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.2
Java&Spring記事人気No2
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
PR

ローカルPCに依存しない開発環境という選択肢

Java・Linuxの検証や学習環境を、クラウド上ですぐに用意できます。

Java入門

Javaの基礎を体系的に学びたい場合は、文法だけでなく 「なぜそう書くのか」まで丁寧に解説されているため、 初心者でも理解しやすい定番の1冊です。

スッキリわかるJava入門 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Java実践

ジェネリクス、enum、シールクラスなどの型設計から、 関数型プログラミング(ラムダ式・Stream API)、 JVM制御やリフレクション、外部ライブラリの活用までを扱っており、 「Javaを使えるレベル」へ進むための内容が網羅されています。

スッキリわかるJava入門 実践編 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Spring入門

Spring Frameworkの全体像から、 Webアプリ開発で必要となる主要機能までを 体系的に解説している定番の入門書です。

Spring徹底入門 第2版 Spring FrameworkによるJavaアプリケーション開発

※ 紙の書籍・電子書籍どちらでも購入できます

PR 実務経験のあるエンジニア向け

Javaなどの実務経験があり、次のキャリアを検討している方向け。 IT・ゲーム業界に特化した転職支援サービスという選択肢もあります。

転職ボックス |IT・ゲーム業界専門