クラス 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 boolean
autoFlush
JspWriter が自動フラッシュしているかどうか。protected int
bufferSize
JspWriter が使用するバッファーのサイズ。static int
DEFAULT_BUFFER
Writer がバッファリングされ、実装のデフォルトのバッファサイズを使用していることを示す定数。static int
NO_BUFFER
Writer が出力をバッファリングしていないことを示す定数。static int
UNBOUNDED_BUFFER
Writer がバッファリングされ、制限がないことを示す定数。これは BodyContent で使用されます。
コンストラクターのサマリー
コンストラクター 修飾子 コンストラクター 説明 protected
JspWriter(int bufferSize, boolean autoFlush)
protected コンストラクター。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 abstract void
clear()
バッファの内容をクリアします。abstract void
clearBuffer()
バッファの現在の内容をクリアします。abstract void
close()
最初にフラッシュして、ストリームを閉じます。abstract void
flush()
ストリームをフラッシュします。int
getBufferSize()
このメソッドは、JspWriter によって使用されるバッファのサイズを返します。abstract int
getRemaining()
このメソッドは、バッファ内の未使用のバイト数を返します。boolean
isAutoFlush()
このメソッドは、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
print(ObjectSE obj)
オブジェクトを出力します。abstract void
print(StringSE s)
文字列を 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
println(ObjectSE x)
オブジェクトを出力して、行を終了します。abstract void
println(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 をスローしている場合