|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
java.lang.Object
|
+--java.io.Writer
|
+--javax.servlet.jsp.JspWriter
JSP ページ内のアクションおよびテンプレートのデータは、JspWriter オブジェクトを使用して書き出されます。このオブジェクトは、PageContext オブジェクト内のメソッドを使用して自動的に初期化された暗黙的な変数 out によって参照されます。
この abstract クラスは java.io.BufferedWriter および java.io.PrintWriter クラス内にある機能のいくつかをエミュレートしますが、PrintWriter とは異なり、print メソッドから java.io.IOException をスローします。
バッファリング
JspWriter オブジェクトはまず、ページがバッファリングされているかどうかに応じ、異なる方式で ServletResponse の PrintWriter オブジェクトに関連付けられます。ページがバッファリングされない場合、この JspWriter オブジェクトへ書き出される出力は、PrintWriter へ直接書き出されます。この PrintWriter は、必要に応じて応答オブジェクトで getWriter() メソッドを呼び出して作成されます。一方、ページがバッファリングされる場合は、バッファがフラッシュされるまで、PrintWriter オブジェクトは作成されません。したがって、setContentType() のような操作を実行することができます。この柔軟性によってプログラミングが実質的に単純化されるため、JSP ページではバッファリングがデフォルトで有効になっています。
バッファリングには、バッファの限界を超えたときに何をすべきかという問題があります。次の 2 つのアプローチがあります。
両方のアプローチとも有効であり、したがって、JSP テクノロジでは両方ともサポートされます。ページの動作は autoFlush 属性で制御され、この属性のデフォルトは true です。通常、正しく完全なデータがクライアントへ送信されたことを確認する必要がある JSP ページでは、autoFlush を false に設定することが必要な場合があります (典型的な例ではクライアントが独立したアプリケーションであるときなど)。一方、一部しか作成されていなくても意味のあるデータを送信する JSP ページでは、つまり、送信されるデータがブラウザを通じてただちに表示されるときなどでは、autoFlush を true に設定することが望ましくなります。それぞれのアプリケーション特有のニーズについて考慮する必要があります。
バッファサイズを無制限にするようにする方法も考えられますが、制御不能な処理が発生した場合にリソースが無制限に消費されるという短所があります。
JSP 実装クラスの暗黙的な変数「out」は、上記で説明したバッファ処理を実装しています。ページ指示子が autoflush="true" を選択していると、このクラスでのすべての入出力操作は、現在の操作がフラッシュなしで実行されればオーバーフロー状態になる場合に、バッファのコンテンツを自動的にフラッシュします。autoflush="false" の場合は、このクラスでのすべての入出力操作で、現在の操作を実行するとバッファがオーバーフロー状態になる場合、IOException をスローします。
Writer,
java.io.BufferedWriter,
PrintWriter| フィールドの概要 | |
protected boolean |
autoFlush
|
protected int |
bufferSize
|
static int |
DEFAULT_BUFFER
Writer はバッファリングを行い、デフォルトのバッファサイズを使用することを示す定数です。 |
static int |
NO_BUFFER
Writer が出力をバッファリングしないことを示す定数です。 |
static int |
UNBOUNDED_BUFFER
Writer はバッファリングを行い、バッファサイズを無制限にすることを示す定数です。 |
| クラス java.io.Writer から継承したフィールド |
lock |
| コンストラクタの概要 | |
protected |
JspWriter(int bufferSize,
boolean autoFlush)
保護されたコンストラクタです。 |
| メソッドの概要 | |
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)
boolean 値を出力します。 |
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)
long 整数を出力します。 |
abstract void |
print(java.lang.Object obj)
オブジェクトを出力します。 |
abstract void |
print(java.lang.String s)
文字列を出力します。 |
abstract void |
println()
改行文字列を書き込むことによって、現在の行を改行します。 |
abstract void |
println(boolean x)
boolean 値を出力して、行を改行します。 |
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)
long 整数を出力して、行を改行します。 |
abstract void |
println(java.lang.Object x)
Object を出力して、行を改行します。 |
abstract void |
println(java.lang.String x)
String を出力して、行を改行します。 |
| クラス java.io.Writer から継承したメソッド |
write, write, write, write, write |
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
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)
| メソッドの詳細 |
public abstract void newLine()
throws java.io.IOException
java.io.IOException - 入出力エラーが発生した場合
public abstract void print(boolean b)
throws java.io.IOException
String.valueOf(boolean) により作成された文字列は、プラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。b - 出力される boolean 値java.io.IOException -
public abstract void print(char c)
throws java.io.IOException
Writer.write(int) メソッドとまったく同じ方法で書き込まれます。c - 出力される char 値java.io.IOException -
public abstract void print(int i)
throws java.io.IOException
String.valueOf(int) により作成された文字列は、プラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。i - 出力される int 値java.io.IOException - java.lang.Integer#toString(int)
public abstract void print(long l)
throws java.io.IOException
String.valueOf(long) により作成された文字列は、プラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。l - 出力される long 値java.io.IOException - java.lang.Long#toString(long)
public abstract void print(float f)
throws java.io.IOException
String.valueOf(float) により作成された文字列はプラットフォームのデフォルトの文字セットに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。f - 出力される float 値java.io.IOException - java.lang.Float#toString(float)
public abstract void print(double d)
throws java.io.IOException
String.valueOf(double) により作成された文字列はプラットフォームのデフォルトの文字セットに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。d - 出力される double 値java.io.IOException - java.lang.Double#toString(double)
public abstract void print(char[] s)
throws java.io.IOException
Writer.write(int) メソッドとまったく同じ方法で書き込まれます。s - 出力される char の配列java.lang.NullPointerException - s が null の場合java.io.IOException -
public abstract void print(java.lang.String s)
throws java.io.IOException
null の場合は、 "null" が出力されます。そうでない場合、文字列の各文字はプラットフォームのデフォルトの文字セットに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。s - 出力される String 値java.io.IOException -
public abstract void print(java.lang.Object obj)
throws java.io.IOException
String.valueOf(Object) メソッドにより作成された文字列は、プラットフォームのデフォルトの文字セットに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。obj - 出力される Object 値java.io.IOException - Object.toString()
public abstract void println()
throws java.io.IOException
line.separator プロパティにより定義され、必ずしも単一の改行文字 ('\n') であるとは限りません。java.io.IOException -
public abstract void println(boolean x)
throws java.io.IOException
print(boolean) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void println(char x)
throws java.io.IOException
print(char) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void println(int x)
throws java.io.IOException
print(int) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void println(long x)
throws java.io.IOException
print(long) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void println(float x)
throws java.io.IOException
print(float) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void println(double x)
throws java.io.IOException
print(double) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void println(char[] x)
throws java.io.IOException
print(char[]) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void println(java.lang.String x)
throws java.io.IOException
print(String) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void println(java.lang.Object x)
throws java.io.IOException
print(Object) を呼び出してから println() を呼び出すのと同じように動作します。java.io.IOException -
public abstract void clear()
throws java.io.IOException
java.io.IOException - 入出力エラーが発生した場合
public abstract void clearBuffer()
throws java.io.IOException
java.io.IOException - 入出力エラーが発生した場合
public abstract void flush()
throws java.io.IOException
バッファサイズの限界を超えている場合は、このメソッドが間接的に呼び出される場合があります。
ストリームが閉じられた後に write() または flush() を呼び出すと、IOException がスローされます。
java.io.Writer 内の flushjava.io.IOException - 入出力エラーが発生した場合
public abstract void close()
throws java.io.IOException
JSP コンテナによって生成されたコードには close() への呼び出しが自動的に含まれるため、最初の JspWriter のためにこのメソッドを明示的に呼び出す必要はありません。
flush() とは異なり、以前閉じられたストリームを閉じても、何の影響もありません。
java.io.Writer 内の closejava.io.IOException - 入出力エラーが発生した場合public int getBufferSize()
public abstract int getRemaining()
public boolean isAutoFlush()
|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||