Mergedoc
Translation

javax.servlet
インタフェース ServletResponse

既知のサブインタフェースの一覧:
HttpServletResponse
既知の実装クラスの一覧:
HttpServletResponseWrapper, ServletResponseWrapper

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 より前に setCharacterEncodingsetContentTypesetLocale メソッドを呼び出さなければなりません。

MIME に関する詳細を知りたい場合は RFC 2045 などの RFC を参照してください。 SMTP や HTTP などのプロトコルは MIME のプロファイルを定義していますが、標準となる方法はいまだに修正が繰り返されています。

作成者:
Various
関連項目:
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)
          レスポンスがまだコミットされていない場合は、レスポンスのロケールを設定します。
 

メソッドの詳細

getCharacterEncoding

java.lang.String getCharacterEncoding()
このレスポンスで送り返すボディで使用されている文字エンコーディング (MIME 文字セット) 名を返します。 文字エンコーディングは明示的に 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

getContentType

java.lang.String getContentType()
このレスポンスで送り返す MIME ボディに適用されているコンテントタイプを返します。 コンテントタイプはレスポンスコミット前に setContentType(java.lang.String) で正しく設定されたものです。 不正なコンテントタイプが設定されていた場合、このメソッドは null を返します。 コンテントタイプが設定されていて、getCharacterEncoding() で示される文字エンコーディングが明示的あるいは暗黙的に設定されている場合は、charset パラメータが返される文字列に含まれています。 不正な文字エンコーディングが設定されている場合は charset パラメータは省略されます。

戻り値:
コンテントタイプを意味する String。 例えば、text/html; charset=UTF-8 や null
導入されたバージョン:
2.4

getOutputStream

ServletOutputStream getOutputStream()
                                    throws java.io.IOException
レスポンスにバイナリデータを出力する際に使用する ServletOutputStream型のオブジェクトを返します。 Servlet コンテナがバイナリデータのエンコードをすることはありません。

レスポンスをコミットするには ServletOutputStream の flush() メソッドを呼び出してください。 このメソッドか getWriter() メソッドのどちらかをメッセージボディの出力に使います。 両方を使うことはできません。

戻り値:
バイナリデータ出力に使用する ServletOutputStream
例外:
java.lang.IllegalStateException - このレスポンスですでに getWriter() メソッドが実行されていた場合
java.io.IOException - 入出力時に例外が発生した場合
関連項目:
getWriter()

getWriter

java.io.PrintWriter getWriter()
                              throws java.io.IOException
文字データをクライアントに送り返すのに使用する PrintWriter オブジェクトを返します。 PrintWritergetCharacterEncoding() で返される文字エンコーディングを使用します。 レスポンスの文字エンコーディングが 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)

setCharacterEncoding

void setCharacterEncoding(java.lang.String charset)
UTF-8 のようなクライアントに送り返すレスポンスの文字エンコーディングを設定します。 文字エンコーディングが setContentType(java.lang.String) または setLocale(java.util.Locale) で設定済みの場合、このメソッドはそれを上書きします。 setContentType(java.lang.String)text/html を指定して、このメソッドで UTF-8 を指定するのと、setContentTypetext/html; charset=UTF-8 を指定するのは同じです。

文字エンコーディングを変更するために繰り返しこのメソッドを呼ぶことができます。 このメソッドは getWriter が呼ばれた後やレスポンスコミット後に呼び出された場合は無効です。

プロトコルがそうした方法を提供する場合、コンテナはクライアントへの Servlet レスポンスの書き込みに使用する文字エンコーディングを送信しなければなりません。 HTTP の場合、文字エンコーディングはテキストメディアタイプ用に Content-Type ヘッダの一部として送信されます。 HTTP ヘッダにコンテントタイプの指定が無い場合は、文字エンコーディングを送信することができないことに注意してください。 しかし、Servlet レスポンスの書き込みでテキストをエンコードするのにまだ使用されています。

