HttpServletRequestからリクエストのパラメータを取得
HttpServletRequestの使用が考えられる場面
SpringBootなどのフレームワークのコントローラでは、通常リクエストのパラメータをメソッド引数として自動的にマッピングできますが、HttpServletRequestを直接使用してパラメータを取得しなければいけない場面もいくつかあります。
例えば以下のようなケースです。
フィルタやインターセプタ内でのリクエスト処理
フィルタやインターセプタを使ってコントローラの前後に処理を挿入するケースは多々ありますが、これらのコンポーネントはコントローラに到達する前に実行されるため、コントローラのメソッド引数バインディングは使えません。
普段コントローラの実装しかしない人は戸惑うでしょうね。私も戸惑いました。
この場合はHttpServletRequestを直接操作して、パラメータやリクエスト情報を取得する必要があります。
動的にパラメータ名が変わる場合
リクエストパラメータの名前が動的に変わる、または何が送信されるかが事前に分からない場合は、メソッド引数としてマッピングできないため、HttpServletRequestを使ってすべてのパラメータを取得し、動的に処理することになります。(あまりないケースですが)
HttpServletRequestでパラメータを取得する方法
HttpServletRequestから特定のパラメータを取得する場合、以下の3つのメソッドが使用できます。
1. getParameter(String name)
指定された名前のリクエストパラメータの値を取得します。
値は文字列として返されます。
パラメータが存在しない場合は null が返されます。
String value = request.getParameter("paramName");
2. getParameterValues(String name)
指定された名前のリクエストパラメータのすべての値を配列で取得します。
複数の値を持つパラメータ(例:チェックボックス)に対して使用されます。
パラメータが存在しない場合は null が返されます。
String[] values = request.getParameterValues("paramName");
3. getParameterMap()
すべてのリクエストパラメータの名前と値を Map
Map<String, String[]> paramMap = request.getParameterMap();
サンプルコード
以下は、リクエストから特定のパラメータを取得するサンプルコードです:
import javax.servlet.http.HttpServletRequest; import java.util.Map; public class ParameterExample { public void handleRequest(HttpServletRequest request) { // 単一のパラメータを取得 String singleParam = request.getParameter("singleParam"); // 単一のパラメータの表示 System.out.println("Single Parameter: " + singleParam); // 複数の値を持つパラメータを取得 String[] multiParams = request.getParameterValues("multiParam"); // 複数のパラメータの表示 if (multiParams != null) { for (String value : multiParams) { System.out.println("Multi Parameter Value: " + value); } } // すべてのパラメータを取得 Map<String, String[]> allParams = request.getParameterMap(); // すべてのパラメータを表示 for (Map.Entry<String, String[]> entry : allParams.entrySet()) { System.out.print("Parameter Name: " + entry.getKey() + " Values: "); for (String value : entry.getValue()) { System.out.print(value + " "); } } } }
フレームワークによっては他の方法で取得することもできますが、HttpServletRequestであれば上記のような方法で簡単に取得することができます。