|
Mergedoc Translation |
||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface ServletResponse
Servlet がクライアントに送り返すレスポンスをラップするオブジェクトを定義しています。
ServletResponse
型のオブジェクトを Servlet コンテナが生成し、service
メソッドの引数で Servlet に渡します。
バイナリデータを MIME のメッセージボディにセットして送り返す場合は getOutputStream()
メソッドで取得できる ServletOutputStream
オブジェクトを使ってください。
また、文字データを送り返す場合は、getWriter()
メソッドにより取得できる PrintWriter
オブジェクトを使ってください。
バイナリデータとテキストデータが混在するレスポンスを返す場合は、例えばマルチパートで構成されるレスポンスを生成し、ServletOutputStream
を使って文字データ部分を扱うプログラムを用意します。
MIME のボディにセットして送り返すレスポンスの文字セットは setCharacterEncoding(java.lang.String)
や setContentType(java.lang.String)
メソッドで明示的に設定するか、setLocale(java.util.Locale)
が暗黙的に使用されます。
明示的な設定は暗黙的な仕様より優先されます。 文字セットが全く指定されない場合は ISO-8859-1 が使用されます。
レスポンスで文字エンコーディングを使用するには getWriter
より前に setCharacterEncoding
、setContentType
、setLocale
メソッドを呼び出さなければなりません。
MIME に関する詳細を知りたい場合は RFC 2045 などの RFC を参照してください。 SMTP や HTTP などのプロトコルは MIME のプロファイルを定義していますが、標準となる方法はいまだに修正が繰り返されています。
ServletOutputStream
メソッドの概要 | |
---|---|
void |
flushBuffer()
バッファリングされているコンテンツを強制的にクライアントに出力します。 |
int |
getBufferSize()
このレスポンスに設定されている実バッファサイズを返します。 |
java.lang.String |
getCharacterEncoding()
このレスポンスで送り返すボディで使用されている文字エンコーディング (MIME 文字セット) 名を返します。 |
java.lang.String |
getContentType()
このレスポンスで送り返す MIME ボディに適用されているコンテントタイプを返します。 |
java.util.Locale |
getLocale()
このレスポンスに setLocale(java.util.Locale) メソッドで設定されたロケールを返します。 |
ServletOutputStream |
getOutputStream()
レスポンスにバイナリデータを出力する際に使用する ServletOutputStream 型のオブジェクトを返します。 |
java.io.PrintWriter |
getWriter()
文字データをクライアントに送り返すのに使用する PrintWriter オブジェクトを返します。 |
boolean |
isCommitted()
レスポンスがすでにコミットされたかどうかを示す boolean を返します。 |
void |
reset()
バッファリングされているデータ、ステータスコードとヘッダフィールドの値を削除します。 |
void |
resetBuffer()
レスポンスのヘッダフィールドの値やステータスコードをそのままにしてバッファに溜められているコンテンツを消去します。 |
void |
setBufferSize(int size)
適当なバッファサイズをレスポンスに含まれるメッセージボディのサイズに設定します。 |
void |
setCharacterEncoding(java.lang.String charset)
UTF-8 のようなクライアントに送り返すレスポンスの文字エンコーディングを設定します。 |
void |
setContentLength(int len)
レスポンスのメッセージボディ部分の長さをセットします。 |
void |
setContentType(java.lang.String type)
レスポンスがまだ確定されていない場合に、クライアントに送り返されるレスポンスのコンテントタイプをセットします。 |
void |
setLocale(java.util.Locale loc)
レスポンスがまだコミットされていない場合は、レスポンスのロケールを設定します。 |
メソッドの詳細 |
---|
java.lang.String getCharacterEncoding()
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
。
例えば、ISO-8859-1
java.lang.String getContentType()
setContentType(java.lang.String)
で正しく設定されたものです。
不正なコンテントタイプが設定されていた場合、このメソッドは null を返します。
コンテントタイプが設定されていて、getCharacterEncoding()
で示される文字エンコーディングが明示的あるいは暗黙的に設定されている場合は、charset パラメータが返される文字列に含まれています。
不正な文字エンコーディングが設定されている場合は charset パラメータは省略されます。
String
。
例えば、text/html; charset=UTF-8
や nullServletOutputStream getOutputStream() throws java.io.IOException
ServletOutputStream
型のオブジェクトを返します。
Servlet コンテナがバイナリデータのエンコードをすることはありません。
レスポンスをコミットするには ServletOutputStream の flush() メソッドを呼び出してください。
このメソッドか getWriter()
メソッドのどちらかをメッセージボディの出力に使います。
両方を使うことはできません。
ServletOutputStream
java.lang.IllegalStateException
- このレスポンスですでに getWriter()
メソッドが実行されていた場合
java.io.IOException
- 入出力時に例外が発生した場合getWriter()
java.io.PrintWriter getWriter() throws java.io.IOException
PrintWriter
オブジェクトを返します。
PrintWriter
は getCharacterEncoding()
で返される文字エンコーディングを使用します。
レスポンスの文字エンコーディングが getCharacterEncoding
で返す値に設定されていない (つまり、デフォルト値の ISO-8859-1
を返す) 場合、ISO-8859-1
になります。
PrintWriter
の flash() メソッドを呼び出すとレスポンスがコミットされます。
このメソッドか getOutputStream()
メソッドのどちらかをボディメッセージの出力に使用します。両方は使えません。
PrintWriter
オブジェクト
UnsupportedEncodingException
- getCharacterEncoding
で返される文字エンコーディングが使用出来ない場合
java.lang.IllegalStateException
- このレスポンスオブジェクトの getOutputStream
メソッドがすでに実行されていた場合
java.io.IOException
- 入出力時に例外が発生した場合getOutputStream()
,
setCharacterEncoding(java.lang.String)
void setCharacterEncoding(java.lang.String charset)
setContentType(java.lang.String)
または setLocale(java.util.Locale)
で設定済みの場合、このメソッドはそれを上書きします。
setContentType(java.lang.String)
で text/html
を指定して、このメソッドで UTF-8
を指定するのと、setContentType
で text/html; charset=UTF-8
を指定するのは同じです。
文字エンコーディングを変更するために繰り返しこのメソッドを呼ぶことができます。
このメソッドは getWriter
が呼ばれた後やレスポンスコミット後に呼び出された場合は無効です。
プロトコルがそうした方法を提供する場合、コンテナはクライアントへの Servlet レスポンスの書き込みに使用する文字エンコーディングを送信しなければなりません。
HTTP の場合、文字エンコーディングはテキストメディアタイプ用に Content-Type
ヘッダの一部として送信されます。
HTTP ヘッダにコンテントタイプの指定が無い場合は、文字エンコーディングを送信することができないことに注意してください。
しかし、Servlet レスポンスの書き込みでテキストをエンコードするのにまだ使用されています。
charset
- IANA 文字セットで定義された文字セットを示す文字列 (http://www.iana.org/assignments/character-sets)setContentType(java.lang.String)
,
setLocale(java.util.Locale)
void setContentLength(int len)
len
- クライアントに送り返すメッセージボディの長さを指定する整数値。
HTTP の Content-Length ヘッダフィールドの値void setContentType(java.lang.String type)
text/html;charset=UTF-8
のような文字エンコーディングが含まれます。
getWriter
を呼び出す前にこのメソッドを呼び出した場合のみ指定されたコンテントタイプが設定されます。
このメソッドは、コンテントタイプと文字エンコーディングを変えるために繰り返して呼ばれるかもしれません。
レスポンスコミット後に呼び出した場合は、無効です。
getWriter
呼び出し後やレスポンスコミット後に呼び出した場合はレスポンスの文字エンコーディングを設定しません。
プロトコルがそうした方法を提供する場合、コンテナはクライアントへの Servlet レスポンスの書き込みに使用するコンテントタイプと文字エンコーディングを送信しなければなりません。 HTTP の場合、コンテントタイプヘッダが使用されています。
type
- コンテントタイプを指定する String
setLocale(java.util.Locale)
,
setCharacterEncoding(java.lang.String)
,
getOutputStream()
,
getWriter()
void setBufferSize(int size)
getBufferSize()
メソッドを使うと取得できます。
多きめのバッファサイズを確保しておくと、実際にコンテンツが何も送り返されていない時点でも多くのデータを書き込めるようになります。 このため、より適切なステータスコードやヘッダ情報を Servlet がセットできる余地があります。 小さめのバッファサイズを指定すると、サーバのメモリ消費を低減できるのでクライアントがより速くデータの受信を開始できるようになります。
このメソッドはレスポンスにメッセージボディが出力される前に呼び出さなければなりません。
すでに出力された後やレスポンスコミット後にこのメソッドが呼び出されると IllegalStateException
をスローします。
size
- 適当なバッファサイズを指定する整数値
java.lang.IllegalStateException
- すでにコンテンツが出力された後でこのメソッドが実行された場合getBufferSize()
,
flushBuffer()
,
isCommitted()
,
reset()
int getBufferSize()
setBufferSize(int)
,
flushBuffer()
,
isCommitted()
,
reset()
void flushBuffer() throws java.io.IOException
java.io.IOException
setBufferSize(int)
,
getBufferSize()
,
isCommitted()
,
reset()
void resetBuffer()
IllegalStateException
をスローします。
setBufferSize(int)
,
getBufferSize()
,
isCommitted()
,
reset()
boolean isCommitted()
setBufferSize(int)
,
getBufferSize()
,
flushBuffer()
,
reset()
void reset()
IllegalStateException
をスローします。
java.lang.IllegalStateException
- レスポンスがすでにコミットされている場合setBufferSize(int)
,
getBufferSize()
,
flushBuffer()
,
isCommitted()
void setLocale(java.util.Locale loc)
setContentType(java.lang.String)
か setCharacterEncoding(java.lang.String)
による明示的な文字エンコーディングが未設定で、getWriter
をまだ呼び出していない、かつまだレスポンスをコミットしていない場合にロケールによる適切な文字エンコーディングを設定します。
配備記述子に locale-encoding-mapping-list
要素を含んでいて、指定されたロケールのマッピングが提供されている場合はそのマッピングが使用されます。
そうでない場合、ロケールから文字エンコーディングへのマッピングはコンテナに依存します。
このメソッドは、ロケールと文字エンコーディングを変更するために繰り返して呼ばれるかもしれません。
レスポンスコミット後に呼ばれた場合は、効果はありません。
文字セットを指定して setContentType(java.lang.String)
が呼ばれた後、setCharacterEncoding(java.lang.String)
が呼ばれた後、getWriter
が呼ばれた後、レスポンスコミット後はレスポンスの文字エンコーディングは設定されません。
プロトコルがそうした方法を提供する場合、コンテナはクライアントへの Servlet レスポンスの書き込みに使用するロケールと文字エンコーディングを送信しなければなりません。
HTTP の場合、テキストメディアタイプ用にロケールは Content-Language
ヘッダを通して、文字エンコーディングは Content-Type
ヘッダの一部として送信されます。
HTTP ヘッダにコンテントタイプの指定が無い場合は、文字エンコーディングを送信することができないことに注意してください。
しかし、Servlet レスポンスの書き込みでテキストをエンコードするのにまだ使用されています。
loc
- レスポンスのロケールgetLocale()
,
setContentType(java.lang.String)
,
setCharacterEncoding(java.lang.String)
java.util.Locale getLocale()
setLocale(java.util.Locale)
メソッドで設定されたロケールを返します。
レスポンスコミット後の setLocale
呼び出しは無効です。
ロケールが設定されていない場合はコンテナのデフォルトロケールを返します。
setLocale(java.util.Locale)
|
Mergedoc Translation |
||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |