|
|||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
java.lang.Object
|
+--java.io.Writer
|
+--javax.servlet.jsp.JspWriter
JSPページ内のアクションとテンプレートデータは、 PageContext オブジェクトのメソッドにより自動的に初期化された暗黙の変数 out として参照される JspWriter オブジェクトを使って記述します。
この抽象クラスはjava.io.BufferedWriter及びjava.io.PrintWriterクラスのいくつかの機能をエミュレートします。 ただし、出力メソッドがjava.io.IOExceptionをスローする点がPrintWriterとは異なります。
バッファリング
初期化された JspWriterオブジェクトとServletResponseのPrintWriterオブジェクトとの関連性は、 ページがバッファリングされているかどうかによって異なります。 ページがバッファリングされていない場合、このJspWriterオブジェクトによる出力は getWriter()メソッドを呼び出して生成したレスポンスオブジェクトのPrintWriter に直接書き込まれます。逆にページがバッファリングされている場合、 setContentType()等の操作が正しくかつバッファがフラッシュされるまではPrintWriterオブジェクトを生成しません。 これによりプログラミングを簡潔にすることができるため、 JSPページではバッファを使用するのがデフォルトになっています。
バッファを使う場合、そのバッファを越えた時の対応が必要になります。2つのアプローチがあります。
2つのアプローチはどちらも妥当で、両方ともJSPではサポートされています。 ページの動作はautoFlush属性で定義され、デフォルトはtrueです。 一般的な例としてクライアントがアプリケーションの一部であるような、 正しく完全なデータが送られたかどうかが重要となるJSPページは、autoFlushをfalseにします。 一方、ブラウザに即座にデータを表示させたいような場合、 部分的にデータが生成された段階でJSPページのデータを送るときにはautoFlushをtrueにします。 アプリケーションの特性によって、どちらを使用するかを検討する必要があります。
その他にもバッファサイズを無制限にするという方法が考えられますが、 リソースを際限なく消費してしまうという問題が起こる可能性があります。
JSP実装クラスの暗黙の変数"out"はこのタイプで定義されています。 ページがautoFlush="true"を宣言していると、このクラスの全てのI/O操作は、 フラッシュ無しに現在の操作を実行するとオーバーフロー状態になる場合に、 自動的にバッファの内容をフラッシュします。 ページがautoFlush="false"を宣言していると、このクラスの全てのI/O操作は、 現在の操作を実行するとオーバーフロー状態になる場合に、IOException をスローします。
Writer,
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)
protected のコンストラクタ。 |
| メソッドの概要 | |
abstract void |
clear()
バッファの内容を消去します。 |
abstract void |
clearBuffer()
現在のバッファの内容を消去します。 |
abstract void |
close()
ストリームをフラッシュして、クローズします。 |
abstract void |
flush()
ストリームをフラッシュします。 |
int |
getBufferSize()
このメソッドはJspWriterで使われるバッファのサイズを返します。 |
abstract int |
getRemaining()
このメソッドはバッファでまだ使われていないバイト数を返します。 |
boolean |
isAutoFlush()
このメソッドはJspWriterがautoFlushを使用しているかどうかを返します。 |
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(Object obj)
オブジェクトを出力します。 |
abstract void |
print(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(Object x)
オブジェクトを出力して、改行します。 |
abstract void |
println(String x)
文字列を出力して、改行します。 |
| クラス 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 IOException
IOException - I/Oエラーが発生した場合
public abstract void print(boolean b)
throws IOException
String.valueOf(boolean)により作成された文字列を
プラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、
このバイトをWriter.write(int)メソッドと同様の方法で書き込みます。
b - 出力するboolean 値
IOException - I/Oエラーが発生した場合
public abstract void print(char c)
throws IOException
Writer.write(int)メソッドと同様の方法で書き込みます。
c - The char to be printed
IOException
IOException - I/Oエラーが発生した場合
public abstract void print(int i)
throws IOException
String.valueOf(int)
で作成された文字列をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、このバイトをWriter.write(int)
メソッドと同様の方法で書き込みます。
i - 出力するint 値
IOException - I/Oエラーが発生した場合Integer.toString(int)
public abstract void print(long l)
throws IOException
String.valueOf(long)
で作成された文字列をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、
このバイトをWriter.write(int)メソッドと同様の方法で書き込みます。
l - 出力するlong 値
IOException - I/Oエラーが発生した場合Long.toString(long)
public abstract void print(float f)
throws IOException
String.valueOf(float)
で作成された文字列をプラットフォームのデフォルトの文字
エンコーディングに従ってバイトに変換し、このバイトを
Writer.write(int)メソッドと同様の方法で書き込みます。
f - 出力するfloat 値
IOException - I/Oエラーが発生した場合Float.toString(float)
public abstract void print(double d)
throws IOException
String.valueOf(double)で作成された文字列をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、
このバイトをWriter.write(int)メソッドと同様の方法で書き込みます。
d - 出力するdouble 値
IOException - I/Oエラーが発生した場合Double.toString(double)
public abstract void print(char[] s)
throws IOException
Writer.write(int)メソッドと同様の方法で書き込みます。
s - 出力する文字の配列
NullPointerException - s が nullの場合
IOException - I/Oエラーが発生した場合
public abstract void print(String s)
throws IOException
null の場合、文字列
"null" を出力します。それ以外の場合、文字列の各文字をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、このバイトをWriter.write(int)メソッドと同様の方法で書きみます。
s - 出力するString 値
IOException - I/Oエラーが発生した場合
public abstract void print(Object obj)
throws IOException
String.valueOf(Object)
により作成された文字列を、プラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、このバイトを
Writer.write(int)メソッドと同様の方法で書き込みます。
obj - 出力するObject 値
IOException - I/Oエラーが発生した場合Object.toString()
public abstract void println()
throws IOException
IOException - I/Oエラーが発生した場合
public abstract void println(boolean x)
throws IOException
print(boolean)を呼び出してからprintln()
を呼び出すのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void println(char x)
throws IOException
print(char)を呼び出してからprintln()
を呼び出すのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void println(int x)
throws IOException
print(int)を呼び出してからprintln()
を呼び出すのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void println(long x)
throws IOException
print(long)を呼び出してからprintln()
を呼び出すのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void println(float x)
throws IOException
print(float)を呼び出してからprintln()
を呼び出すのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void println(double x)
throws IOException
print(double)を呼び出してからprintln()
を呼び出すのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void println(char[] x)
throws IOException
print(char[])を呼び出してからprintln()
を呼び出すすのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void println(String x)
throws IOException
print(String)を呼び出してからprintln()
を呼び出すすのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void println(Object x)
throws IOException
print(Object)を呼び出してからprintln()
を呼び出すすのと同じように動作します。
IOException - I/Oエラーが発生した場合
public abstract void clear()
throws IOException
IOException - I/Oエラーが発生した場合
public abstract void clearBuffer()
throws IOException
IOException - I/Oエラーが発生した場合
public abstract void flush()
throws IOException
バッファサイズを超えたとき、このメソッドは間接的に呼び出されます。
一旦ストリームをクローズして、それ以降にwrite()やflush()を呼び出すと IOExceptionがスローされます。
Writer 内の flushIOException - I/Oエラーが発生した場合
public abstract void close()
throws IOException
このメソッドは、初期化された JspWriter で明確に呼び出す必要はありません。 なぜならJSPコンテナにより生成されたコードには、close()への呼び出しが自動的に含まれるからです。
それ以前にクローズしてしまったストリームをクローズすることはflush()とは異なり、 何の効果もありません。
Writer 内の closeIOException - I/Oエラーが発生した場合public int getBufferSize()
public abstract int getRemaining()
public boolean isAutoFlush()
|
|||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
このドキュメントは、Ja-Jakarta Project により翻訳されました。コメントがある場合は、jajakarta-report@jajakarta.good-day.netまでお願いします。
Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.