public interface ServletResponseServletResponse オブジェクトを作成し、それを引数としてサーブレットの 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 のプロファイルを定義し、それらの標準はまだ進化しています。
ServletOutputStream| 修飾子と型 | メソッドと説明 |
|---|---|
void | flushBuffer() バッファ内のコンテンツを強制的にクライアントに書き込みます。 |
int | getBufferSize() レスポンスに使用される実際のバッファサイズを返します。 |
StringSE | getCharacterEncoding() このレスポンスで送信される本文に使用される文字エンコード(MIME 文字セット)の名前を返します。 |
StringSE | getContentType() このレスポンスで送信される MIME 本文に使用されるコンテンツ型を返します。 |
LocaleSE | getLocale()setLocale(java.util.Locale) メソッドを使用して、このレスポンスに指定されたロケールを返します。 |
ServletOutputStream | getOutputStream() レスポンスにバイナリデータを書き込むのに適した ServletOutputStream を返します。 |
PrintWriterSE | getWriter() クライアントに文字テキストを送信できる PrintWriter オブジェクトを返します。 |
boolean | isCommitted() レスポンスがコミットされたかどうかを示すブール値を返します。 |
void | reset() バッファーに存在するすべてのデータとステータスコード、ヘッダーをクリアします。 |
void | resetBuffer() ヘッダーまたはステータスコードをクリアせずに、レスポンスの基になるバッファのコンテンツをクリアします。 |
void | setBufferSize(int size) レスポンスの本文の優先バッファサイズを設定します。 |
void | setCharacterEncoding(StringSE charset) クライアントに送信されるレスポンスの文字エンコード(MIME 文字セット)を、たとえば UTF-8 に設定します。 |
void | setContentLength(int len) レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。 |
void | setContentLengthLong(long len) レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。 |
void | setContentType(StringSE type) レスポンスがまだコミットされていない場合、クライアントに送信されるレスポンスのコンテンツ型を設定します。 |
void | setLocale(LocaleSE loc) レスポンスがまだコミットされていない場合、レスポンスのロケールを設定します。 |
StringSE getCharacterEncoding()
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-8StringSE getContentType()
setContentType(java.lang.String) を使用して適切なコンテンツ型を指定する必要があります。コンテンツ型が指定されていない場合、このメソッドは null を返します。コンテンツ型が指定されており、getCharacterEncoding() または getWriter() に従って文字エンコードが明示的または暗黙的に指定されている場合、charset パラメーターは返される文字列に含まれます。文字エンコードが指定されていない場合、charset パラメーターは省略されます。text/html; charset=UTF-8 などのコンテンツ型を指定する String または nullServletOutputStream getOutputStream() throws IOExceptionSE
ServletOutputStream を返します。サーブレットコンテナーはバイナリデータをエンコードしません。ServletOutputStream で flush() を呼び出すと、レスポンスがコミットされます。reset() が呼び出された場合を除き、このメソッドまたは getWriter() のいずれかを呼び出して、両方ではなく本体を書き込むことができます。
ServletOutputStreamIllegalStateExceptionSE - getWriter メソッドがこのレスポンスで呼び出された場合 IOExceptionSE - 入力または出力の例外が発生した場合 getWriter(), reset()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()void setCharacterEncoding(StringSE charset)
ServletContext.setResponseCharacterEncoding(java.lang.String)、デプロイ記述子、setContentType() または setLocale() メソッドを使用してすでに設定されている場合、このメソッドで設定された値はそれらの値をオーバーライドします。text/html の String で setContentType(java.lang.String) を呼び出し、UTF-8 の String でこのメソッドを呼び出すことは、text/html; charset=UTF-8 の String で setContentType を呼び出すことと同等です。 このメソッドを繰り返し呼び出して、文字エンコーディングを変更できます。getWriter が呼び出された後、またはレスポンスがコミットされた後に呼び出された場合、このメソッドは効果がありません。
プロトコルがその方法を提供する場合、コンテナーは、サーブレットレスポンスのライターに使用される文字エンコーディングをクライアントに伝える必要があります。HTTP の場合、文字エンコードは、テキストメディア型の Content-Type ヘッダーの一部として通信されます。サーブレットがコンテンツ型を指定しない場合、文字エンコードは HTTP ヘッダーを介して通信できないことに注意してください。ただし、サーブレットレスポンスのライターを介して書き込まれたテキストのエンコードには引き続き使用されます。
charset - IANA 文字セットで定義された文字セットのみを指定する文字列 (http://www.iana.org/assignments/character-sets)setContentType(java.lang.String), setLocale(java.util.Locale)void setContentLength(int len)
len - クライアントに返されるコンテンツの長さを指定する整数。Content-Length ヘッダーを設定します void setContentLengthLong(long len)
len - クライアントに返されるコンテンツの長さを指定する long; Content-Length ヘッダーを設定します void setContentType(StringSE type)
text/html;charset=UTF-8 などの文字エンコーディング仕様が含まれる場合があります。getWriter が呼び出される前にこのメソッドが呼び出された場合、レスポンスの文字エンコードは指定されたコンテンツ型からのみ設定されます。 このメソッドは、コンテンツ型と文字エンコーディングを変更するために繰り返し呼び出される場合があります。このメソッドは、レスポンスがコミットされた後に呼び出されても効果がありません。getWriter が呼び出された後、またはレスポンスがコミットされた後に呼び出された場合、レスポンスの文字エンコードは設定されません。
プロトコルがそうする方法を提供する場合、コンテナーはサーブレットレスポンスのライターに使用されるコンテンツ型と文字エンコーディングをクライアントに通信する必要があります。HTTP の場合、Content-Type ヘッダーが使用されます。
type - コンテンツの MIME 型を指定する String setLocale(java.util.Locale), setCharacterEncoding(java.lang.String), getOutputStream(), getWriter()void setBufferSize(int size)
getBufferSize を使用して見つけることができます。バッファを大きくすると、実際に何かが送信される前により多くのコンテンツを書き込むことができるため、サーブレットに適切なステータスコードとヘッダーを設定する時間をより多く提供できます。バッファを小さくすると、サーバーのメモリ負荷が減少し、クライアントがデータをより早く受信できるようになります。
このメソッドは、レスポンス本文のコンテンツが書き込まれる前に呼び出す必要があります。コンテンツが書き込まれた場合、またはレスポンスオブジェクトがコミットされた場合、このメソッドは IllegalStateException をスローします。
size - 優先バッファサイズ IllegalStateExceptionSE - コンテンツが書き込まれた後にこのメソッドが呼び出された場合 getBufferSize(), flushBuffer(), isCommitted(), reset()int getBufferSize()
setBufferSize(int), flushBuffer(), isCommitted(), reset()void flushBuffer()
throws IOExceptionSEIOExceptionSE - バッファをフラッシュする動作を完了できない場合。setBufferSize(int), getBufferSize(), isCommitted(), reset()void resetBuffer()
IllegalStateException をスローします。setBufferSize(int), getBufferSize(), isCommitted(), reset()boolean isCommitted()
setBufferSize(int), getBufferSize(), flushBuffer(), reset()void reset()
getWriter() または getOutputStream() の呼び出し状態もクリアされます。たとえば、getWriter()、reset()、getOutputStream() を呼び出すことは正当です。このメソッドの前に getWriter() または getOutputStream() が呼び出された場合、対応する返された Writer または OutputStream が停止し、古いオブジェクトを使用する動作は未定義になります。レスポンスがコミットされている場合、このメソッドは IllegalStateException をスローします。IllegalStateExceptionSE - レスポンスがすでにコミットされている場合 setBufferSize(int), getBufferSize(), flushBuffer(), isCommitted()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 が呼び出された後、レスポンスがコミットされた後に呼び出された場合、レスポンスの文字エンコードは設定されません。
プロトコルがその方法を提供する場合、コンテナーは、サーブレットレスポンスのライタに使用されるロケールと文字エンコーディングをクライアントに伝える必要があります。HTTP の場合、ロケールは、Content-Language ヘッダー、テキストメディア型の Content-Type ヘッダーの一部としての文字エンコードを介して通信されます。サーブレットがコンテンツ型を指定しない場合、文字エンコードは HTTP ヘッダーを介して通信できないことに注意してください。ただし、サーブレットレスポンスのライターを介して書き込まれたテキストのエンコードには引き続き使用されます。
loc - レスポンスのロケール getLocale(), setContentType(java.lang.String), setCharacterEncoding(java.lang.String)LocaleSE getLocale()
setLocale(java.util.Locale) メソッドを使用して、このレスポンスに指定されたロケールを返します。レスポンスのコミット後に setLocale を呼び出しても効果はありません。ロケールが指定されていない場合、コンテナーのデフォルトのロケールが返されます。setLocale(java.util.Locale)Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.