JSP/Servlet | HTTPServletRequestメソッド

HTTPリクエストで送信された値、Cookie、ヘッダー、クライアント情報を取得するために使うものがrequestです。

このRequestオブジェクトのメソッドについて整理しました。

始める前に

戻り値の例は、次のURLを受け取ったものとして説明します。

http://www.devkuma.com:8080/app/request.jsp?name=devkuma

主な情報

メソッド 戻り値の例 説明
request.getRequestURL() http://www.devkuma.com:8080/app/request.jsp
request.getRequestURI() /app/request.jsp URLからスキーム、サーバー名、ポート番号を除いた残りのアドレスとパラメータ
request.getScheme() http http、https、ftpなどのプロトコル
request.getServerName() www.devkuma.com サーバー名
request.getServerPort() 8080 サーバーポート
request.getContextPath() /app コンテキストパス
request.getMethod() GET GET/POSTなどのHTTPメソッド
request.isSecure() false SSLセキュリティの有無。httpsのような安全なチャネルを使っているかをtrue/falseで返す
request.getLocale() ko_KR ロケール情報
request.getProtocol() HTTP/1.1 使用しているプロトコル。プロトコル/メジャーバージョン.マイナーバージョン

Local基本情報(サーバー情報)

メソッド 戻り値の例 説明
request.getLocalAddr() 127.0.0.1
request.getLocalName() localhost
request.getLocalPort() 8080

Remote情報(クライアント情報)

メソッド 戻り値の例 説明
request.getRemoteAddr() 127.0.0.1
request.getRemoteHost() 127.0.0.1
request.getRemotePort() 60361

Session ID

メソッド 戻り値の例 説明
request.getRequestedSessionId() 39AE7AC19BC174D803C2A7BD8638E382 セッションID
request.getSession().getId() 39AE7AC19BC174D803C2A7BD8638E382 セッションID
request.isRequestedSessionIdFromCookie() true session idがCookieで提供されたかどうか
request.isRequestedSessionIdFromURL() false session idがURLの一部として提供されたかどうか
request.isRequestedSessionIdValid() true sessionがまだ有効かどうか

Parameter情報

メソッド 戻り値の例 説明
request.getParameterNames() java.util.Enumeration すべてのパラメータ名を返します。
request.getParameter(name) devkuma パラメータ名でパラメータ値を返します。

すべてのParameter値を表示

Enumeration params = request.getParameterNames();
while (params.hasMoreElements()) {
    String name = (String) params.nextElement();
    String value = request.getParameter(name);
    logger.debug(name + "=" + value);
}

表示される戻り値は次のとおりです。

name=devkuma

/app/request.jsp?name=devkumaとしてリクエストしたため、上記のように表示されます。

Cookie情報

メソッド 戻り値の例 説明
request.getCookies() Array すべてのCookie値を返します。

すべてのCookie値を表示

Cookie cookies[] = request.getCookies();
for(int i = 0; i < cookies.length; i++) {
    String name = cookies[i].getName();
    String value = cookies[i].getValue();
    logger.debug(name + "=" + value);
}

表示される戻り値は次のとおりです。

JSESSIONID=39AE7AC19BC174D803C2A7BD8638E382

この戻り値の例では、特に追加したCookie値がないためJSESSIONIDだけが表示されます。

Attribute

メソッド 戻り値の例 説明
request.getAttributeNames() Array すべてのattribute名を返します。
request.getAttribute(name) attribute値を返します。

すべてのAttribute値を表示

Enumeration<String> attrs = request.getAttributeNames();
while (attrs.hasMoreElements()) {
    String name = (String)attrs.nextElement();
    String value = (String)request.getAttribute(name);
    logger.debug(name + " : " + value);
}

Header情報

メソッド 戻り値の例 説明
request.getHeaderNames() java.util.Enumeration すべてのヘッダー名を返します。
request.getHeader(“user-agent”) Mozilla/5.0 …. ヘッダー名でヘッダー値を返します。

すべてのHeader値を表示

Enumeration<String> headers = request.getHeaderNames();
while (headers.hasMoreElements()) {
    String name = (String) headers.nextElement();
    String value = request.getHeader(name);
    logger.debug(name + "=" + value);
}

表示される戻り値は次のとおりです。

host=www.devkuma.com:8080
connection=keep-alive
cache-control=max-age=0
upgrade-insecure-requests=1
user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
accept-encoding=gzip, deflate
accept-language=ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,ja;q=0.6,es;q=0.5
cookie=JSESSIONID=26356CFACA2FFA1B4AA25C75D291E028

Request Body

Request Bodyで渡されるデータを取得する方法は次のとおりです。

DataInputStream dis = new DataInputStream(request.getInputStream());
String str = null
while ((str = dis.readLine()) != null) {
    logger.debug(new String(str.getBytes("ISO-8859-1"), "utf-8") + "/n");
    // euc-krで送信された韓国語は文字化けする。
}