インターフェース ServletResponse
- すべての既知のサブインターフェース:
HttpServletResponse
- すべての既知の実装クラス:
HttpServletResponseWrapper,ServletResponseWrapper
public interface ServletResponseサーブレットがクライアントにレスポンスを送信するのを支援するオブジェクトを定義します。サーブレットコンテナーはServletResponseオブジェクトを作成し、それを引数としてサーブレットのserviceメソッドに渡します。MIME 本文レスポンスでバイナリデータを送信するには、
getOutputStream()によって返されるServletOutputStreamを使用します。文字データを送信するには、getWriter()によって返されるPrintWriterオブジェクトを使用します。たとえば、バイナリデータとテキストデータを混在させて、マルチパートレスポンスを作成するには、ServletOutputStreamを使用して、文字セクションを手動で管理します。MIME 本文レスポンスの文字セットは、リクエストごと、Web アプリごと(
ServletContext.setRequestCharacterEncoding(java.lang.String)、デプロイ記述子を使用)、コンテナーごと(ベンダー固有の構成を使用して、そのコンテナーにデプロイされたすべての Web アプリケーションの場合)のいずれかの手法を使用して明示的に指定できます)。上記の手法が複数使用されている場合、優先順位はリストされている順序です。リクエストごとに、レスポンスの文字セットは、setCharacterEncoding(java.lang.String)およびsetContentType(java.lang.String)メソッドを使用して明示的に指定することも、setLocale(java.util.Locale)メソッドを使用して暗黙的に指定することもできます。明示的な仕様は、暗黙的な仕様よりも優先されます。文字セットが明示的に指定されていない場合は、ISO-8859-1 が使用されます。setCharacterEncoding、setContentType、setLocaleメソッドは、getWriterの前、使用する文字エンコードのレスポンスをコミットする前に呼び出す必要があります。MIME の詳細については、RFC 2045 などのインターネット RFC を参照してください。SMTP や HTTP などのプロトコルは、MIME のプロファイルを定義し、それらの標準はまだ進化しています。
- 作成者:
- Various
- 関連事項:
ServletOutputStream
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 voidflushBuffer()バッファ内のコンテンツを強制的にクライアントに書き込みます。intgetBufferSize()レスポンスに使用される実際のバッファサイズを返します。StringSEgetCharacterEncoding()このレスポンスで送信される本文に使用される文字エンコード(MIME 文字セット)の名前を返します。StringSEgetContentType()このレスポンスで送信される MIME 本文に使用されるコンテンツ型を返します。LocaleSEgetLocale()setLocale(java.util.Locale)メソッドを使用して、このレスポンスに指定されたロケールを返します。ServletOutputStreamgetOutputStream()レスポンスにバイナリデータを書き込むのに適したServletOutputStreamを返します。PrintWriterSEgetWriter()クライアントに文字テキストを送信できるPrintWriterオブジェクトを返します。booleanisCommitted()レスポンスがコミットされたかどうかを示すブール値を返します。voidreset()バッファーに存在するすべてのデータとステータスコード、ヘッダーをクリアします。voidresetBuffer()ヘッダーまたはステータスコードをクリアせずに、レスポンスの基になるバッファのコンテンツをクリアします。voidsetBufferSize(int size)レスポンスの本文の優先バッファサイズを設定します。voidsetCharacterEncoding(StringSE charset)クライアントに送信されるレスポンスの文字エンコード(MIME 文字セット)を、たとえば UTF-8 に設定します。voidsetContentLength(int len)レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。voidsetContentLengthLong(long len)レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。voidsetContentType(StringSE type)レスポンスがまだコミットされていない場合、クライアントに送信されるレスポンスのコンテンツ型を設定します。voidsetLocale(LocaleSE loc)レスポンスがまだコミットされていない場合、レスポンスのロケールを設定します。
メソッドの詳細
getCharacterEncoding
StringSE getCharacterEncoding()
このレスポンスで送信された本文に使用される文字エンコーディング (MIME 文字セット) の名前を返します。レスポンスの文字エンコーディングを指定するための次のメソッドが、優先度の高い順に参照されます: リクエストごと、Web アプリごと (ServletContext.setResponseCharacterEncoding(java.lang.String)、デプロイ記述子を使用)、およびコンテナーごと (ベンダー固有の構成を使用して、そのコンテナーにデプロイされたすべての Web アプリケーション)。これらのメソッドのうち、最初に結果が得られたものが返されます。リクエストごとに、レスポンスの文字セットは、setCharacterEncoding(java.lang.String)メソッドとsetContentType(java.lang.String)メソッドを使用して明示的に指定するか、setLocale(java.util.Locale) メソッドを使用して暗黙的に指定できます。明示的な指定は暗黙的な指定よりも優先されます。getWriterが呼び出された後、またはレスポンスがコミットされた後にこれらのメソッドを呼び出しても、文字エンコーディングには影響しません。文字エンコーディングが指定されていない場合は、ISO-8859-1が返されます。文字エンコードと MIME の詳細については、RFC 2047(http://www.ietf.org/rfc/rfc2047.txt) を参照してください。
- 戻り値:
- 文字エンコードの名前を指定する
String、たとえばUTF-8
getContentType
StringSE getContentType()
このレスポンスで送信される MIME 本文に使用されるコンテンツ型を返します。レスポンスをコミットする前に、setContentType(java.lang.String)を使用して適切なコンテンツ型を指定する必要があります。コンテンツ型が指定されていない場合、このメソッドは null を返します。コンテンツ型が指定されており、getCharacterEncoding()またはgetWriter()に従って文字エンコードが明示的または暗黙的に指定されている場合、charset パラメーターは返される文字列に含まれます。文字エンコードが指定されていない場合、charset パラメーターは省略されます。- 戻り値:
text/html; charset=UTF-8などのコンテンツ型を指定するStringまたは null- 導入:
- Servlet 2.4
getOutputStream
ServletOutputStream getOutputStream() throws IOExceptionSE
レスポンスにバイナリデータを書き込むのに適したServletOutputStreamを返します。サーブレットコンテナーはバイナリデータをエンコードしません。ServletOutputStream で flush() を呼び出すと、レスポンスがコミットされます。
reset()が呼び出された場合を除き、このメソッドまたはgetWriter()のいずれかを呼び出して、両方ではなく本体を書き込むことができます。- 戻り値:
- バイナリデータを書き込むための
ServletOutputStream - 例外:
IllegalStateExceptionSE-getWriterメソッドがこのレスポンスで呼び出された場合IOExceptionSE- 入力または出力の例外が発生した場合- 関連事項:
getWriter(),reset()
getWriter
PrintWriterSE getWriter() throws IOExceptionSE
クライアントに文字テキストを送信できるPrintWriterオブジェクトを返します。PrintWriterは、getCharacterEncoding()によって返される文字エンコードを使用します。getCharacterEncodingに従って、レスポンスの文字エンコードが指定されていない場合(つまり、メソッドはデフォルト値ISO-8859-1を返すだけ)、getWriterはそれをISO-8859-1に更新します。PrintWriterで flush() を呼び出すと、レスポンスがコミットされます。reset()が呼び出された場合を除き、このメソッドまたはgetOutputStream()のいずれかを呼び出して、両方ではなく本体を書き込むことができます。- 戻り値:
- クライアントに文字データを返すことができる
PrintWriterオブジェクト - 例外:
UnsupportedEncodingExceptionSE-getCharacterEncodingによって返された文字エンコードを使用できない場合IllegalStateExceptionSE-getOutputStreamメソッドがこのレスポンスオブジェクトに対してすでに呼び出されている場合IOExceptionSE- 入力または出力の例外が発生した場合- 関連事項:
getOutputStream(),setCharacterEncoding(java.lang.String),reset()
setCharacterEncoding
void setCharacterEncoding(StringSE charset)
クライアントに送信されるレスポンスの文字エンコード (MIME charset) を UTF-8 などに設定します。レスポンスの文字エンコーディングがServletContext.setResponseCharacterEncoding(java.lang.String)、デプロイ記述子によって、またはsetContentType(java.lang.String)またはsetLocale(java.util.Locale)メソッドを使用してすでに設定されている場合、このメソッドで設定された値はそれらのすべての値をオーバーライドします。text/htmlのStringでsetContentType(java.lang.String)を呼び出し、UTF-8のStringでこのメソッドを呼び出すことは、text/html; charset=UTF-8のStringでsetContentType(java.lang.String)を呼び出すことと同じです。このメソッドを繰り返し呼び出して、文字エンコーディングを変更できます。
getWriterが呼び出された後、またはレスポンスがコミットされた後に呼び出された場合、このメソッドは効果がありません。このメソッドを呼び出すと (前の段落のように) 効果がある場合、
nullを使用してこのメソッドを呼び出すと、このメソッドsetContentType(java.lang.String)またはsetLocale(java.util.Locale)への以前の呼び出しを介して設定された文字エンコーディングがクリアされますが、ServletContext.setResponseCharacterEncoding(java.lang.String)または デプロイを介して構成されたデフォルトの文字エンコーディングには影響しません。ディスクリプタ。このメソッドが無効または認識されない文字エンコーディングで呼び出された場合、その後
getWriter()を呼び出すとUnsupportedEncodingExceptionSE がスローされます。不明なエンコーディングのコンテンツは、getOutputStream()から返されたServletOutputStreamで送信できます。コンテナーは、無効または認識されない文字エンコーディングを使用するこのメソッドへの呼び出しをログに記録することを選択できます。
プロトコルがその方法を提供する場合、コンテナーは、サーブレットレスポンスのライターに使用される文字エンコーディングをクライアントに伝える必要があります。HTTP の場合、文字エンコードは、テキストメディア型の
Content-Typeヘッダーの一部として通信されます。サーブレットがコンテンツ型を指定しない場合、文字エンコードは HTTP ヘッダーを介して通信できないことに注意してください。ただし、サーブレットレスポンスのライターを介して書き込まれたテキストのエンコードには引き続き使用されます。- パラメーター:
charset- IANA 文字セット (http://www.iana.org/assignments/character-sets) またはnull) によって定義された文字セットのみを指定する文字列- 導入:
- Servlet 2.4
- 関連事項:
setContentType(java.lang.String),setLocale(java.util.Locale)
setContentLength
void setContentLength(int len)
レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。- パラメーター:
len- クライアントに返されるコンテンツの長さを指定する整数。Content-Length ヘッダーを設定します
setContentLengthLong
void setContentLengthLong(long len)
レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。- パラメーター:
len- クライアントに返されるコンテンツの長さを指定する long; Content-Length ヘッダーを設定します- 導入:
- Servlet 3.1
setContentType
void setContentType(StringSE type)
レスポンスがまだコミットされていない場合、クライアントに送信されるレスポンスのコンテンツ型を設定します。指定されたコンテンツ型には、文字エンコーディング仕様 (text/html;charset=UTF-8など) が含まれる場合があります。レスポンスの文字エンコーディングは、getWriter()が呼び出される前にこのメソッドが呼び出された場合にのみ、指定されたコンテンツ型から設定されます。このメソッドは、コンテンツ型と文字エンコーディングを変更するために繰り返し呼び出される場合があります。このメソッドは、レスポンスがコミットされた後に呼び出されても効果がありません。
getWriterが呼び出された後、またはレスポンスがコミットされた後に呼び出された場合、レスポンスの文字エンコードは設定されません。このメソッドを呼び出すと (前の段落のように) 効果がある場合、
nullを指定してこのメソッドを呼び出すと、このメソッドへの以前の呼び出しによって設定されたコンテンツ型がすべてクリアされ、このメソッド (setCharacterEncoding(java.lang.String)またはsetLocale(java.util.Locale)) への以前の呼び出しによって設定された文字エンコーディングがクリアされますが、ServletContext.setResponseCharacterEncoding(java.lang.String)または デプロイ記述子を介して構成されたデフォルトの文字エンコーディングには影響しません。このメソッドが無効または認識されない文字エンコーディングで呼び出された場合、その後
getWriter()を呼び出すとUnsupportedEncodingExceptionSE がスローされます。不明なエンコーディングのコンテンツは、getOutputStream()から返されたServletOutputStreamで送信できます。コンテナーは、無効または認識されない文字エンコーディングを使用するこのメソッドへの呼び出しをログに記録することを選択できます。
プロトコルがそうする方法を提供する場合、コンテナーはサーブレットレスポンスのライターに使用されるコンテンツ型と文字エンコーディングをクライアントに通信する必要があります。HTTP の場合、
Content-Typeヘッダーが使用されます。- パラメーター:
type- コンテンツの MIME 型を指定するStringまたはnull- 関連事項:
setLocale(java.util.Locale),setCharacterEncoding(java.lang.String),getOutputStream(),getWriter()
setBufferSize
void setBufferSize(int size)
レスポンスの本文の優先バッファサイズを設定します。サーブレットコンテナーは、少なくともリクエストされたサイズと同じ大きさのバッファを使用します。使用される実際のバッファサイズは、getBufferSizeを使用して見つけることができます。バッファを大きくすると、実際に何かが送信される前により多くのコンテンツを書き込むことができるため、サーブレットに適切なステータスコードとヘッダーを設定する時間をより多く提供できます。バッファを小さくすると、サーバーのメモリ負荷が減少し、クライアントがデータをより早く受信できるようになります。
このメソッドは、レスポンス本文のコンテンツが書き込まれる前に呼び出す必要があります。コンテンツが書き込まれた場合、またはレスポンスオブジェクトがコミットされた場合、このメソッドは
IllegalStateExceptionをスローします。- パラメーター:
size- 優先バッファサイズ- 例外:
IllegalStateExceptionSE- コンテンツが書き込まれた後にこのメソッドが呼び出された場合- 関連事項:
getBufferSize(),flushBuffer(),isCommitted(),reset()
getBufferSize
int getBufferSize()
レスポンスに使用される実際のバッファサイズを返します。バッファリングが使用されていない場合、このメソッドは 0 を返します。- 戻り値:
- 使用される実際のバッファサイズ
- 関連事項:
setBufferSize(int),flushBuffer(),isCommitted(),reset()
flushBuffer
void flushBuffer() throws IOExceptionSEバッファ内のコンテンツを強制的にクライアントに書き込みます。このメソッドを呼び出すと、レスポンスが自動的にコミットされます。つまり、ステータスコードとヘッダーが書き込まれます。- 例外:
IOExceptionSE- バッファをフラッシュする動作を完了できない場合。- 関連事項:
setBufferSize(int),getBufferSize(),isCommitted(),reset()
resetBuffer
void resetBuffer()
ヘッダーまたはステータスコードをクリアせずに、レスポンスの基になるバッファのコンテンツをクリアします。レスポンスがコミットされている場合、このメソッドはIllegalStateExceptionをスローします。- 導入:
- Servlet 2.3
- 関連事項:
setBufferSize(int),getBufferSize(),isCommitted(),reset()
isCommitted
boolean isCommitted()
レスポンスがコミットされたかどうかを示すブール値を返します。コミットされたレスポンスには、すでにステータスコードとヘッダーが書き込まれています。- 戻り値:
- レスポンスがコミットされたかどうかを示すブール値
- 関連事項:
setBufferSize(int),getBufferSize(),flushBuffer(),reset()
reset
void reset()
バッファーに存在するすべてのデータとステータスコード、ヘッダーをクリアします。getWriter()またはgetOutputStream()の呼び出し状態もクリアされます。たとえば、getWriter()、reset()、getOutputStream()を呼び出すことは正当です。このメソッドの前にgetWriter()またはgetOutputStream()が呼び出された場合、対応する返された Writer または OutputStream が停止し、古いオブジェクトを使用する動作は未定義になります。レスポンスがコミットされている場合、このメソッドはIllegalStateExceptionをスローします。- 例外:
IllegalStateExceptionSE- レスポンスがすでにコミットされている場合- 関連事項:
setBufferSize(int),getBufferSize(),flushBuffer(),isCommitted()
setLocale
void setLocale(LocaleSE loc)
レスポンスがまだコミットされていない場合、レスポンスのロケールを設定します。また、setContentType(java.lang.String)またはsetCharacterEncoding(java.lang.String)を使用して文字エンコーディングが明示的に設定されておらず、getWriterがまだ呼び出されておらず、レスポンスがまだコミットされていない場合、ロケールのレスポンスに適切に文字エンコーディングを設定します。デプロイ記述子にlocale-encoding-mapping-list要素が含まれ、その要素が指定されたロケールのマッピングを提供する場合、そのマッピングが使用されます。それ以外の場合、ロケールから文字エンコーディングへのマッピングはコンテナーに依存します。このメソッドは、ロケールと文字エンコーディングを変更するために繰り返し呼び出される場合があります。レスポンスがコミットされた後に呼び出された場合、メソッドは効果がありません。
setContentType(java.lang.String)が文字セット指定で呼び出された後、setCharacterEncoding(java.lang.String)が呼び出された後、getWriterが呼び出された後、レスポンスがコミットされた後に呼び出された場合、レスポンスの文字エンコードは設定されません。このメソッドの呼び出しが (前の段落のように) ロケールに影響を与える場合、
nullを指定してこのメソッドを呼び出すと、このメソッドへの以前の呼び出しで設定されたすべてのロケールがクリアされます。このメソッドの呼び出しが文字エンコーディングに影響する場合、nullでこのメソッドを呼び出すと、以前に設定された文字エンコーディングがクリアされます。プロトコルがその方法を提供する場合、コンテナーは、サーブレットレスポンスのライタに使用されるロケールと文字エンコーディングをクライアントに伝える必要があります。HTTP の場合、ロケールは、
Content-Languageヘッダー、テキストメディア型のContent-Typeヘッダーの一部としての文字エンコードを介して通信されます。サーブレットがコンテンツ型を指定しない場合、文字エンコードは HTTP ヘッダーを介して通信できないことに注意してください。ただし、サーブレットレスポンスのライターを介して書き込まれたテキストのエンコードには引き続き使用されます。- パラメーター:
loc- レスポンスのロケールまたは {code @null}- 関連事項:
getLocale(),setContentType(java.lang.String),setCharacterEncoding(java.lang.String)
getLocale
LocaleSE getLocale()
setLocale(java.util.Locale)メソッドを使用して、このレスポンスに指定されたロケールを返します。レスポンスのコミット後にsetLocaleを呼び出しても効果はありません。ロケールが指定されていない場合、コンテナーのデフォルトのロケールが返されます。- 戻り値:
- このレスポンスのロケール。
- 関連事項:
setLocale(java.util.Locale)