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) 文字列を出力して、行を終了します。 |
appendSE, appendSE, appendSE, writeSE, writeSE, writeSE, writeSE, writeSE
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final int NO_BUFFER
public static final int DEFAULT_BUFFER
public static final int UNBOUNDED_BUFFER
protected int bufferSize
protected boolean autoFlush
protected JspWriter(int bufferSize, boolean autoFlush)
bufferSize
- JspWriter が使用するバッファのサイズ autoFlush
- JspWriter を自動フラッシュするかどうか public abstract void newLine() throws IOExceptionSE
IOExceptionSE
- 入出力エラーが発生した場合 public abstract void print(boolean b) throws IOExceptionSE
String.valueOf(boolean)
SE
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。b
- 出力する boolean
IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void print(char c) throws IOExceptionSE
c
- 出力する char
IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void print(int i) throws IOExceptionSE
String.valueOf(int)
SE
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。i
- 出力する int
IOExceptionSE
- 書き込み中にエラーが発生した場合 Integer.toString(int)
SEpublic abstract void print(long l) throws IOExceptionSE
String.valueOf(long)
SE
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。l
- 出力する long
IOExceptionSE
- 書き込み中にエラーが発生した場合 Long.toString(long)
SEpublic abstract void print(float f) throws IOExceptionSE
String.valueOf(float)
SE
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。f
- 出力する float
IOExceptionSE
- 書き込み中にエラーが発生した場合 Float.toString(float)
SEpublic abstract void print(double d) throws IOExceptionSE
String.valueOf(double)
SE
によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。d
- 出力する double
IOExceptionSE
- 書き込み中にエラーが発生した場合 Double.toString(double)
SEpublic abstract void print(char[] s) throws IOExceptionSE
s
- 出力される文字の配列 NullPointerExceptionSE
- s
が null
の場合 IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void print(StringSE s) throws IOExceptionSE
null
の場合、文字列 "null"
が出力されます。それ以外の場合、文字列の文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。s
- 出力する String
IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void print(ObjectSE obj) throws IOExceptionSE
String.valueOf(Object)
SE
メソッドによって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。obj
- 出力する Object
IOExceptionSE
- 書き込み中にエラーが発生した場合 Object.toString()
SEpublic abstract void println() throws IOExceptionSE
line.separator
によって定義され、必ずしも単一の改行文字('\n'
)ではありません。IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(boolean x) throws IOExceptionSE
print(boolean)
を呼び出してから println()
を呼び出すように動作します。x
- 書き込むブール値 IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(char x) throws IOExceptionSE
print(char)
を呼び出してから println()
を呼び出すように動作します。x
- 書き込む charIOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(int x) throws IOExceptionSE
print(int)
を呼び出してから println()
を呼び出すように動作します。x
- 書き込む intIOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(long x) throws IOExceptionSE
print(long)
を呼び出してから println()
を呼び出すように動作します。x
- 書くのに長い IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(float x) throws IOExceptionSE
print(float)
を呼び出してから println()
を呼び出すように動作します。x
- 書き込む floatIOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(double x) throws IOExceptionSE
print(double)
を呼び出してから println()
を呼び出すように動作します。x
- 書き込む doubleIOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(char[] x) throws IOExceptionSE
print(char[])
を呼び出してから println()
を呼び出すように動作します。x
- 書き込む char[]IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(StringSE x) throws IOExceptionSE
print(String)
を呼び出してから println()
を呼び出すように動作します。x
- 書き込む文字列 IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void println(ObjectSE x) throws IOExceptionSE
print(Object)
を呼び出してから println()
を呼び出すように動作します。x
- 書き込むオブジェクト IOExceptionSE
- 書き込み中にエラーが発生した場合 public abstract void clear() throws IOExceptionSE
IOExceptionSE
- 入出力エラーが発生した場合 public abstract void clearBuffer() throws IOExceptionSE
IOExceptionSE
- 入出力エラーが発生した場合 public abstract void flush() throws IOExceptionSE
バッファサイズを超えると、メソッドが間接的に呼び出される場合があります。
ストリームが閉じられると、write() または flush() をさらに呼び出すと、IOException がスローされます。
FlushableSE
の flushSE
WriterSE
の flushSE
IOExceptionSE
- 入出力エラーが発生した場合 public abstract void close() throws IOExceptionSE
JSP コンテナーによって生成されたコードには close() への呼び出しが自動的に含まれるため、このメソッドを初期 JspWriter に対して明示的に呼び出す必要はありません。
flush() とは異なり、以前に閉じられたストリームを閉じても効果はありません。
CloseableSE
の closeSE
AutoCloseableSE
の closeSE
WriterSE
の closeSE
IOExceptionSE
- 入出力エラーが発生した場合 public int getBufferSize()
public abstract int getRemaining()
public boolean isAutoFlush()
Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.