public interface HttpServletRequest extends ServletRequest
ServletRequest
を拡張してHTTPサーブレットのためのリクエストの情報を提供します。
サーブレットコンテナはHttpServletRequest
を作成してサーブレットのservice
(doGet
、doPost
、など)メソッドの引数として渡します。
修飾子とタイプ | フィールドと説明 |
---|---|
static String |
BASIC_AUTH
ベーシック認証のための識別文字列です。
|
static String |
CLIENT_CERT_AUTH
クライアント証明書認証のための識別文字列です。
|
static String |
DIGEST_AUTH
ダイジェスト認証のための識別文字列です。
|
static String |
FORM_AUTH
フォーム認証のための識別文字列です。
|
修飾子とタイプ | メソッドと説明 |
---|---|
boolean |
authenticate(HttpServletResponse response)
ServletContext 用に設定されたコンテナログインメカニズムを使用して、このリクエストを行うユーザーを認証します。 |
String |
changeSessionId()
このリクエストに関連付けられている現在のセッションのセッションIDを変更し、新しいセッションIDを返します。
|
String |
getAuthType()
サーブレットを保護するために使用される認証方式の名前を返します。
|
String |
getContextPath()
リクエストURIからリクエストのコンテキストを示す部分を返します。
|
Cookie[] |
getCookies()
このリクエストでクライアントが送信したすべての
Cookie オブジェクトを含む配列を返します。 |
long |
getDateHeader(String name)
リクエストヘッダーの指定された値の
Date オブジェクトを表すlong 値を返します。 |
String |
getHeader(String name)
リクエストヘッダーの指定された値を
String として返します。 |
Enumeration<String> |
getHeaderNames()
リクエストに含まれるすべてのヘッダーの名前のEnumerationを返します。
|
Enumeration<String> |
getHeaders(String name)
リクエストヘッダーの指定された値を
String オブジェクトのEnumeration として返します。 |
default HttpServletMapping |
getHttpServletMapping()
|
int |
getIntHeader(String name)
リクエストヘッダーの指定された値を
int として返します。 |
String |
getMethod()
リクエストが行われたHTTPのメソッドの名前を返します。
|
Part |
getPart(String name)
与えられた名前で
Part を取得します。 |
Collection<Part> |
getParts()
multipart/form-data によって提供されるこのリクエストのすべてのPart 要素を取得します。 |
String |
getPathInfo()
このリクエストを行ったときにクライアントが送信したURLに関連付けられた拡張パス情報を返します。
|
String |
getPathTranslated()
サーブレット名の後ろからクエリ文字列の前の拡張パス情報を実際のパスに変換したものを返します。
|
String |
getQueryString()
リクエストURLからパスの後に含まれるクエリ文字列を返します。
|
String |
getRemoteUser()
ユーザーが認証されている場合にこのリクエストを行うユーザーのログイン名を返します。
|
String |
getRequestedSessionId()
クライアントによって指定されたセッションIDを返します。
|
String |
getRequestURI()
このリクエストのURLのうち、プロトコル名からHTTPリクエストの最初の行のクエリ文字列までの部分を返します。
|
StringBuffer |
getRequestURL()
クライアントがリクエストに使用したURLを再構成します。
|
String |
getServletPath()
サーブレットを呼び出すこのリクエストのURLの一部を返します。
|
HttpSession |
getSession()
このリクエストに関連付けられている現在のセッションを返します。
|
HttpSession |
getSession(boolean create)
このリクエストに関連付けられている現在の
HttpSession を返します。 |
default Map<String,String> |
getTrailerFields()
リクエストのトレーラーフィールドを取得します。
|
Principal |
getUserPrincipal()
現在の認証されたユーザの名前を含む
java.security.Principal のオブジェクトを返します。 |
boolean |
isRequestedSessionIdFromCookie()
要求されたセッションIDがHTTP Cookieとしてサーバーに送信されたかどうかを確認します。
|
boolean |
isRequestedSessionIdFromUrl()
非推奨です。
Java Servlet API Version 2.1 から
isRequestedSessionIdFromURL() に置き換えられました。 |
boolean |
isRequestedSessionIdFromURL()
要求されたセッションIDがリクエストURLの一部としてサーバーに送信されたかどうかを確認します。
|
boolean |
isRequestedSessionIdValid()
要求されたセッションIDがまだ有効かどうかを確認します。
|
default boolean |
isTrailerFieldsReady()
トレーラーフィールドが
getTrailerFields() を使用して読み込み可能かどうかを示すbooleanを返します。 |
boolean |
isUserInRole(String role)
認証されたユーザが指定された論理的な"ロール"に含まれているかどうかを示すbooleanを返します。
|
void |
login(String username,
String password)
提供されたユーザ名とパスワードを
ServletContext 用に設定されたウェブコンテナログインメカニズムによって使用されるパスワード検証機構で検証します。 |
void |
logout()
リクエストで
getUserPrincipal 、getRemoteUser 、getAuthType が呼び出されたときに返される値としてnull を設定します。 |
default PushBuilder |
newPushBuilder()
現在のリクエストからサーバープッシュレスポンスを発行するための
PushBuilder の新しいインスタンスを作成します。 |
<T extends HttpUpgradeHandler> |
upgrade(Class<T> handlerClass)
指定されたクラスで
HttpUpgradeHandler のインスタンスを作成し、httpプロトコルのアップグレードプロセスに使用します。 |
getAsyncContext, getAttribute, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getParameter, getParameterMap, getParameterNames, getParameterValues, getProtocol, getReader, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getRequestDispatcher, getScheme, getServerName, getServerPort, getServletContext, isAsyncStarted, isAsyncSupported, isSecure, removeAttribute, setAttribute, setCharacterEncoding, startAsync, startAsync
static final String CLIENT_CERT_AUTH
String getAuthType()
null
を返します。
CGIの変数AUTH_TYPE
の値と同じです。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
Cookie[] getCookies()
Cookie
オブジェクトを含む配列を返します。 このメソッドは、送信されたCookieがない場合はnull
を返します。Cookie
オブジェクトを含む配列、送信されたCookieがない場合はnull
long getDateHeader(String name)
Date
オブジェクトを表すlong
値を返します。
このメソッドはIf-Modified-Since
のような日付を含むヘッダーに使用します。
返される日付は1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数です。 ヘッダー名は大文字小文字を区別しません。
リクエストのヘッダーに指定された名前が存在しない場合はこのメソッドは-1を返します。
もしヘッダーを日付に変換できない場合、このメソッドはIllegalArgumentException
を投げます。
name
- ヘッダーの名前を指定するString
long
値、リクエストのヘッダーに名前が含まれない場合は-1IllegalArgumentException
- ヘッダーの値を日付に変換できなかったString getHeader(String name)
String
として返します。
リクエストが指定された名前のヘッダーを含まない場合はnull
を返します。
もしヘッダーに同じ名前で複数の値が含まれていた場合、このメソッドはリクエストの最初のヘッダーを返します。
ヘッダー名は大文字小文字を区別しません。
このメソッドは任意のリクエストヘッダーに対して使用できます。name
- ヘッダー名を指定する名前のString
String
、リクエストのヘッダーがその名前を持たない場合はnull
Enumeration<String> getHeaders(String name)
String
オブジェクトのEnumeration
として返します。
Accept-Language
のようないくつかのヘッダーはクライアントからカンマで区切られたリストとして送信されるのではなく、異なる値を持つ複数のヘッダーとして送信されます。
リクエストに指定した名前のヘッダーが含まれない場合はこのメソッドは空のEnumeration
を返します。
ヘッダー名は大文字小文字を区別しません。
このメソッドは任意のリクエストヘッダーに対して使用できます。
name
- ヘッダーの名前を示す String
Enumeration<String> getHeaderNames()
サーブレットコンテナによってはサーブレットはこのメソッドを使用してヘッダーにアクセスすることを許されていません。その場合このメソッドはnull
を返します。
int getIntHeader(String name)
int
として返します。
リクエストのヘッダーに指定された名前が存在しない場合はこのメソッドは-1を返します。
ヘッダーを整数に変換できない場合、このメソッドはNumberFormatException
を投げます。
ヘッダー名は大文字小文字を区別しません。
name
- ヘッダーの名前を示す String
NumberFormatException
- ヘッダーの値をint
に変換できなかったdefault HttpServletMapping getHttpServletMapping()
このHttpServletRequest
が呼び出されたHttpServlet
のHttpServletMapping
を返します。
該当するFilter
のマッピングは結果に表示されません。
現在のアクティブなServlet
呼び出しが、ServletRequest.getRequestDispatcher(java.lang.String)
後のRequestDispatcher.forward(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
の呼び出しによって行われた場合、
返されるHttpServletMapping
はRequestDispatcher
を取得するために使用されたパスに対応します。
現在のアクティブなServlet
呼び出しが、ServletRequest.getRequestDispatcher(java.lang.String)
後のRequestDispatcher.include(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
の呼び出しによって行われた場合、
返されるHttpServletMapping
は呼び出しシーケンスの最初のServlet
を呼び出す原因となったパスに対応します。
現在のアクティブなServlet
呼び出しが、AsyncContext.dispatch()
の呼び出しによって行われた場合、
返されるHttpServletMapping
は呼び出しシーケンスの最初のServlet
を呼び出す原因となったパスに対応します。
HttpServletMapping
に関連する追加のリクエストの属性については、RequestDispatcher.FORWARD_MAPPING
、
RequestDispatcher.INCLUDE_MAPPING
、AsyncContext.ASYNC_MAPPING
を参照してください。
現在のアクティブなServlet
呼び出しが、ServletContext.getNamedDispatcher(java.lang.String)
の呼び出しによって行われた場合、
返されたHttpServletMapping
はこのリクエストに最後に適用されたマッピングのパスに対応するものです。
返されるオブジェクトは不変です。 Servlet 4.0準拠の実装では、このメソッドをオーバーライドする必要があります。
HttpServletMapping
が返されます。HttpServletMapping
のインスタンスString getMethod()
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
String getPathInfo()
このメソッドは拡張パス情報が存在しない場合はnull
を返します。
CGIの変数PATH_INFOの値と同じです。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
、URLに拡張パス情報がない場合はnull
String getPathTranslated()
URLに拡張パス情報がない場合、このメソッドはnullを返します。 サーブレットコンテナは何らかの理由で(ウェブアプリケーションがアーカイブから実行されたときなど)仮想パスを実際のパスに変換できない場合があります。 ウェブコンテナはこの文字列をデコードしません。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
、URLに拡張パスの情報がない場合はnull
default PushBuilder newPushBuilder()
PushBuilder
の新しいインスタンスを作成します。
現在の接続がサーバープッシュをサポートしていないか、またはサーバープッシュがSETTINGS_ENABLE_PUSH
設定フレーム値0(ゼロ)でクライアントによって無効化されている場合、このメソッドはnullを返します。PushBuilder
、プッシュがサポートされていない場合はnullString getContextPath()
サーブレットコンテナが複数のコンテキストパスによってコンテキストに一致する可能性があります。
そのような場合、このメソッドはリクエストによって使用される実際のコンテキストパスを返し、
それはServletContext.getContextPath()
メソッドによって返されるパスと異なる場合があります。
ServletContext.getContextPath()
によって返されるコンテキストパスはアプリケーションのプライマリコンテキストパスまたは優先コンテキストパスと見なす必要があります。
String
ServletContext.getContextPath()
String getQueryString()
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
、URLにクエリ文字列が含まれない場合はnull
、この値はコンテナによってデコードされないString getRemoteUser()
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
、ユーザーのログイン名が不明な場合はnull
boolean isUserInRole(String role)
false
を返します。
ロール名 "*"はisUserInRole
を呼び出す時に引数として使用されるべきではありません。
isUserInRole
の"*"での呼び出しはfalseを返す必要があります。
テスト対象のセキュリティロールのロール名が"**"でアプリケーションがロール名が「**」のアプリケーションセキュリティロールを宣言していない場合、
isUserInRole
は、ユーザーが認証されている場合のみtrueを返す必要があります。つまり、getRemoteUser()
とgetUserPrincipal()
が両方ともnull以外の値を返す場合のみです。
それ以外の場合、コンテナはユーザーのアプリケーションロールのメンバーシップを確認する必要があります。
role
- ロールの名前を示すString
boolean
、ユーザーが認証されていない場合はfalse
Principal getUserPrincipal()
java.security.Principal
のオブジェクトを返します。
ユーザーが認証されていない場合、このメソッドはnull
を返します。java.security.Principal
、ユーザーが認証されていない場合はnull
String getRequestedSessionId()
null
を返します。String
、リクエストがセッションIDを指定しない場合はnull
isRequestedSessionIdValid()
String getRequestURI()
例えば:
HTTPリクエストの最初の行 | 戻り値 | |
---|---|---|
POST /some/path.html HTTP/1.1 | /some/path.html | |
GET http://foo.bar/a.html HTTP/1.0 | /a.html | |
HEAD /xyz?a=b HTTP/1.1 | /xyz |
スキームとホストでURLを再構築するには、 HttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest)
を使用してください。
訳注:HttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest)
は非推奨なので代替APIのgetRequestURL()
を使用してください。
String
HttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest)
StringBuffer getRequestURL()
このリクエストがRequestDispatcher.forward(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
を使用して転送された場合、再構築されたURLのサーバーパスはクライアントによって指定されたサーバーパスではなくRequestDispatcherを取得するために使用されたパスを反映しなければいけません。
このメソッドは文字列ではなくStringBuffer
を返すので、たとえばクエリパラメータを追加したりとURLを簡単に変更できます。
このメソッドは、リダイレクトメッセージの作成やエラーの報告に便利です。
StringBuffer
のオブジェクトString getServletPath()
このメソッドはこのリクエストの処理に使用されたサーブレットが "/*"パターンを使用して一致した場合は空の文字列("")を返します。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
がデコードされたもの、リクエストの処理に使用されたサーブレットが"/*"パターンを使用して一致した場合は空の文字列HttpSession getSession(boolean create)
HttpSession
を返します。現在のセッションがなくcreate
がtrueの場合は新しいセッションを返します。
create
がfalse
で、リクエストに有効なHttpSession
がない場合、このメソッドはnull
を返します。
セッションが正しく維持されていることを確認するにはレスポンスがコミットされる前にこのメソッドを呼び出す必要があります。 コンテナがセッションの整合性を維持するためにCookieを使用しており、レスポンスがコミットされた後に新しいセッションを作成するよう要求された場合はIllegalStateExceptionが投げられます。
create
- true
の場合、必要に応じてこのリクエストのために新しいセッションを作成する、false
の場合、現在のセッションが存在しない場合はnull
を返すHttpSession
、create
がfalse
でリクエストが有効なセッションを持っていない場合はnull
getSession()
HttpSession getSession()
HttpSession
getSession(boolean)
String changeSessionId()
IllegalStateException
- リクエストに関連付けられたセッションが存在しないboolean isRequestedSessionIdValid()
クライアントがセッションIDを指定しなかった場合、このメソッドはfalse
を返します。
true
、そうでない場合はfalse
getRequestedSessionId()
,
getSession(boolean)
,
HttpSessionContext
boolean isRequestedSessionIdFromCookie()
要求されたセッションIDがHTTP Cookieとしてサーバーに送信されたかどうかを確認します。
true
、そうでない場合はfalse
getSession(boolean)
boolean isRequestedSessionIdFromURL()
要求されたセッションIDがリクエストURLの一部としてサーバーに送信されたかどうかを確認します。
true
、そうでない場合はfalse
getSession(boolean)
@Deprecated boolean isRequestedSessionIdFromUrl()
isRequestedSessionIdFromURL()
に置き換えられました。true
、そうでない場合はfalse
boolean authenticate(HttpServletResponse response) throws IOException, ServletException
ServletContext
用に設定されたコンテナログインメカニズムを使用して、このリクエストを行うユーザーを認証します。
このメソッドは引数のHttpServletResponse
を変更してコミットするかもしれません。
response
- このHttpServletRequest
に関連するHttpServletResponse
getUserPrincipal
とgetRemoteUser
、getAuthType
によって返される値としてnull以外の値が設定されている場合にtrue
、
認証が不完全で、基礎となるログインメカニズムがメッセージ(例えばチャレンジ)とHTTPステータスコードをユーザーへのレスポンスとして返す場合はfalse
IOException
- このリクエストからの読み取り中または指定されたレスポンスへの書き込み中に入出力エラーが発生した場合IllegalStateException
- ログインメカニズムがレスポンスの変更を試みたときに、すでにコミットされていた場合ServletException
- 認証に失敗し、呼び出し側がエラーの処理を担当している場合(つまり基礎となるログインメカニズムでメッセージとHTTPステータスコードをユーザーに返すように設定していない場合)void login(String username, String password) throws ServletException
ServletContext
用に設定されたウェブコンテナログインメカニズムによって使用されるパスワード検証機構で検証します。
このメソッドは、 ServletContext
用に設定されたログイン機構がユーザー名のパスワード検証をサポートしているとき、
かつログイン呼び出し時にリクエストの呼び出し元の身元が確立されていないとき(つまりgetUserPrincipal
、getRemoteUser
、getAuthType
がnullを返す)、
かつ提供された資格証明の検証が成功した場合にServletException
を投げずに処理を戻します。
それ以外の場合はこのメソッドは以下に説明するようにServletException
を投げます。
訳注:サーブレットAPIを使用してログインを行なえるような設定をしているときに、ユーザーがまだログインしておらず、このメソッドでログインに成功した場合にのみServletException
を投げずに処理を戻します。
このメソッドが例外を投げないで処理を返すときはgetUserPrincipal
、getRemoteUser
、getAuthType
から返される値としてnull以外の値を設定するべきです。
username
- ユーザーのログイン識別子に対応するString
の値password
- 識別されたユーザーに対応するパスワードのString
ServletException
- 設定されたログインメカニズムがユーザ名とパスワードの認証をサポートしていない場合、
またはnull以外の呼び出し元認証情報が(ログインの前に)すでに設定されている場合、
または指定されたユーザ名とパスワードの検証に失敗した場合void logout() throws ServletException
getUserPrincipal
、getRemoteUser
、getAuthType
が呼び出されたときに返される値としてnull
を設定します。ServletException
- ログアウトに失敗したCollection<Part> getParts() throws IOException, ServletException
multipart/form-data
によって提供されるこのリクエストのすべてのPart
要素を取得します。
このリクエストがmultipart/form-data
だけれどもPart
要素を含まない場合、返されるCollection
は空になるでしょう。
返されたCollection
へのいかなる変更もこのHttpServletRequest
に影響を与えてはいけません。
Part
要素の(空の可能性のある)Collection
IOException
- このリクエストのPart
要素の取得中にI/Oエラーが発生した場合ServletException
- このリクエストがmultipart/form-data
でない場合IllegalStateException
- リクエストボディがmaxRequestSize
より大きい場合、
もしくはリクエスト内のPart
のいずれかがmaxFileSize
,より大きい場合、
もしくはデプロイメントディスクリプタに@MultipartConfig
またはmultipart-config
が存在しない場合MultipartConfig.maxFileSize()
,
MultipartConfig.maxRequestSize()
Part getPart(String name) throws IOException, ServletException
Part
を取得します。name
- 要求するPart
の名前Part
、このリクエストがmultipart/form-data
だけど要求されたPart
が含まれてない場合はnull
IOException
- 要求されたPart
の取得中にI/Oエラーが発生した場合ServletException
- このリクエストがmultipart/form-data
でない場合IllegalStateException
- リクエストボディがmaxRequestSize
より大きい場合、
もしくはリクエスト内のPart
のいずれかがmaxFileSize
,より大きい場合、
もしくはデプロイメントディスクリプタに@MultipartConfig
またはmultipart-config
が存在しない場合MultipartConfig.maxFileSize()
,
MultipartConfig.maxRequestSize()
<T extends HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, ServletException
HttpUpgradeHandler
のインスタンスを作成し、httpプロトコルのアップグレードプロセスに使用します。T
- handlerClass
のHttpUpgradeHandler
を拡張するClass
handlerClass
- アップグレードに使用するHttpUpgradeHandler
HttpUpgradeHandler
のインスタンスIOException
- アップグレード中にI/Oエラーが発生したServletException
- 与えられたhandlerClass
のインスタンス化に失敗したHttpUpgradeHandler
,
WebConnection
default Map<String,String> getTrailerFields()
返されるMapはHttpServletRequestオブジェクトによって追跡されていないため、返されるMapへの変更はHttpServletRequestオブジェクトには反映されません。 その逆もそうです。
isTrailerFieldsReady()
は例外を発生させずにこのメソッドを安全に呼び出すことができるかどうかを調べるために最初に呼び出す必要があります。
isTrailerFieldsReady()
がtrueを返す場合は空のMapを返すIllegalStateException
- if isTrailerFieldsReady()
is falsedefault boolean isTrailerFieldsReady()
getTrailerFields()
を使用して読み込み可能かどうかを示すbooleanを返します。
このメソッドは、リクエストにトレーラーがないことがわかっている場合、たとえば、HTTP 1.0などで基本プロトコルがトレーラーフィールドをサポートしていない場合、
またはリクエストがHTTP 1.1のチャンクエンコーディングでない場合には即座にtrueを返します。
また、次の条件の両方が満たされていればtrueを返します。
ServletRequest.getReader()
もしくはServletRequest.getInputStream()
からEOFが返された。
Copyright © 1999-2017, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms. Portions Copyright © 1999-2002 The Apache Software Foundation. Portions Copyright © 2017- @megascus. Translated by @megascus.