Javaサーブレットでリクエストパラメーターを取得する方法#覚書
-
HttpServletRequestを使用する方法:
HttpServletRequestオブジェクトを使用してリクエストパラメーターを取得します。このオブジェクトはサーブレットのdoGet()またはdoPost()メソッドの引数として提供されます。import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class YourServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String parameterValue = request.getParameter("parameterName"); // parameterValueにはリクエストパラメーターの値が格納されます } }
リクエストパラメーターは、URLにクエリ文字列として渡されるため、例えば**
http://example.com/servlet-path?parameterName=parameterValue
**といった形で渡されます。 -
リクエストパラメーターが複数ある場合の取得方法:
リクエストパラメーターが複数ある場合、**request.getParameter()
**メソッドは配列として取得されます。import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class YourServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String[] parameterValues = request.getParameterValues("parameterName"); // parameterValuesにはリクエストパラメーターの値が配列として格納されます } }
このようにして、リクエストパラメーターを取得し、必要に応じて処理することができます。
注意: リクエストパラメーターは常に文字列として取得されるため、適宜変換(数値へのパースなど)が必要な場合があります。また、リクエストパラメーターが存在しない場合はnullが返されるため、適切なエラーハンドリングを行う必要があります。
リクエストパラメーターのエンコーディング:
リクエストパラメーターの値は通常、URLエンコードされて送信されます。サーブレットコンテナはこれらの値をデコードして提供します。このデコードは通常UTF-8で行われますが、場合によっては異なるエンコーディングが使われることもあります。リクエストパラメーターの値を取得する際には、適切なエンコーディングを指定して取得することが重要です。
String parameterValue = request.getParameter("parameterName");
if (parameterValue != null) {
// リクエストパラメーターの値をUTF-8でデコード
parameterValue = new String(parameterValue.getBytes("ISO-8859-1"), "UTF-8");
}
-
リクエストパラメーターのマルチバイト文字対応:
リクエストパラメーターがマルチバイト文字を含む場合、正しく取得するためには適切なエンコーディングを指定することが重要です。リクエストパラメーターの値が日本語などのマルチバイト文字を含む場合、UTF-8エンコーディングを使用するのが一般的だそうです。 -
String parameterValue = request.getParameter("parameterName"); if (parameterValue != null) { // リクエストパラメーターの値をUTF-8でデコード parameterValue = new String(parameterValue.getBytes("ISO-8859-1"), "UTF-8"); }
これらの手法を使用して、Javaサーブレットでリクエストパラメーターを正しく取得し、適切に処理することができます。