|
|||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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 のプロファイルを定義していますが、 標準となる方法はいまだに修正が繰り返されています。
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 で指定する文字エンコーディングを含む)ヘッダも適当な値にセットします。 |
メソッドの詳細 |
public String getCharacterEncoding()
文字エンコーディングが設定されていない場合は暗黙的に
ISO-8859-1
(Latin-1
)がセットされます。
文字エンコーディングと MIME について詳細を知りたい場合は RFC 2047 (http://ds.internic.net/rfc/rfc2045.txt) を参照してください。
String
。
例えば、ISO-8859-1
public ServletOutputStream getOutputStream() throws IOException
ServletOutputStream
型のオブジェクトを返します。
Servlet コンテナがバイナリデータのエンコードをすることはありません。
レスポンスをコミットするには ServletOutputStream の
flush() メソッドを呼び出してください。このメソッドか
getWriter()
メソッドのどちらかをメッセージボディの出力に使います。
両方を使うことはできません。
ServletOutputStream
IllegalStateException
- このレスポンスですでに
getWriter()
メソッドが実行されていた場合
IOException
- 入出力時に例外が発生した場合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)
public void setContentLength(int len)
len
- クライアントに送り返すメッセージボディの長さを指定する整数値。
HTTP の Content-Length ヘッダフィールドの値public void setContentType(String type)
text/html; charset=ISO-8859-4
のように文字エンコーディングのタイプが含まれることがあります。
PrintWriter
オブジェクトを取得する場合はあらかじめこのメソッドを実行しておくべきです。
type
- コンテントタイプを指定する String
getOutputStream()
,
getWriter()
public void setBufferSize(int size)
getBufferSize()
メソッドを使うと取得できます。
多きめのバッファサイズを確保しておくと、 実際にコンテンツが何も送り返されていない時点でも多くのデータを書き込めるようになります。 このため、より適切なステータスコードやヘッダ情報を Servlet がセットできる余地があります。 小さめのバッファサイズを指定すると、サーバのメモリ消費を低減できるのでクライアントがより速くデータの受信を開始できるようになります。
このメソッドはレスポンスにメッセージボディが出力される前に呼び出さなければなりません。
すでに出力された後にこのメソッドが呼び出されると
IllegalStateException
をスローします。
size
- 適当なバッファサイズを指定する整数値
IllegalStateException
- すでにコンテンツが出力された後でこのメソッドが実行された場合getBufferSize()
,
flushBuffer()
,
isCommitted()
,
reset()
public int getBufferSize()
setBufferSize(int)
,
flushBuffer()
,
isCommitted()
,
reset()
public void flushBuffer() throws IOException
IOException
setBufferSize(int)
,
getBufferSize()
,
isCommitted()
,
reset()
public void resetBuffer()
IllegalStateException
をスローします。
setBufferSize(int)
,
getBufferSize()
,
isCommitted()
,
reset()
public boolean isCommitted()
setBufferSize(int)
,
getBufferSize()
,
flushBuffer()
,
reset()
public void reset()
IllegalStateException
をスローします。
IllegalStateException
- レスポンスがすでにコミットされている場合setBufferSize(int)
,
getBufferSize()
,
flushBuffer()
,
isCommitted()
public void setLocale(Locale loc)
getWriter()
メソッドよりも前に呼び出しておくべきです。
デフォルトではレスポンスのロケールはサーバの
デフォルトロケールです。
loc
- レスポンスのロケールを指定する java.util.Locale オブジェクト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.