クラス JspWriter
- java.lang.ObjectSE
-
- java.io.WriterSE
-
- jakarta.servlet.jsp.JspWriter
- 実装済みのインターフェース一覧:
CloseableSE、FlushableSE、AppendableSE、AutoCloseableSE
- 既知の直属サブクラス
BodyContent
public abstract class JspWriter extends WriterSE
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 booleanautoFlushJspWriter が自動フラッシュしているかどうか。protected intbufferSizeJspWriter が使用するバッファーのサイズ。static intDEFAULT_BUFFERWriter がバッファリングされ、実装のデフォルトのバッファサイズを使用していることを示す定数。static intNO_BUFFERWriter が出力をバッファリングしていないことを示す定数。static intUNBOUNDED_BUFFERWriter がバッファリングされ、制限がないことを示す定数。これは BodyContent で使用されます。
コンストラクター概要
コンストラクター 修飾子 コンストラクター 説明 protectedJspWriter(int bufferSize, boolean autoFlush)protected コンストラクター。
方法の概要
すべてのメソッド インスタンスメソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 abstract voidclear()バッファの内容をクリアします。abstract voidclearBuffer()バッファの現在の内容をクリアします。abstract voidclose()最初にフラッシュして、ストリームを閉じます。abstract voidflush()ストリームをフラッシュします。intgetBufferSize()このメソッドは、JspWriter によって使用されるバッファのサイズを返します。abstract intgetRemaining()このメソッドは、バッファ内の未使用のバイト数を返します。booleanisAutoFlush()このメソッドは、JspWriter が autoFlushing であるかどうかを示します。abstract voidnewLine()行区切りを記述します。abstract voidprint(boolean b)ブール値を出力します。abstract voidprint(char c)文字を出力します。abstract voidprint(char[] s)文字の配列を出力します。abstract voidprint(double d)倍精度浮動小数点数を出力します。abstract voidprint(float f)浮動小数点数を出力します。abstract voidprint(int i)整数を出力します。abstract voidprint(long l)長整数を出力します。abstract voidprint(ObjectSE obj)オブジェクトを出力します。abstract voidprint(StringSE s)文字列を print。abstract voidprintln()行セパレーター列を書き込んで、現在の行を終了します。abstract voidprintln(boolean x)ブール値を出力して、行を終了します。abstract voidprintln(char x)文字を出力して、行を終了します。abstract voidprintln(char[] x)文字の配列を出力して、行を終了します。abstract voidprintln(double x)倍精度浮動小数点数を出力して、行を終了します。abstract voidprintln(float x)浮動小数点数を出力して、行を終了します。abstract voidprintln(int x)整数を出力して、行を終了します。abstract voidprintln(long x)長整数を出力して、行を終了します。abstract voidprintln(ObjectSE x)オブジェクトを出力して、行を終了します。abstract voidprintln(StringSE x)文字列を出力して、行を終了します。
フィールドの詳細
NO_BUFFER
public static final int NO_BUFFER
Writer が出力をバッファリングしていないことを示す定数。- 関連事項:
- 定数フィールド値
DEFAULT_BUFFER
public static final int DEFAULT_BUFFER
Writer がバッファリングされ、実装のデフォルトのバッファサイズを使用していることを示す定数。- 関連事項:
- 定数フィールド値
UNBOUNDED_BUFFER
public static final int UNBOUNDED_BUFFER
Writer がバッファリングされ、制限がないことを示す定数。これは BodyContent で使用されます。- 関連事項:
- 定数フィールド値
bufferSize
protected int bufferSize
JspWriter が使用するバッファーのサイズ。
autoFlush
protected boolean autoFlush
JspWriter が自動フラッシュしているかどうか。
メソッドの詳細
newLine
public abstract void newLine() throws IOExceptionSE行区切りを書きます。行セパレーター列は、システムプロパティline.separatorによって定義され、必ずしも単一の改行 ('\n' ) 文字であるとは限りません。- 例外:
IOExceptionSE- 入出力エラーが発生した場合
print
public abstract void print(boolean b) throws IOExceptionSEブール値を出力します。によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(boolean)SE- パラメーター:
b- 出力するboolean- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
print
public abstract void print(char c) throws IOExceptionSE文字を出力します。文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。- パラメーター:
c- 出力するchar- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
print
public abstract void print(int i) throws IOExceptionSE整数を出力します。によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(int)SE- パラメーター:
i- 出力するint- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合- 関連事項:
Integer.toString(int)SE
print
public abstract void print(long l) throws IOExceptionSE長整数を出力します。によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(long)SE- パラメーター:
l- 出力するlong- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合- 関連事項:
Long.toString(long)SE
print
public abstract void print(float f) throws IOExceptionSE浮動小数点数を出力します。によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(float)SE- パラメーター:
f- 出力するfloat- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合- 関連事項:
Float.toString(float)SE
print
public abstract void print(double d) throws IOExceptionSE倍精度浮動小数点数を出力します。によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(double)SE- パラメーター:
d- 出力するdouble- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合- 関連事項:
Double.toString(double)SE
print
public abstract void print(char[] s) throws IOExceptionSE文字の配列を出力します。文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。- パラメーター:
s- 出力される文字の配列- 例外:
NullPointerExceptionSE-sがnullの場合IOExceptionSE- 書き込み中にエラーが発生した場合
print
public abstract void print(StringSE s) throws IOExceptionSE
文字列を出力します。引数がnullの場合、文字列"null"が出力されます。それ以外の場合、文字列の文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。- パラメーター:
s- 出力するString- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
print
public abstract void print(ObjectSE obj) throws IOExceptionSE
オブジェクトを出力します。メソッドによって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。String.valueOf(Object)SE- パラメーター:
obj- 出力するObject- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合- 関連事項:
Object.toString()
println
public abstract void println() throws IOExceptionSE行セパレーター列を書き込んで、現在の行を終了します。行セパレーター列はシステムプロパティline.separatorによって定義され、必ずしも単一の改行文字('\n')ではありません。- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(boolean x) throws IOExceptionSEブール値を出力して、行を終了します。このメソッドは、を呼び出してからprint(boolean)を呼び出すように動作します。println()- パラメーター:
x- 書き込むブール値- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(char x) throws IOExceptionSE文字を出力して、行を終了します。このメソッドは、を呼び出してからprint(char)を呼び出すように動作します。println()- パラメーター:
x- 書き込む char- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(int x) throws IOExceptionSE整数を出力して、行を終了します。このメソッドは、を呼び出してからprint(int)を呼び出すように動作します。println()- パラメーター:
x- 書き込む int- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(long x) throws IOExceptionSE長整数を出力して、行を終了します。このメソッドは、を呼び出してからprint(long)を呼び出すように動作します。println()- パラメーター:
x- 書くのに長い- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(float x) throws IOExceptionSE浮動小数点数を出力して、行を終了します。このメソッドは、を呼び出してからprint(float)を呼び出すように動作します。println()- パラメーター:
x- 書き込む float- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(double x) throws IOExceptionSE倍精度浮動小数点数を出力して、行を終了します。このメソッドは、を呼び出してからprint(double)を呼び出すように動作します。println()- パラメーター:
x- 書き込む double- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(char[] x) throws IOExceptionSE文字の配列を出力して、行を終了します。このメソッドは、print(char[])を呼び出してからprintln()を呼び出すように動作します。- パラメーター:
x- 書き込む char[]- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(StringSE x) throws IOExceptionSE
文字列を出力して、行を終了します。このメソッドは、を呼び出してからprint(String)を呼び出すように動作します。println()- パラメーター:
x- 書き込む文字列- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
println
public abstract void println(ObjectSE x) throws IOExceptionSE
オブジェクトを出力して、行を終了します。このメソッドは、を呼び出してからprint(Object)を呼び出すように動作します。println()- パラメーター:
x- 書き込むオブジェクト- 例外:
IOExceptionSE- 書き込み中にエラーが発生した場合
clear
public abstract void clear() throws IOExceptionSEバッファの内容をクリアします。バッファがすでにフラッシュされている場合、クリア操作は IOException をスローして、一部のデータがクライアントのレスポンスストリームにすでに取り消し不能に書き込まれていることを通知します。- 例外:
IOExceptionSE- 入出力エラーが発生した場合
clearBuffer
public abstract void clearBuffer() throws IOExceptionSEバッファの現在の内容をクリアします。clear() とは異なり、バッファがすでにフラッシュされている場合、このメソッドは IOException をスローしません。バッファの現在の内容をクリアして戻るだけです。- 例外:
IOExceptionSE- 入出力エラーが発生した場合
flush
public abstract void flush() throws IOExceptionSEストリームをフラッシュします。ストリームがさまざまな write() メソッドからの文字をバッファーに保存した場合、目的の宛先にすぐに書き込みます。次に、その宛先が別の文字またはバイトストリームの場合は、フラッシュします。flush() を 1 回呼び出すと、ライターのチェーンと OutputStreams のすべてのバッファがフラッシュされます。バッファサイズを超えると、メソッドが間接的に呼び出される場合があります。
ストリームが閉じられると、write() または flush() をさらに呼び出すと、IOException がスローされます。
- 次で指定:
- インターフェース
FlushableSE内のflush - 次で指定:
- クラス
WriterSEのflush - 例外:
IOExceptionSE- 入出力エラーが発生した場合
close
public abstract void close() throws IOExceptionSE最初にフラッシュして、ストリームを閉じます。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 をスローしている場合