javax.servlet
インタフェース ServletResponse

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

public interface ServletResponse

Servlet がクライアントに送り返すレスポンスをラップするオブジェクトを定義しています。 ServletResponse 型のオブジェクトを Servlet コンテナが生成し、service メソッドの引数で Servlet に渡します。

バイナリデータを MIME のメッセージボディにセットして送り返す場合は getOutputStream() メソッドで取得できる ServletOutputStream オブジェクトを使ってください。また、 文字データを送り返す場合は、getWriter() メソッドにより取得できる PrintWriter オブジェクトを使ってください。 バイナリデータとテキストデータが混在するレスポンスを返す場合は、 例えばマルチパートで構成されるレスポンスを生成し、 ServletOutputStream を使って文字データ部分を扱うプログラムを用意します。

MIME のボディにセットして送り返すレスポンスの文字エンコーディングは setContentType(java.lang.String) メソッドで指定できます。例えば、 "text/html; charset=Shift_JIS" のようにします。 あるいは、文字エンコーディングを setLocale(java.util.Locale) メソッドを使ってセットすることも可能です。 文字エンコーディングが指定されなかった場合は ISO-8850-1 を適用します。setContentType() および、 setLocale() メソッドは必ず getWriter() メソッドよりも前に実行されなければいけません。 これは文字エンコーディングを見て出力用のオブジェクトを構築していることが理由です。

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

バージョン:
$Version$
作成者:
Various
関連項目:
ServletOutputStream

メソッドの概要
 void flushBuffer()
          バッファリングされているコンテンツを強制的にクライアントに出力します。
 int getBufferSize()
          このレスポンスに設定されている実バッファサイズを返します。
 String getCharacterEncoding()
          このレスポンスで送り返す MIME ボディに適用されている文字エンコーディング名を返します。
 Locale getLocale()
          レスポンスに設定されているロケールを返します。
 ServletOutputStream getOutputStream()
          レスポンスにバイナリデータを出力する際に使用する ServletOutputStream型のオブジェクトを返します。
 PrintWriter getWriter()
          文字データをクライアントに送り返すのに使用する PrintWriterオブジェクトを返します。
 boolean isCommitted()
          レスポンスがすでにコミットされたかどうかを示す boolean を返します。
 void reset()
          バッファリングされているデータ、ステータスコードとヘッダフィールドの値を削除します。
 void resetBuffer()
          レスポンスのヘッダフィールドの値やステータスコードをそのままにしてバッファに溜められているコンテンツを消去します。
 void setBufferSize(int size)
          適当なバッファサイズをレスポンスに含まれるメッセージボディのサイズに設定します。
 void setContentLength(int len)
          レスポンスのメッセージボディ部分の長さをセットします。
 void setContentType(String type)
          クライアントに送り返されるレスポンスのコンテントタイプをセットします。
 void setLocale(Locale loc)
          レスポンスのロケールをセットしますが、このとき(Content-Type で指定する文字エンコーディングを含む)ヘッダも適当な値にセットします。
 

メソッドの詳細

getCharacterEncoding

public String getCharacterEncoding()
このレスポンスで送り返す MIME ボディに適用されている文字エンコーディング名を返します。

文字エンコーディングが設定されていない場合は暗黙的に ISO-8859-1 (Latin-1)がセットされます。

文字エンコーディングと MIME について詳細を知りたい場合は RFC 2047 (http://ds.internic.net/rfc/rfc2045.txt) を参照してください。

戻り値:
文字エンコーディング名を意味する String。 例えば、ISO-8859-1

getOutputStream

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

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

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

getWriter

public PrintWriter getWriter()
                      throws IOException
文字データをクライアントに送り返すのに使用する PrintWriterオブジェクトを返します。 ここで適用される文字エンコーディングは setContentType(java.lang.String) メソッドで charset= の形式で指定したものです。 指定の文字エンコーディングに対応したPrintWriter 型のオブジェクトを取得するにはこのメソッドよりも setContentType(java.lang.String) メソッドが実行されていなければなりません。

必要ならば、使用されている文字エンコーディングを反映するようにレスポンスの MIME タイプが修正されます。

PrintWriter の flash() メソッドを呼び出すとレスポンスがコミットされます。

このメソッドか getOutputStream() メソッドのどちらかをボディメッセージの出力に使用します。両方は使えません。

戻り値:
クライアントに文字データを送り返すことができる PrintWriter オブジェクト
例外:
UnsupportedEncodingException - setContentType メソッドで指定された文字エンコーディングがサポートされていない場合
IllegalStateException - このレスポンスオブジェクトの getOutputStream メソッドがすでに実行されていた場合
IOException - 入出力時に例外が発生した場合
関連項目:
getOutputStream(), setContentType(java.lang.String)

setContentLength

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

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

setContentType

public void setContentType(String type)
クライアントに送り返されるレスポンスのコンテントタイプをセットします。 コンテントタイプには、例えば、 text/html; charset=ISO-8859-4 のように文字エンコーディングのタイプが含まれることがあります。

PrintWriter オブジェクトを取得する場合はあらかじめこのメソッドを実行しておくべきです。

パラメータ:
type - コンテントタイプを指定する String
関連項目:
getOutputStream(), getWriter()

setBufferSize

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

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

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

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

getBufferSize

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

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

flushBuffer

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

IOException
関連項目:
setBufferSize(int), getBufferSize(), isCommitted(), reset()

resetBuffer

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

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

isCommitted

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

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

reset

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

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

setLocale

public void setLocale(Locale loc)
レスポンスのロケールをセットしますが、このとき(Content-Type で指定する文字エンコーディングを含む)ヘッダも適当な値にセットします。 このメソッドは getWriter() メソッドよりも前に呼び出しておくべきです。 デフォルトではレスポンスのロケールはサーバの デフォルトロケールです。

パラメータ:
loc - レスポンスのロケールを指定する java.util.Locale オブジェクト
関連項目:
getLocale()

getLocale

public Locale getLocale()
レスポンスに設定されているロケールを返します。

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


このドキュメントは、Ja-Jakarta Project により翻訳されました。コメントがある場合は、jajakarta-report@jajakarta.good-day.netまでお願いします。

Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.