クラス JspWriter
- 実装されているすべてのインターフェース:
CloseableSE
、FlushableSE
、AppendableSE
、AutoCloseableSE
- 既知の直属サブクラス
BodyContent
JSP ページのアクションとテンプレートデータは、PageContext オブジェクトのメソッドを使用して自動的に初期化される暗黙変数 out によって参照される JspWriter オブジェクトを使用して書き込まれます。
この抽象クラスは、java.io.BufferedWriter クラスと java.io.PrintWriter クラスにある機能の一部をエミュレートしますが、PrintWriter はそうではないのに、出力メソッドから java.io.IOException をスローするという点が異なります。
バッファリング
最初の JspWriter オブジェクトは、ページがバッファリングされているかどうかに応じて、ServletResponse の PrintWriter オブジェクトに関連付けられています。ページがバッファリングされていない場合、この JspWriter オブジェクトに書き込まれた出力は PrintWriter に直接書き込まれ、必要に応じてレスポンスオブジェクトで getWriter() メソッドを呼び出すことによって作成されます。ただし、ページがバッファリングされている場合、バッファがフラッシュされ、setContentType() のような操作が有効になるまで、PrintWriter オブジェクトは作成されません。この柔軟性によりプログラミングが大幅に簡略化されるため、JSP ページのデフォルトはバッファリングです。
バッファリングは、バッファを超えたときにどうするかという課題を提起します。2 つのアプローチを取ることができます。
- バッファの超過は致命的なエラーではありません。バッファを超えた場合は、出力をフラッシュするだけです。
- バッファを超えると致命的なエラーになります。バッファを超えると、例外が発生します。
どちらのアプローチも有効であるため、JSP テクノロジではどちらもサポートされています。ページの動作は autoFlush 属性によって制御され、デフォルトでは true に設定されます。一般に、正確で完全なデータがクライアントに送信されたことを確認する必要がある JSP ページでは、クライアントがアプリケーション自体である場合が典型的ですが、autoFlush を false に設定するとよい場合があります。一方、部分的に構築されていても意味のあるデータを送信する JSP ページでは、autoFlush を true に設定するとよい場合があります。たとえば、データがブラウザーですぐに表示するために送信される場合などです。各アプリケーションでは、特定のニーズを考慮する必要があります。
検討された代替策は、バッファサイズを無制限にすることでした。しかし、これには暴走した計算が無限のリソースを消費するという欠点がありました。
JSP 実装クラスの "out" 暗黙変数はこの型です。ページディレクティブが autoflush="true" を選択した場合、現在の操作がフラッシュなしで実行された場合にオーバーフロー状態が発生した場合、このクラスのすべての I/O 操作がバッファーの内容を自動的にフラッシュします。autoflush="false" の場合、現在の操作を実行するとバッファオーバーフロー状態が発生する場合、このクラスのすべての I/O 操作は IOException をスローします。
フィールドのサマリー
フィールド修飾子と型フィールド説明protected boolean
JspWriter が自動フラッシュしているかどうか。protected int
JspWriter が使用するバッファーのサイズ。static final int
Writer がバッファリングされ、実装のデフォルトのバッファサイズを使用していることを示す定数。static final int
Writer が出力をバッファリングしていないことを示す定数。static final int
Writer がバッファリングされ、制限がないことを示す定数。これは BodyContent で使用されます。コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明abstract void
clear()
バッファの内容をクリアします。abstract void
バッファの現在の内容をクリアします。abstract void
close()
最初にフラッシュして、ストリームを閉じます。abstract void
flush()
ストリームをフラッシュします。int
このメソッドは、JspWriter によって使用されるバッファのサイズを返します。abstract int
このメソッドは、バッファ内の未使用のバイト数を返します。boolean
このメソッドは、JspWriter が autoFlushing であるかどうかを示します。abstract void
newLine()
行区切りを記述します。abstract void
print
(boolean b) ブール値を出力します。abstract void
print
(char c) 文字を出力します。abstract void
print
(char[] s) 文字の配列を出力します。abstract void
print
(double d) 倍精度浮動小数点数を出力します。abstract void
print
(float f) 浮動小数点数を出力します。abstract void
print
(int i) 整数を出力します。abstract void
print
(long l) 長整数を出力します。abstract void
オブジェクトを出力します。abstract void
文字列を print。abstract void
println()
行セパレーター列を書き込んで、現在の行を終了します。abstract void
println
(boolean x) ブール値を出力して、行を終了します。abstract void
println
(char x) 文字を出力して、行を終了します。abstract void
println
(char[] x) 文字の配列を出力して、行を終了します。abstract void
println
(double x) 倍精度浮動小数点数を出力して、行を終了します。abstract void
println
(float x) 浮動小数点数を出力して、行を終了します。abstract void
println
(int x) 整数を出力して、行を終了します。abstract void
println
(long x) 長整数を出力して、行を終了します。abstract void
オブジェクトを出力して、行を終了します。abstract void
文字列を出力して、行を終了します。
フィールドの詳細
NO_BUFFER
public static final int NO_BUFFERWriter が出力をバッファリングしていないことを示す定数。- 関連事項:
DEFAULT_BUFFER
public static final int DEFAULT_BUFFERWriter がバッファリングされ、実装のデフォルトのバッファサイズを使用していることを示す定数。- 関連事項:
UNBOUNDED_BUFFER
public static final int UNBOUNDED_BUFFERWriter がバッファリングされ、制限がないことを示す定数。これは BodyContent で使用されます。- 関連事項:
bufferSize
protected int bufferSizeJspWriter が使用するバッファーのサイズ。autoFlush
protected boolean autoFlushJspWriter が自動フラッシュしているかどうか。
コンストラクターの詳細
JspWriter
protected JspWriter(int bufferSize, boolean autoFlush) protected コンストラクター。- パラメーター:
bufferSize
- JspWriter が使用するバッファのサイズautoFlush
- JspWriter を自動フラッシュするかどうか
メソッドの詳細
newLine
行区切りを書きます。行セパレーター列は、システムプロパティline.separator
によって定義され、必ずしも単一の改行 ('\n' ) 文字であるとは限りません。- 例外:
IOExceptionSE
- 入出力エラーが発生した場合
print
ブール値を出力します。
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(boolean)
SE- パラメーター:
b
- 出力するboolean
- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
print
文字を出力します。文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。- パラメーター:
c
- 出力するchar
- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
print
整数を出力します。
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(int)
SE- パラメーター:
i
- 出力するint
- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合- 関連事項:
print
長整数を出力します。
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(long)
SE- パラメーター:
l
- 出力するlong
- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合- 関連事項:
print
浮動小数点数を出力します。
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(float)
SE- パラメーター:
f
- 出力するfloat
- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合- 関連事項:
print
倍精度浮動小数点数を出力します。
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(double)
SE- パラメーター:
d
- 出力するdouble
- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合- 関連事項:
print
文字の配列を出力します。文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。- パラメーター:
s
- 出力される文字の配列- 例外:
NullPointerExceptionSE
-s
がnull
の場合IOExceptionSE
- 書き込み中にエラーが発生した場合
print
文字列を出力します。引数がnull
の場合、文字列"null"
が出力されます。それ以外の場合、文字列の文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。- パラメーター:
s
- 出力するString
- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
print
オブジェクトを出力します。
メソッドによって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(Object)
SE- パラメーター:
obj
- 出力するObject
- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合- 関連事項:
println
行セパレーター列を書き込んで、現在の行を終了します。行セパレーター列はシステムプロパティline.separator
によって定義され、必ずしも単一の改行文字('\n'
)ではありません。- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
ブール値を出力して、行を終了します。このメソッドは、
を呼び出してからprint(boolean)
を呼び出すように動作します。println()
- パラメーター:
x
- 書き込むブール値- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
文字を出力して、行を終了します。このメソッドは、
を呼び出してからprint(char)
を呼び出すように動作します。println()
- パラメーター:
x
- 書き込む char- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
整数を出力して、行を終了します。このメソッドは、
を呼び出してからprint(int)
を呼び出すように動作します。println()
- パラメーター:
x
- 書き込む int- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
長整数を出力して、行を終了します。このメソッドは、
を呼び出してからprint(long)
を呼び出すように動作します。println()
- パラメーター:
x
- 書くのに長い- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
浮動小数点数を出力して、行を終了します。このメソッドは、
を呼び出してからprint(float)
を呼び出すように動作します。println()
- パラメーター:
x
- 書き込む float- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
倍精度浮動小数点数を出力して、行を終了します。このメソッドは、
を呼び出してからprint(double)
を呼び出すように動作します。println()
- パラメーター:
x
- 書き込む double- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
文字の配列を出力して、行を終了します。このメソッドは、print(char[])
を呼び出してからprintln()
を呼び出すように動作します。- パラメーター:
x
- 書き込む char[]- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
文字列を出力して、行を終了します。このメソッドは、
を呼び出してからprint(String)
を呼び出すように動作します。println()
- パラメーター:
x
- 書き込む文字列- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
println
オブジェクトを出力して、行を終了します。このメソッドは、
を呼び出してからprint(Object)
を呼び出すように動作します。println()
- パラメーター:
x
- 書き込むオブジェクト- 例外:
IOExceptionSE
- 書き込み中にエラーが発生した場合
clear
バッファの内容をクリアします。バッファがすでにフラッシュされている場合、クリア操作は IOException をスローして、一部のデータがクライアントのレスポンスストリームにすでに取り消し不能に書き込まれていることを通知します。- 例外:
IOExceptionSE
- 入出力エラーが発生した場合
clearBuffer
バッファの現在の内容をクリアします。clear() とは異なり、バッファがすでにフラッシュされている場合、このメソッドは IOException をスローしません。バッファの現在の内容をクリアして戻るだけです。- 例外:
IOExceptionSE
- 入出力エラーが発生した場合
flush
ストリームをフラッシュします。ストリームがさまざまな write() メソッドからの文字をバッファーに保存した場合、目的の宛先にすぐに書き込みます。次に、その宛先が別の文字またはバイトストリームの場合は、フラッシュします。flush() を 1 回呼び出すと、ライターのチェーンと OutputStreams のすべてのバッファがフラッシュされます。バッファサイズを超えると、メソッドが間接的に呼び出される場合があります。
ストリームが閉じられると、write() または flush() をさらに呼び出すと、IOException がスローされます。
- 次で指定:
- インターフェース
FlushableSE
のflush
- 次で指定:
- クラス
WriterSE
のflush
- 例外:
IOExceptionSE
- 入出力エラーが発生した場合
close
最初にフラッシュして、ストリームを閉じます。JSP コンテナーによって生成されたコードには close() への呼び出しが自動的に含まれるため、このメソッドを初期 JspWriter に対して明示的に呼び出す必要はありません。
flush() とは異なり、以前に閉じられたストリームを閉じても効果はありません。
- 次で指定:
- インターフェース
AutoCloseableSE
のclose
- 次で指定:
- インターフェース
CloseableSE
のclose
- 次で指定:
- クラス
WriterSE
のclose
- 例外:
IOExceptionSE
- 入出力エラーが発生した場合
getBufferSize
public int getBufferSize()このメソッドは、JspWriter によって使用されるバッファのサイズを返します。- 戻り値:
- バッファのサイズ(バイト単位)、または 0 の場合はバッファリングされません。
getRemaining
public abstract int getRemaining()このメソッドは、バッファ内の未使用のバイト数を返します。- 戻り値:
- バッファで使用されていないバイト数
isAutoFlush
public boolean isAutoFlush()このメソッドは、JspWriter が autoFlushing であるかどうかを示します。- 戻り値:
- この JspWriter がバッファオーバーフロー条件で自動フラッシュまたは IOExceptions をスローしている場合