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