「リクエスト情報の取得(HttpServletRequest)」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
*&bold(){リクエストパラメータの取得(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 &br() 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」メソッドに記述する。
*&bold(){日本語パラメータの対応(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 &br() http://localhost:8080/sample/RequestSample2|
*&bold(){日本語パラメータの対応(setCharacterEncoding)}
POSTメソッドでは使えるがGETメソッドでは使えない。
*&bold(){パラメータ名の取得(getParameterNames)}
Enumeration names = request.getParameterNames();
while (names.hasMoreElements()){
String name = (String)names.nextElement();
}
|URL|http://localhost:8080/sample/formsample4.html &br() http://localhost:8080/sample/RequestSample4|
*&bold(){リクエストURIの取得(getRequestURI)}
|getRequestURL|URL形式で取得。戻り値がStringBufferクラスのオブジェクトになっているため注意が必要。 &br() (http://localhost:8080/sample/RequestSample5)|
|getRequestURI|リクエストに含まれるポート番号とパラメータの間の部分を取得。つまりコンテキストパス+サーブレットパスの部分。 &br() (/sample/RequestSample5)|
|getServletPath|サーブレットパスの部分だけを取得。 &br() (/RequestSample5)|
|URL|http://localhost:8080/sample/RequestSample5|
*&bold(){リクエスト方法の取得(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());
*&bold(){ヘッダーの名前の取得(getHeaderNames)}
&italic(){次回はここから http://www.javadrive.jp/servlet/request/index8.html}
*&bold(){リクエストパラメータの取得(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 &br() 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」メソッドに記述する。
*&bold(){日本語パラメータの対応(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 &br() http://localhost:8080/sample/RequestSample2|
*&bold(){日本語パラメータの対応(setCharacterEncoding)}
POSTメソッドでは使えるがGETメソッドでは使えない。
*&bold(){パラメータ名の取得(getParameterNames)}
Enumeration names = request.getParameterNames();
while (names.hasMoreElements()){
String name = (String)names.nextElement();
}
|URL|http://localhost:8080/sample/formsample4.html &br() http://localhost:8080/sample/RequestSample4|
*&bold(){リクエストURIの取得(getRequestURI)}
|getRequestURL|URL形式で取得。戻り値がStringBufferクラスのオブジェクトになっているため注意が必要。 &br() (http://localhost:8080/sample/RequestSample5)|
|getRequestURI|リクエストに含まれるポート番号とパラメータの間の部分を取得。つまりコンテキストパス+サーブレットパスの部分。 &br() (/sample/RequestSample5)|
|getServletPath|サーブレットパスの部分だけを取得。 &br() (/RequestSample5)|
|URL|http://localhost:8080/sample/RequestSample5|
*&bold(){リクエスト方法の取得(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());
*&bold(){ヘッダーの名前の取得(getHeaderNames)}
ヘッダの名前を取得するには「HttpServletRequest」インターフェースで定義されている「getHeaderNames」メソッドを使用。
*&bold(){ヘッダーの値の取得(getHeader)}
ヘッダの値を取得するには「HttpServletRequest」インターフェースで定義されている「getHeader」メソッドを使用。
ヘッダーによっては値が1つではなく複数ある場合があります。全ての値を取得するためのメソッドとして「getHeaders」メソッドを使用。