public interface ServletRequest
ServletRequest
オブジェクトを作成し、サーブレットのservice
メソッドへの引数として渡します。
ServletRequest
オブジェクトはパラメータ名と値、属性、および入力ストリームを含むデータを提供します。
ServletRequest
を拡張するインターフェースは追加のプロトコル固有のデータを提供できます。
(たとえば、HTTPのデータはHttpServletRequest
によって提供されます。)
HttpServletRequest
修飾子とタイプ | メソッドと説明 |
---|---|
AsyncContext |
getAsyncContext()
このリクエストで
startAsync() またはstartAsync(ServletRequest,ServletResponse) の最新の呼び出しによって作成または再初期化されたAsyncContextを取得します。 |
Object |
getAttribute(String name)
名前の付いた属性の値を
Object として返します。 |
Enumeration<String> |
getAttributeNames()
このリクエストで利用可能な属性の値を含む
Enumeration を返します。 |
String |
getCharacterEncoding()
このリクエストのボディで使用されている文字エンコーディングの名前を返します。
|
int |
getContentLength()
リクエストボディの入力ストリームによって利用可能な長さをバイト単位で返します。
|
long |
getContentLengthLong()
リクエストボディの入力ストリームによって利用可能な長さをバイト単位で返します。
|
String |
getContentType()
リクエストボディのMIME形式を返します。
|
DispatcherType |
getDispatcherType()
このリクエストのdispatcher typeを取得します。
|
ServletInputStream |
getInputStream()
リクエストボディを
ServletInputStream を利用してバイナリデータとして取得します。 |
String |
getLocalAddr()
リクエストを受信したインターフェースのインターネットプロトコル(IP)アドレスを返します。
|
Locale |
getLocale()
Accept-Languageヘッダーの値からクライアントがコンテンツを受け入れる優先の
Locale (ロケール、地域、言語)を返します。 |
Enumeration<Locale> |
getLocales()
Accept-Languageヘッダーの値からクライアントが受け入れられるlocale(ロケール、地域、言語)の優先度の降順で示す
Locale オブジェクトのEnumeration を返します。 |
String |
getLocalName()
リクエストを受信したインターフェースのインターネットプロトコル(IP)ホスト名を返します。
|
int |
getLocalPort()
リクエストを受信したインターフェースのインターネットプロトコル(IP)ポート番号を返します。
|
String |
getParameter(String name)
リクエストパラメーターを
String として返します。 |
Map<String,String[]> |
getParameterMap()
リクエストのパラメーターの java.util.Map を返します。
|
Enumeration<String> |
getParameterNames()
リクエストに含まれるパラメーターの名前を含む
String のEnumeration を返します。 |
String[] |
getParameterValues(String name)
リクエストパラメーターに含まれるすべての値を
String オブジェクトの配列として返します。 |
String |
getProtocol()
リクエストに使用されたプロトコルの名前とバージョンをHTTP/1.1のようにprotocol/majorVersion.minorVersionの形式で返します。
|
BufferedReader |
getReader()
リクエストボディを
BufferedReader .を利用して文字データとして取得します。 |
String |
getRealPath(String path)
非推奨です。
Version 2.1 から
ServletContext.getRealPath(java.lang.String) に置き換えられました |
String |
getRemoteAddr()
リクエストを送信したクライアントまたは最後のプロキシのインターネットプロトコル(IP)アドレスを返します。
|
String |
getRemoteHost()
リクエストを送信したクライアントまたは最後のプロキシの完全修飾名(FQN)を返します。
|
int |
getRemotePort()
リクエストを送信したクライアントまたは最後のプロキシのインターネットプロトコル(IP)送信元ポートを返します。
|
RequestDispatcher |
getRequestDispatcher(String path)
指定されたパスにあるリソースのラッパーとして機能する
RequestDispatcher のオブジェクトを返します。 |
String |
getScheme()
リクエストを作るのに使用されたスキーマを返します。
|
String |
getServerName()
リクエストが送られたサーバーのホスト名を返します。
|
int |
getServerPort()
リクエストが送られたサーバーのポート番号を返します。
|
ServletContext |
getServletContext()
このServletRequestが最後にディスパッチされたサーブレットコンテキストを返します。
|
boolean |
isAsyncStarted()
このリクエストが非同期モードになっているかどうかをチェックします。
|
boolean |
isAsyncSupported()
このリクエストが非同期操作をサポートしているかどうかをチェックします。
|
boolean |
isSecure()
このリクエストがHTTPSなどのセキュアなチャネルを使用して行われたかどうかを示すbooleanを返します。
|
void |
removeAttribute(String name)
このリクエストから属性を削除します。
|
void |
setAttribute(String name,
Object o)
このリクエストに属性を保存します。
|
void |
setCharacterEncoding(String env)
このリクエストのボディで使用されている文字エンコーディングの名前を上書きします。
|
AsyncContext |
startAsync()
このリクエストを非同期実行モードにし、オリジナルの(ラップされてない)ServletRequestとServletResponseのオブジェクトで
AsyncContext を初期化します。 |
AsyncContext |
startAsync(ServletRequest servletRequest,
ServletResponse servletResponse)
このリクエストを非同期実行モードにし、与えられたServletRequestとServletResponseのオブジェクトで
AsyncContext を初期化します。 |
Object getAttribute(String name)
Object
として返します。指定された名前の属性が存在しない場合はnull
を返します。
属性は2つの方法で設定されます。サーブレットコンテナはリクエストに関する利用可能なカスタム情報を生成するために属性を設定してもよいです。
たとえば、HTTPSを使用して行われたリクエストの場合、javax.servlet.request.X509Certificate
の属性からクライアントの証明書に関する情報を取得できます。
属性はsetAttribute(java.lang.String, java.lang.Object)
を使用してプログラムで設定することもできます。
これによりRequestDispatcher
の呼び出しの前に情報をリクエストに埋め込むことができます。
属性名は、パッケージ名と同じ規則に従う必要があります。
この仕様ではjava.*
、javax.*
、sun.*
と一致する名前を予約しています。
name
- 属性の名前を示すString
Object
、属性が存在しない場合はnullEnumeration<String> getAttributeNames()
Enumeration
を返します。
このメソッドは利用可能な属性がない場合、空のEnumeration
を返します。Enumeration
String getCharacterEncoding()
null
を返します 。
リクエストの文字エンコーディングを指定する方法は優先度順で次の通りです。
getCharacterEncoding()
を使用)
ServletContext.setRequestCharacterEncoding(java.lang.String)
やデプロイメントディスクリプタを使用)
String
、指定がない場合はnull
void setCharacterEncoding(String env) throws UnsupportedEncodingException
env
- 文字エンコーディングの名前を含むString
UnsupportedEncodingException
- このServletRequestにキャラクターエンコーディングを設定してもよい状態で、指定したエンコーディングが不正な場合。int getContentLength()
CONTENT_LENGTH
の値と同じです。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
long getContentLengthLong()
CONTENT_LENGTH
の値と同じです。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String getContentType()
null
を返します。
HTTPサーブレットの場合、CGI変数のCONTENT_TYPE
の値と同じです。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
。MIME形式が不明の場合はnull
を返すServletInputStream getInputStream() throws IOException
ServletInputStream
を利用してバイナリデータとして取得します。
このメソッドとgetReader()
はどちらかしか呼び出せません。ServletInputStream
のオブジェクトIllegalStateException
- getReader()
メソッドがこのリクエストですでに呼び出されていた場合IOException
- I/Oエラーが発生したString getParameter(String name)
String
として返します。パラメーターが存在しない場合はnull
を返します。
リクエストパラメーターはリクエストと同時に送られる追加の情報です。HTTPサーブレットではリクエストパラメーターはクエリ文字列やフォームからPOSTされたデータを含みます。
このメソッドはパラメーターが確実に一つの場合のみ呼び出すことができます。もし二つ以上あるかもしれない場合はgetParameterValues(java.lang.String)
を使用してください。
もしこのメソッドを複数の値のあるパラメーターに使用した場合、getParameterValues
が返す値の最初の値のみを取得できます。
もしHTTP POSTリクエストのようにパラメーターがリクエストボディで送られた場合、
getInputStream()
やgetReader()
で直接リクエストボディを読み取るとこのメソッドの実行が妨害される可能性があります。
name
- パラメーターの名前を指定するString
String
getParameterValues(java.lang.String)
Enumeration<String> getParameterNames()
String
のEnumeration
を返します。
リクエストにパラメーターがない場合は空のEnumeration
を返します。String
のEnumeration
、
リクエストにパラメーターがない場合は空のEnumeration
String[] getParameterValues(String name)
String
オブジェクトの配列として返します。
もしパラメーターが単一の値を持つ場合、その配列の長さは1です。
name
- 値が要求されているパラメーターの名前を含めた String
String
オブジェクトの配列getParameter(java.lang.String)
Map<String,String[]> getParameterMap()
リクエストパラメーターはリクエストと同時に送られる追加の情報です。 HTTPサーブレットではリクエストパラメーターはクエリ文字列やフォームからPOSTされたデータを含みます。
String getProtocol()
SERVER_PROTOCOL
の値と同じです。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
String getScheme()
http
やhttps
、ftp
などです。
RFC 1738に記載されているようにスキーマが異なる場合はURLの構築に異なるルールが適用されます。String
String getServerName()
Host
ヘッダーが存在する場合は":"の前の部分、もしくは解決されたサーバー名、サーバーのIPアドレスなどです。String
int getServerPort()
Host
ヘッダーが存在する場合は":"の後ろの部分、もしくはクライアントのコネクションを受け付けたサーバーのポートです。BufferedReader getReader() throws IOException
BufferedReader
.を利用して文字データとして取得します。
Readerはリクエストボディに使用されている文字エンコーディングに従って文字データを変換します。
このメソッドとgetInputStream()
はどちらかしか呼び出せません。BufferedReader
UnsupportedEncodingException
- 使用されている文字エンコーディングがサポートされておらず、テキストがデコードできなかった場合IllegalStateException
- getInputStream()
メソッドがこのリクエストですでに呼び出されていた場合IOException
- I/Oエラーが発生したgetInputStream()
String getRemoteAddr()
REMOTE_ADDR
の値と同じです。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
String getRemoteHost()
REMOTE_HOST
の値と同じです。
訳注:CGIはサーブレットが生まれる前にあったウェブアプリケーションを作るための仕組みです。現在はほぼ使われていません。
String
void setAttribute(String name, Object o)
RequestDispatcher
と組み合わせて使用されることがよくあります。
属性名はパッケージ名と同じ規則に従う必要があります。 java.*やjavax.*、com.sun.*で始まる名前は、Sun Microsystemsが使用するために予約されています。
Objectとしてnullが渡された場合、removeAttribute(java.lang.String)
を呼び出されたのと同じ効果を及ぼします。
リクエストがサーブレットからRequestDispatcher
によって別のウェブアプリケーションにディスパッチされた場合、
このメソッドで設定されたオブジェクトは呼び出し側のサーブレットでは正しく取得できないことがあることを注意してください。
name
- 属性の名前を示す String
o
- 保存する Object
void removeAttribute(String name)
属性名はパッケージ名と同じ規則に従う必要があります。 java.*やjavax.*、com.sun.*で始まる名前は、Sun Microsystemsが使用するために予約されています。
name
- 削除する属性の名前を示す String
Locale getLocale()
Locale
(ロケール、地域、言語)を返します。
クライアントリクエストにAccept-Languageヘッダーが存在しない場合、このメソッドはサーバーのデフォルトのlocaleを返します。Locale
Enumeration<Locale> getLocales()
Locale
オブジェクトのEnumeration
を返します。
クライアントリクエストにAccept-Languageヘッダーが存在しない場合、このメソッドはサーバーのデフォルトのlocaleである単一のLocale
を含むEnumeration
を返します。Locale
のオブジェクトのEnumeration
boolean isSecure()
RequestDispatcher getRequestDispatcher(String path)
RequestDispatcher
のオブジェクトを返します。
RequestDispatcher
オブジェクトを使用することでリクエストを別のリソースに転送したり、リソースをレスポンスに含めることができます。
リソースは動的なものでも静的なものでもかまいません。
指定されたパス名は相対パスにすることができますが現在のサーブレットのコンテキスト外には拡張できません。
パスが "/"で始まる場合、現在のコンテキストルートからの相対パスとして解釈されます。 サーブレットコンテナがRequestDispatcher
を返せない場合、このメソッドはnullを返します 。
このメソッドとServletContext.getRequestDispatcher(java.lang.String)
の違いはこのメソッドが相対パスを取ることができることです。
path
- リソースへのパス名を指定する String
、相対パスの場合は現在のサーブレットからの相対パスでなければならないRequestDispatcher
のオブジェクト、サーブレットコンテナがRequestDispatcher
を返せない場合はnullRequestDispatcher
,
ServletContext.getRequestDispatcher(java.lang.String)
String getRealPath(String path)
ServletContext.getRealPath(java.lang.String)
に置き換えられましたpath
- 実際のパスが返されるパスint getRemotePort()
String getLocalName()
String
String getLocalAddr()
String
int getLocalPort()
ServletContext getServletContext()
AsyncContext startAsync() throws IllegalStateException
AsyncContext
を初期化します。
このメソッドを呼び出すと返されたAsyncContext
のAsyncContext.complete()
が呼び出されるか非同期操作がタイムアウトになるまで関連するレスポンスのコミットが遅延されます。
返されたAsyncContextでAsyncContext.hasOriginalRequestAndResponse()
を呼び出すとtrue
が返されます。
このリクエストが非同期モードにされた後にアウトバウンド方向に呼び出されたフィルターは
インバウンド呼び出し中に追加したすべてのリクエストおよび/またはレスポンスラッパーが非同期操作の間、呼び出しを滞留させる必要はありません、
つまり、それらの関連リソースのいずれかが解放される可能性があります。
このメソッドは各AsyncListener
をそのonStartAsync
メソッドで呼び出した後、
startAsyncメソッドのうちの1つの最新の呼び出しによって返されたAsyncContextに登録されたAsyncListener
インスタンス(が存在する場合)のリストをクリアします。
その後にこのメソッドまたはオーバーロードされたメソッドを呼び出すと必要に応じて再初期化された同じAsyncContextのインスタンスが返されます。
IllegalStateException
- このリクエストが非同期操作をサポートしないフィルタまたはサーブレットのスコープ内にある場合(isAsyncSupported()
がfalseを返す場合)、
またはこのメソッドが非同期ディスパッチ(AsyncContext.dispatch()
メソッドの一つで行われる)なしで再度呼び出されディスパッチの範囲外で呼び出された場合、
または同じディスパッチの範囲内で再度呼び出された場合、またはレスポンスがすでに閉じられている場合AsyncContext.dispatch()
AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException
AsyncContext
を初期化します。
引数のServletRequestとServletResponseはサーブレットのservice
メソッドもしくはフィルターのdoFilter
メソッドの各々が呼び出されたスコープでの同じインスタンスであるか、
ServletRequestWrapper
やServletResponseWrapper
でそれらをラップしたものである必要があります。
このメソッドを呼び出すと返されたAsyncContext
のAsyncContext.complete()
が呼び出されるか非同期操作がタイムアウトになるまで関連するレスポンスのコミットが遅延されます。
引数として渡されたServletRequestとServletResponseがオリジナルのものもしくはアプリケーションが提供するラッパーでない限りは返されたAsyncContextでAsyncContext.hasOriginalRequestAndResponse()
を呼び出すとfalse
が返されます。
このリクエストが非同期モードにされた後にアウトバウンド方向に呼び出されたいくつかのフィルターは
インバウンド呼び出し中に追加したすべてのリクエストおよび/またはレスポンスラッパーが非同期操作の間、呼び出しを滞留させる必要があるかもしれず、それらの関連リソースは解放されないかもしれません。
フィルターのインバウンド呼び出し中に適用されたServletRequestWrapperは与えられたServletRequest
(ServletRequestWrapperを含みません)がAsyncContextを初期化しAsyncContext.getRequest()
の呼び出しによって返される場合のみ解放されます。
このメソッドは各AsyncListener
をそのonStartAsync
メソッドで呼び出した後、
startAsyncメソッドのうちの1つの最新の呼び出しによって返されたAsyncContextに登録されたAsyncListener
インスタンス(が存在する場合)のリストをクリアします。
その後にこのメソッドまたはオーバーロードされた引数のないメソッドを呼び出すと必要に応じて再初期化された同じAsyncContextのインスタンスが返されます。 このメソッドの呼び出しのあとに引数のないメソッドの呼び出しがあった場合、 指定された(場合によってはラップされた)リクエストおよびレスポンスのオブジェクトは返されたAsyncContextにロックされたままになります。
servletRequest
- AsyncContextの初期化に使用するServletRequestservletResponse
- AsyncContextの初期化に使用するServletResponseIllegalStateException
- このリクエストが非同期操作をサポートしないフィルタまたはサーブレットのスコープ内にある場合(isAsyncSupported()
がfalseを返す場合)、
またはこのメソッドが非同期ディスパッチ(AsyncContext.dispatch()
メソッドの一つで行われる)なしで再度呼び出されディスパッチの範囲外で呼び出された場合、
または同じディスパッチの範囲内で再度呼び出された場合、またはレスポンスがすでに閉じられている場合boolean isAsyncStarted()
ServletRequestはstartAsync()
やstartAsync(ServletRequest,ServletResponse)
の呼び出しで非同期モードになります。
このメソッドは非同期実行モードになってからAsyncContext.dispatch()
を使ってディスパッチされている場合や
AsyncContext.complete()
が呼ばれて非同期実行モードから開放されている場合にはfalseを返します。
boolean isAsyncSupported()
このリクエストが非同期処理をサポートできるとアノテーションがつけられていないかデプロイメントディスクリプタにフラグが立てられていないフィルターまたはサーブレットのスコープ内にある場合、 このリクエストに対して非同期操作は無効になります。
AsyncContext getAsyncContext()
startAsync()
またはstartAsync(ServletRequest,ServletResponse)
の最新の呼び出しによって作成または再初期化されたAsyncContextを取得します。startAsync()
またはstartAsync(ServletRequest,ServletResponse)
の最新の呼び出しによって作成または再初期化されたAsyncContextIllegalStateException
- このリクエストが非同期モードになっていない場合、つまりstartAsync()
もstartAsync(ServletRequest,ServletResponse)
も呼び出されていない場合DispatcherType getDispatcherType()
リクエストのdispatcher typeは、リクエストに適用する必要があるフィルターを選択するためにコンテナによって使用されます。 一致するdispatcher typeとURLパターンを持つフィルターのみが適用されます。
リクエストのdispatcher typeを照会するように設定されたフィルターを複数のdispatcher typeに対して許可すると、フィルターはdispatcher typeに応じてリクエストを個別に処理できます。
リクエストのdispatcher typeの初期値はDispatcherType.REQUEST
として定義されます。
RequestDispatcher.forward(ServletRequest, ServletResponse)
またはRequestDispatcher.include(ServletRequest, ServletResponse)
を介してディスパッチされたリクエストのdispatcher typeは
それぞれDispatcherType.FORWARD
またはDispatcherType.INCLUDE
として与えられ、
AsyncContext.dispatch()
メソッドで行われる非同期リクエストのdispatcher typeはDispatcherType.ASYNC
として与えられます。
最後にコンテナのエラー処理メカニズムによってエラーページにディスパッチされたリクエストのdispatcher typeはDispatcherType.ERROR
として与えられます。
DispatcherType
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.