カテゴリ: Jakarta EE 更新日: 2025/12/25

Jakarta サーブレットでクエリパラメータを取得する方法を徹底解説!初心者でもわかる使い方

クエリパラメータの取得方法
クエリパラメータの取得方法

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

生徒

「先生、URLに?name=taro&age=20みたいなものが付いているのを見たことがあります。これはどうやってサーブレットで取り出すんですか?」

先生

「それがクエリパラメータだよ。Jakarta サーブレットではHttpServletRequestを使って簡単に取得できるんだ。」

生徒

「パラメータを取り出すときには特別なメソッドを使うんですか?」

先生

「そうだね。getParametergetParameterValuesを使うんだ。実際のコードを見てみよう。」

1. クエリパラメータとは?

1. クエリパラメータとは?
1. クエリパラメータとは?

クエリパラメータとは、URLの末尾に「?キー=値」という形式で付与される追加情報のことです。例えば次のようなURLを考えてみましょう。


http://localhost:8080/sample?name=taro&age=20

この場合、nameが「taro」、ageが「20」というパラメータになります。Webアプリケーションではフォーム入力や検索キーワードの受け渡しなどで頻繁に使われます。

2. getParameterメソッドで単一値を取得する

2. getParameterメソッドで単一値を取得する
2. getParameterメソッドで単一値を取得する

HttpServletRequestgetParameterメソッドを使うと、指定したキーに対応する値を文字列として取得できます。


String name = request.getParameter("name");
String age = request.getParameter("age");

例えばURLが?name=taro&age=20なら、nameには「taro」、ageには「20」が入ります。

3. getParameterValuesで複数値を取得する

3. getParameterValuesで複数値を取得する
3. getParameterValuesで複数値を取得する

チェックボックスや複数選択のフォームでは、同じキーに複数の値が送られることがあります。その場合はgetParameterValuesを使いましょう。


String[] hobbies = request.getParameterValues("hobby");

これで「hobby=music&hobby=sports&hobby=game」のようなリクエストが来た場合に、配列でまとめて受け取れます。

4. getParameterNamesで全パラメータを列挙する

4. getParameterNamesで全パラメータを列挙する
4. getParameterNamesで全パラメータを列挙する

クエリパラメータのキーをすべて確認したいときはgetParameterNamesを使います。


Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
    String param = names.nextElement();
    String value = request.getParameter(param);
}

これで送られてきた全パラメータを確認できるので、デバッグやログ出力に役立ちます。

5. 実際のサーブレットコード例

5. 実際のサーブレットコード例
5. 実際のサーブレットコード例

以下のサンプルは、送られてきたnameageを取得してブラウザに表示するサーブレットです。


@WebServlet("/query")
public class QueryServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws IOException {
        response.setContentType("text/plain; charset=UTF-8");
        PrintWriter out = response.getWriter();

        String name = request.getParameter("name");
        String age = request.getParameter("age");

        out.println("名前: " + name);
        out.println("年齢: " + age);
    }
}

ブラウザから次のようにアクセスすると:


http://localhost:8080/query?name=hanako&amp;age=25

表示結果は以下のようになります。


名前: hanako
年齢: 25

6. フォーム送信とクエリパラメータ

6. フォーム送信とクエリパラメータ
6. フォーム送信とクエリパラメータ

HTMLフォームをmethod="get"で送信すると、入力内容がクエリパラメータとしてURLに付加されます。


<form action="query" method="get">
    <input type="text" name="name" placeholder="名前">
    <input type="number" name="age" placeholder="年齢">
    <button type="submit">送信</button>
</form>

これにより入力内容がサーブレットに渡り、上で紹介したgetParameterで簡単に取得できます。

7. 注意点とベストプラクティス

7. 注意点とベストプラクティス
7. 注意点とベストプラクティス

クエリパラメータを扱う際には次のポイントを意識しましょう。

  • 文字化け防止のためにサーブレット側でUTF-8を設定する。
  • 数値はInteger.parseIntなどで型変換する必要がある。
  • 必須パラメータが存在しない場合に備えてnullチェックを行う。
  • ログに直接出力する場合はセキュリティのためにエスケープ処理を検討する。

これらを守ることで安定したJakarta サーブレットアプリケーションを作ることができます。

まとめ

まとめ
まとめ

Jakarta サーブレットにおけるクエリパラメータ取得の重要性

今回の記事では、Jakarta サーブレットを使ってクエリパラメータを取得する方法について、基本から実践的な使い方まで丁寧に解説してきました。Webアプリケーション開発において、URLに付与されるクエリパラメータは非常に重要な役割を持っています。検索条件の受け渡し、フォーム入力値の送信、画面遷移時の状態管理など、さまざまな場面でクエリパラメータは活用されています。Jakarta サーブレットでこれらを正しく扱えるようになることは、Web開発者としての基礎力を高めるうえで欠かせません。

