Spring Bootでのリクエストパラメータ取得方法を徹底解説!初心者でもわかる基本と重要性
新人
「Webアプリでユーザーからの入力を受け取る方法ってどうやるんですか?」
先輩
「それはリクエストパラメータを使って取得できるよ。Spring Bootなら簡単に実装できるんだ。」
新人
「リクエストパラメータって何ですか?どんなときに使うんですか?」
先輩
「例えば検索ボックスに文字を入れて検索するときや、商品のカテゴリを選ぶときに使うんだ。URLに情報が含まれて、サーバー側でその値を取得して処理するんだよ。」
新人
「なるほど!それなら便利そうですね!具体的にどうやって使うんですか?」
先輩
「じゃあまずはリクエストパラメータの基本から説明するね!」
1. リクエストパラメータとは?
リクエストパラメータは、ユーザーがブラウザからサーバーに情報を送るときに使うデータです。URLの末尾に「?キー=値」の形式で指定し、複数のパラメータを送る場合は「&」で区切ります。
例えば、次のようなURLがあります。
http://localhost:8080/search?keyword=Spring&category=web
この場合、keywordに「Spring」、categoryに「web」という値が含まれています。これをサーバー側で受け取って、検索結果を表示したり、カテゴリを絞り込む処理を行います。
2. リクエストパラメータがWebアプリで重要な理由
リクエストパラメータは、ユーザーがWebアプリを操作する際に欠かせないものです。たとえば、以下のような場面で使われます。
- 検索機能: 入力されたキーワードを取得して検索結果を表示します。
- 商品フィルタリング: カテゴリや価格帯で絞り込みを行うときに使用します。
- ページ移動: 複数ページある場合に、何ページ目を表示するか指定します。
これにより、ユーザーは自分が求める情報に素早くアクセスでき、Webアプリがより便利になります。また、URLに情報が含まれているため、ページをブックマークしたり共有するのも簡単です。実務でWebアプリケーションを作るときは、リクエストパラメータを取得する処理は必ずあります。しっかりとマスターしましょう!
3. @RequestParamを使ったリクエストパラメータの取得方法
@RequestParamは、URLに含まれるパラメータを簡単に取得できる便利なアノテーションです。主にGETリクエストで使用されますが、POSTリクエストでも利用可能です。
例えば、ユーザーが検索キーワードを入力して検索ボタンを押した場合、次のようなURLが生成されます。
http://localhost:8080/search?keyword=SpringBoot
この「keyword」の値を取得するために、以下のようなコントローラを作成します。
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 SearchController {
@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword, Model model) {
model.addAttribute("keyword", keyword);
return "searchResult";
}
}
このコードでは、URLのkeywordパラメータを受け取り、ビューに渡しています。ブラウザで次のURLにアクセスすると、キーワードが表示されます。
http://localhost:8080/search?keyword=SpringBoot
実行結果:
検索キーワード: SpringBoot
また、パラメータが指定されていない場合にエラーを防ぐには、required = falseやdefaultValueを指定します。
@GetMapping("/search")
public String search(@RequestParam(value = "keyword", required = false, defaultValue = "未入力") String keyword, Model model) {
model.addAttribute("keyword", keyword);
return "searchResult";
}
このように設定すると、パラメータがない場合も「未入力」と表示されるので便利です。
4. @PathVariableを使ったリクエストパラメータの取得方法
@PathVariableは、URLのパス部分から値を取得する方法です。RESTfulなURL設計に適しており、可読性が高くなります。
例えば、商品詳細ページにアクセスする際に次のようなURLを使います。
http://localhost:8080/product/123
この「123」を取得するためのコントローラは次のように記述します。
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.PathVariable;
@Controller
public class ProductController {
@GetMapping("/product/{id}")
public String getProduct(@PathVariable("id") int productId, Model model) {
model.addAttribute("productId", productId);
return "productDetail";
}
}
ブラウザで次のURLにアクセスすると、指定した商品IDが取得されます。
http://localhost:8080/product/123
実行結果:
商品ID: 123
この方法は、リソースを特定するのに適しており、URLがわかりやすくなります。
5. それぞれの使い分けと注意点
@RequestParamと@PathVariableはどちらもリクエストから値を取得するために使いますが、用途が異なります。
- @RequestParam: フィルタリングや検索条件など、オプション的な情報を渡すときに使用します。
- @PathVariable: 特定のリソースを一意に特定するときに使用します。例えば、ユーザーIDや商品IDの取得に適しています。
次のような場合に使い分けるとよいでしょう。
- 検索ページ:
@RequestParamを使用(例:/search?keyword=Spring) - 詳細ページ:
@PathVariableを使用(例:/product/123)
注意点:
- 同じURLパターンで
@PathVariableと@RequestParamを混在させる場合は、URLが複雑になりすぎないように注意しましょう。 - パラメータが未指定の場合のデフォルト値設定を忘れないようにしましょう。
- ユーザーがURLを直接変更できるため、適切なバリデーションを行い、予期しない入力を防ぎましょう。
6. 実践!簡単なWebアプリケーションでリクエストパラメータを体験
ここでは、実際にリクエストパラメータを使った簡単なWebアプリケーションを作成してみましょう。Pleiadesを使用し、Gradleでプロジェクトを作成する手順を説明します。
6.1 プロジェクト作成
- Pleiadesを起動し、「新規Springスタータープロジェクト」を選択します。
- プロジェクト名を"requestparam-demo"に設定します。
- ビルドツールにGradleを選び、Javaバージョンを適切に指定します。
- 「次へ」をクリックし、依存関係の追加画面で「Spring Web」をチェックします。
- プロジェクトを作成し、数分待つと初期設定が完了します。
6.2 コントローラの作成
作成したプロジェクト内のsrc/main/java/com/example/requestparamdemo/controllerに、新しいクラスGreetingControllerを作成します。
package com.example.requestparamdemo.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 greet(@RequestParam(value = "name", required = false, defaultValue = "ゲスト") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
6.3 ビューの作成
src/main/resources/templatesフォルダ内にgreeting.htmlを作成します。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>挨拶ページ</title>
</head>
<body>
<h1 th:text="'こんにちは、' + ${name} + 'さん!'"></h1>
</body>
</html>
6.4 実行と確認
- Pleiadesのメニューから"DemoApplication.java"を右クリックして「Spring Bootアプリケーションとして実行」を選択します。
- ブラウザで次のURLにアクセスします。
http://localhost:8080/greet?name=太郎
実行結果:
こんにちは、太郎さん!
パラメータを指定しない場合:
http://localhost:8080/greet
実行結果:
こんにちは、ゲストさん!
7. よくあるエラーとその解決方法
リクエストパラメータを扱う際、初心者がつまずきやすいエラーと解決方法を紹介します。
7.1 400 Bad Request エラー
パラメータが必須であるにも関わらず、URLに含めなかった場合に発生します。
@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword, Model model) {
model.addAttribute("keyword", keyword);
return "searchResult";
}
エラー原因: keywordが必須なのに、URLに指定しない場合。
解決方法: required = falseまたはdefaultValueを指定します。
7.2 404 Not Found エラー
URLが間違っている場合や、@GetMappingのパスが異なる場合に発生します。
http://localhost:8080/seach?keyword=Spring
解決方法: URLと@GetMappingの指定を正しく確認しましょう。
7.3 型変換エラー
数値型のパラメータに文字列を渡すと発生します。
@GetMapping("/product/{id}")
public String getProduct(@PathVariable("id") int productId, Model model) {
model.addAttribute("productId", productId);
return "productDetail";
}
エラー原因: /product/abcのように数値でない値を渡すとエラーになります。
解決方法: URLに正しい型の値を指定し、必要ならバリデーションを追加します。
8. 次の学習ステップとおすすめの勉強方法
リクエストパラメータの取得方法を理解したら、次のステップとして以下の内容を学習するのがおすすめです。
8.1 フォームデータの送信
@ModelAttributeを使ったフォームデータのバインド方法を学ぶと、より複雑な入力処理が理解できます。
8.2 バリデーションの実装
@Validを使った入力チェックを学ぶことで、安全で信頼性の高いアプリケーションが作れます。
8.3 セッションの管理
ログイン状態の保持やユーザー情報の一時保存についても学ぶと、実用的なWebアプリが作れます。
8.4 おすすめの勉強方法
- 公式ドキュメントの確認: Spring公式サイトで最新情報を確認。
- ハンズオン動画: 動画での学習は手順を視覚的に理解しやすいです。
- 実際に手を動かす: 小さなアプリを作りながら試すことで理解が深まります。
次の学習ステップに進むことで、さらに実用的なスキルが身につきます。焦らず一歩ずつ進めていきましょう!
まとめ
リクエストパラメータ取得の全体像を振り返る
ここまで、Spring Bootにおけるリクエストパラメータの取得方法について、基礎から実践まで順を追って学んできました。 Webアプリケーションにおいて、ユーザーの入力を正しく受け取ることは非常に重要であり、 リクエストパラメータの理解はSpring Boot開発の土台とも言えます。 検索機能や一覧の絞り込み、ページング、詳細画面の表示など、 日常的に使われているWeb機能の多くはリクエストパラメータによって支えられています。 そのため、@RequestParamや@PathVariableの使い方を正しく理解しておくことで、 実務でも応用がきく安定したコードを書けるようになります。
特に、@RequestParamは検索条件やオプション情報の受け渡しに向いており、 URLのクエリ文字列から柔軟に値を取得できる点が特徴です。 一方で、@PathVariableはURLの構造そのものに意味を持たせることができ、 商品IDやユーザーIDなど、特定のリソースを表す場面で力を発揮します。 この二つを正しく使い分けることで、URL設計が分かりやすくなり、 利用者にとっても理解しやすいWebアプリケーションを構築できます。
初心者がつまずきやすいポイントの整理
学習の中で紹介したように、リクエストパラメータ取得ではいくつかのエラーが発生しやすいポイントがあります。 代表的なのが、必須パラメータが指定されていない場合に発生する四〇〇エラーや、 URLの指定ミスによる四〇四エラー、そして型変換エラーです。 これらはSpring Bootが自動でチェックしてくれている証拠でもあり、 原因を一つずつ確認すれば必ず解決できます。 defaultValueの設定やrequired属性の指定、URL設計の見直しを行うことで、 安定したリクエスト処理が可能になります。
また、ユーザーは自由にURLを変更できるため、 想定外の値が送られてくる可能性を常に意識することも大切です。 数値として扱うべきパラメータに文字列が渡された場合や、 存在しないIDが指定された場合の挙動を考慮し、 バリデーションやエラーハンドリングを組み合わせることで、 より信頼性の高いWebアプリケーションになります。
サンプルプログラムで確認する基本形
最後に、これまで学んだ内容を整理したシンプルなサンプルを振り返ってみましょう。 リクエストパラメータを受け取り、画面に表示する基本形は次のようになります。
@Controller
public class SampleController {
@GetMapping("/example")
public String example(
@RequestParam(value = "text", required = false, defaultValue = "未指定") String text,
Model model
) {
model.addAttribute("text", text);
return "example";
}
}
このような形を理解しておけば、検索画面や入力フォーム、 一覧ページの条件指定など、さまざまな場面で応用できます。 Spring Bootのリクエストパラメータ取得は決して難しいものではなく、 基本を押さえれば自然と使いこなせるようになります。
生徒
「リクエストパラメータって、最初は難しそうに見えましたけど、 @RequestParamと@PathVariableの役割が分かると、すごく整理できました。」
先生
「そうだね。どちらも同じ『値を受け取る』仕組みだけど、 URLの意味をどう持たせたいかで使い分けるのがポイントだよ。」
生徒
「検索条件は@RequestParam、商品IDみたいなものは@PathVariable、 という使い分けが実務でも役立ちそうです。」
先生
「その理解で大丈夫。 あとはエラーが出たときに、どこが原因かを落ち着いて確認できれば、 Spring Bootでの開発がぐっと楽になるよ。」
生徒
「まずは小さなアプリを作りながら、リクエストパラメータの扱いに慣れていきます!」
先生
「それが一番の近道だね。 今回学んだ内容を土台に、フォーム送信やバリデーションにも挑戦してみよう。」