クライアントの要求についての情報をサーブレットへ提供するオブジェクトを定義します。サーブレットコンテナが ServletRequest オブジェクトを作成し、それを引数としてサーブレットの service メソッドへ渡します。 ServletRequest オブジェクトは、パラメータの名前と値、属性、および入力ストリームなどのデータを提供します。ServletRequest を拡張したインタフェースからは、追加情報としてのプロトコル固有データを取得することができます。
ServletRequestインタフェースの主なメソッド
| メソッド |
動作 |
String getParameter (String name) |
指定されたパラメータの値を String として返します。 |
| String[] getParameterValues(String name) |
指定されたリクエストパラメータのすべての値が格納された String オブジェクトの配列を返します。 |
| Map getParameterMap() |
リクエストから取得できるパラメータを Map で返します。 |
| Enumeration getParameterNames() |
リクエストに含まれるパラメータの名前を格納した、String オブジェクトの Enumeration を返します。 |
|
getParameterメソッド
getParameterメソッドは指定されたパラメータの値を一つだけ返します。指定されたパラメータが存在しない場合は nullを返します。またパラメータに複数の値が含まれている場合は getParameterValues メソッドで取得できる配列の先頭の要素のみを返します。
例えばこのようなURLでアクセスしてみます「http://localhost:8080/wtomcat/getparameter?name=satoh」。次の実行結果のように、パラメータで与えた値が表示されたと思います。
[ソース]
package com.sitecooler.servlet;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SampleGetParameter extends HttpServlet {
protected void doGet(
HttpServletRequest req,
HttpServletResponse res)
throws ServletException, java.io.IOException {
req.setCharacterEncoding("Shift_JIS");
res.setContentType("text/html;charset=Windows-31J");
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<body>");
out.println("パラメータ「name」の値は ");
out.println(req.getParameter("name"));
out.println("です。");
out.println("</body>");
out.println("</html>");
}
}
[実行例]
getParameterNamesメソッド
getParameterNamesメソッドはリクエストから取得できる値をを Enumerationで返します。返される Enumerationから全てのName要素を取得して値を参照することによって、すべての要素へアクセスすることができます。
[ソース]
package com.sitecooler.servlet;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SampleGetParameterNames extends HttpServlet {
protected void doGet(
HttpServletRequest req,
HttpServletResponse res)
throws ServletException, java.io.IOException {
doRequest(req,res);
}
protected void doPost(
HttpServletRequest req,
HttpServletResponse res)
throws ServletException, java.io.IOException {
doRequest(req,res);
}
protected void doRequest(
HttpServletRequest req,
HttpServletResponse res)
throws ServletException, java.io.IOException {
req.setCharacterEncoding("Shift_JIS");
res.setContentType("text/html;charset=Windows-31J");
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<table table width='400' border='1' cellspacing='0' cellpadding='2'>");
out.println(" <tr>");
out.println(" <th width='50%'>キー</th>");
out.println(" <th width='50%'>値</th>");
out.println(" </tr>");
Enumeration objEnum = req.getParameterNames();
while(objEnum.hasMoreElements()) {
String strName = (String)objEnum.nextElement();
String strVal = (String)req.getParameter(strName);
out.println(" <tr>");
out.println(" <td>" + strName + "</th>");
out.println(" <td>" + strVal + "</th>");
out.println(" </tr>");
}
out.println("</table>");
out.println("</body>");
out.println("</html>");
}
}