リクエスト情報の取得(HttpServletRequest)


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

リクエストパラメータの取得(getParameter)

getParameterメソッド 値の中の最初のものだけを取得
getParameterValuesメソッド 全ての値を取得
  • getParameterメソッド
String val = request.getParameter("name");
  • getParameterValuesメソッド
String vals[] = request.getParameterValues("name");
if (vals != null){
    for (int i = 0 ; i < vals.length ; i++){
        out.println(vals[i]);
    }
}
送られてきていない名前を指定して値を取得しようとすると、値はnullとなる。
取得できる値は全てString型のため、必要があれば数値型に変換が必要。
URL http://localhost:8080/sample/formsample1.html
http://localhost:8080/sample/RequestSample1
アプリケーション配置場所 c:\servlet-sample\sample\
web.xmlファイル c:\servlet-sample\sample\WEB-INF\web.xml
コンテキストファイル C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml
GETメソッドの場合は「doGet」メソッドに、POSTメソッドの場合は「doPost」メソッドに記述する。

日本語パラメータの対応(getBytes)

1.文字列をバイト列に戻す
String val = request.getParameter("name");

try {
    byte[] byteData = val.getBytes("ISO_8859_1");    // デフォルトのISO-8859-1を変換する
}catch(UnsupportedEncodingException e){
    System.out.println(e);
}
2.バイト列から文字列を作成する
基本的にブラウザはフォームが含まれるHTMLページの文字コードを使ってエンコードを行う。
String val = request.getParameter("name");

try {
    byte[] byteData = val.getBytes("ISO_8859_1");
    val = new String(byteData, "Shift_JIS");
}catch(UnsupportedEncodingException e){
    System.out.println(e);
}
URL http://localhost:8080/sample/formsample2.html
http://localhost:8080/sample/RequestSample2

日本語パラメータの対応(setCharacterEncoding)

POSTメソッドでは使えるがGETメソッドでは使えない。

パラメータ名の取得(getParameterNames)

Enumeration names = request.getParameterNames();
while (names.hasMoreElements()){
    String name = (String)names.nextElement();
}
URL http://localhost:8080/sample/formsample4.html
http://localhost:8080/sample/RequestSample4

リクエストURIの取得(getRequestURI)

getRequestURL URL形式で取得。戻り値がStringBufferクラスのオブジェクトになっているため注意が必要。
http://localhost:8080/sample/RequestSample5
getRequestURI リクエストに含まれるポート番号とパラメータの間の部分を取得。つまりコンテキストパス+サーブレットパスの部分。
(/sample/RequestSample5)
getServletPath サーブレットパスの部分だけを取得。
(/RequestSample5)

URL http://localhost:8080/sample/RequestSample5

リクエスト方法の取得(getScheme)

getScheme リクエストのスキームを取得。例えばHTTP又はHTTPSなどが取得できるのでSSL通信が行われているかどうかの判別に利用。
getProtocol HTTPであれば「HTTP/1.0」や「HTTP/1.1」などのようにプロトコルとプロトコルバージョンが取得出来る。「HTTP/1.1」の場合だけ行いたい処理がある時などに利用。
getMethod 「GET」や「POST」などのHTTPメソッド名が取得る。
sb.append("getScheme:");
sb.append(request.getScheme());

sb.append("getProtocol:");
sb.append(request.getProtocol());

sb.append("getMethod:");
sb.append(request.getMethod());

ヘッダーの名前の取得(getHeaderNames)

ヘッダの名前を取得するには「HttpServletRequest」インターフェースで定義されている「getHeaderNames」メソッドを使用。

ヘッダーの値の取得(getHeader)

ヘッダの値を取得するには「HttpServletRequest」インターフェースで定義されている「getHeader」メソッドを使用。
ヘッダーによっては値が1つではなく複数ある場合があります。全ての値を取得するためのメソッドとして「getHeaders」メソッドを使用。