クエリパラメータは「キーと値」の組み合わせで構成されており、HttpServletRequestを通して簡単に取得できる点が大きな特徴です。特別な設定や複雑な処理を行わなくても、getParameterやgetParameterValuesといったメソッドを使うだけで、リクエストに含まれる情報を取り出せます。これにより、初心者でも比較的早い段階で動くサーブレットを作成できるようになります。

getParameterとgetParameterValuesの使い分け

記事の中で紹介したように、単一の値を取得する場合はgetParameter、複数の値をまとめて扱う場合はgetParameterValuesを使うのが基本です。例えば、名前や年齢といった一つの値しか持たないパラメータはgetParameterで十分ですが、チェックボックスや複数選択フォームのように同じキーで複数の値が送信される場合にはgetParameterValuesが必要になります。この使い分けを理解しておくことで、フォーム処理や検索機能の実装がスムーズになります。

また、getParameterNamesを利用すれば、送信されたすべてのパラメータ名を列挙できます。これはデバッグ時やログ出力、動的にパラメータを処理したい場合に役立ちます。どのようなクエリパラメータが実際に送られてきているのかを把握することで、想定外の入力にも柔軟に対応できるようになります。

実践的なサーブレット開発で意識したいポイント

クエリパラメータを扱う際には、単に値を取得するだけでなく、その後の処理にも注意が必要です。文字コードの設定を適切に行わないと文字化けが発生する可能性がありますし、数値として扱う値は型変換を行わなければなりません。また、必須パラメータが送られてこなかった場合を想定して、nullチェックや入力チェックを行うことも重要です。

これらの基本的な対策を行うことで、安定したJakarta サーブレットアプリケーションを構築できます。特に初心者のうちは、エラーが発生した原因が分からずに悩むことも多いですが、クエリパラメータの扱い方をしっかり理解しておくことで、トラブルシューティングもしやすくなります。今回学んだ内容は、今後JSPやJakarta EE全体を学習していく際の土台としても役立つはずです。

まとめとしてのサンプルプログラム

最後に、クエリパラメータ取得の基本を確認するためのシンプルなサーブレットコードを改めて見てみましょう。以下のようなコードを書けるようになれば、Jakarta サーブレットでのリクエスト処理に自信が持てるようになります。


protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws IOException {
    response.setContentType("text/plain; charset=UTF-8");
    String keyword = request.getParameter("keyword");
    if (keyword != null) {
        response.getWriter().println("検索キーワード: " + keyword);
    }
}

このように、クエリパラメータを取得して処理する流れは非常にシンプルです。まずは基本形をしっかり身につけ、徐々に条件分岐や入力チェックなどを追加していくことで、より実践的なWebアプリケーションへと発展させることができます。

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

生徒

「クエリパラメータって、ただURLに付いている文字列だと思っていましたが、サーブレットで簡単に扱えるんですね。」

先生

「そうだよ。Jakarta サーブレットではHttpServletRequestが用意されているから、基本的な取得はとても簡単なんだ。」

生徒

「getParameterとgetParameterValuesの違いも、フォームを作りながらだと理解しやすかったです。」

先生

「実際に手を動かすのは大事だね。これが分かれば、検索機能や入力フォームの処理も作れるようになるよ。」

生徒

「次はJSPと組み合わせて、画面に表示する処理にも挑戦してみたいです。」

先生

「いい心がけだね。今日学んだクエリパラメータの知識は、これからのJakarta EE開発でも必ず役に立つよ。」

カテゴリの一覧へ
新着記事
New1
Play Framework
Play Frameworkでフォームデータをコントローラで扱う方法を完全解説|Java初心者向けコントローラ入門
New2
Jakarta EE
Jakarta EE JSPにおけるJSTLとスクリプトレットの違いと使い分けを初心者向けに徹底解説
New3
Play Framework
Play Frameworkでクエリパラメータをコントローラで処理する方法を完全解説|Java初心者向け入門
New4
Play Framework
Play FrameworkとSpring Bootの違いを徹底比較!初心者でもわかるJavaフレームワーク入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.5
Java&Spring記事人気No5
Jakarta EE
Jakarta EE JSPにおけるJSTL国際化タグ(fmt:message)の使い方を初心者向けに完全解説
No.6
Java&Spring記事人気No6
Jakarta EE
Jakarta EE JSPでJSTL SQLタグを使った簡易データベースアクセスをやさしく解説
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EE JSPでJSTLを使ったJSONやREST APIレスポンス処理を初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Play Framework
Play Frameworkでリクエストデータの受け取り方を完全解説|Java初心者向けコントローラ入門