パラメータ:
charset - IANA 文字セットで定義された文字セットを示す文字列 (http://www.iana.org/assignments/character-sets)
導入されたバージョン:
2.4
関連項目:
setContentType(java.lang.String), setLocale(java.util.Locale)

setContentLength

void setContentLength(int len)
レスポンスのメッセージボディ部分の長さをセットします。 HTTP Servlet ではこのメソッドは HTTP ヘッダの Content-Length フィールドにセットします。

パラメータ:
len - クライアントに送り返すメッセージボディの長さを指定する整数値。 HTTP の Content-Length ヘッダフィールドの値

setContentType

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()

setBufferSize

void setBufferSize(int size)
適当なバッファサイズをレスポンスに含まれるメッセージボディのサイズに設定します。 Servlet コンテナは少なくても要求されるサイズと同じ大きさのバッファを使用します。 実際のバッファサイズは getBufferSize() メソッドを使うと取得できます。

多きめのバッファサイズを確保しておくと、実際にコンテンツが何も送り返されていない時点でも多くのデータを書き込めるようになります。 このため、より適切なステータスコードやヘッダ情報を Servlet がセットできる余地があります。 小さめのバッファサイズを指定すると、サーバのメモリ消費を低減できるのでクライアントがより速くデータの受信を開始できるようになります。

このメソッドはレスポンスにメッセージボディが出力される前に呼び出さなければなりません。 すでに出力された後やレスポンスコミット後にこのメソッドが呼び出されると IllegalStateException をスローします。

パラメータ:
size - 適当なバッファサイズを指定する整数値
例外:
java.lang.IllegalStateException - すでにコンテンツが出力された後でこのメソッドが実行された場合
関連項目:
getBufferSize(), flushBuffer(), isCommitted(), reset()

getBufferSize

int getBufferSize()
このレスポンスに設定されている実バッファサイズを返します。 バッファリングされていない場合は 0 です。

戻り値:
実際に使われているバッファサイズ
関連項目:
setBufferSize(int), flushBuffer(), isCommitted(), reset()

flushBuffer

void flushBuffer()
                 throws java.io.IOException
バッファリングされているコンテンツを強制的にクライアントに出力します。 このメソッドを実行するとレスポンスがコミットされ、また、意味のあるステータスコードやヘッダフィールドも出力されます。

例外:
java.io.IOException
関連項目:
setBufferSize(int), getBufferSize(), isCommitted(), reset()

resetBuffer

void resetBuffer()
レスポンスのヘッダフィールドの値やステータスコードをそのままにしてバッファに溜められているコンテンツを消去します。 レスポンスがすでにコミットされている場合は、このメソッドは IllegalStateException をスローします。

導入されたバージョン:
2.3
関連項目:
setBufferSize(int), getBufferSize(), isCommitted(), reset()

isCommitted

boolean isCommitted()
レスポンスがすでにコミットされたかどうかを示す boolean を返します。 コミットされたレスポンスにはすでにステータスコードとヘッダフィールドに値がセットされています。

戻り値:
レスポンスがすでにコミットされたかどうかを示す boolean
関連項目:
setBufferSize(int), getBufferSize(), flushBuffer(), reset()

reset

void reset()
バッファリングされているデータ、ステータスコードとヘッダフィールドの値を削除します。 レスポンスがすでにコミットされている場合は、このメソッドは IllegalStateException をスローします。

例外:
java.lang.IllegalStateException - レスポンスがすでにコミットされている場合
関連項目:
setBufferSize(int), getBufferSize(), flushBuffer(), isCommitted()

setLocale

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)

getLocale

java.util.Locale getLocale()
このレスポンスに setLocale(java.util.Locale) メソッドで設定されたロケールを返します。 レスポンスコミット後の setLocale 呼び出しは無効です。 ロケールが設定されていない場合はコンテナのデフォルトロケールを返します。

関連項目:
setLocale(java.util.Locale)

Mergedoc
Translation

Copyright © 2000- The Apache Software Foundation. All rights Reserved.