javax.servlet.jsp
クラス JspWriter

java.lang.Object
  |
  +--java.io.Writer
        |
        +--javax.servlet.jsp.JspWriter
直系の既知のサブクラス:
BodyContent

public abstract class JspWriter
extends Writer

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
 

フィールドの詳細

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

autoFlush

protected boolean autoFlush
コンストラクタの詳細

JspWriter

protected JspWriter(int bufferSize,
                    boolean autoFlush)
protected のコンストラクタ。

メソッドの詳細

newLine

public abstract void newLine()
                      throws IOException
改行を出力します。改行文字列はシステムプロパティline.separator で定義されており、必ずしも単一の改行文字 ('\n') である必要はありません。

例外:
IOException - I/Oエラーが発生した場合

print

public abstract void print(boolean b)
                    throws IOException
boolean 値を出力します。String.valueOf(boolean)により作成された文字列を プラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、 このバイトをWriter.write(int)メソッドと同様の方法で書き込みます。

パラメータ:
b - 出力するboolean
例外:
IOException - I/Oエラーが発生した場合

print

public abstract void print(char c)
                    throws IOException
文字を出力します。引数で与えられた文字を、プラットフォームのデフォルトの文字エンコーディングに従って1つ以上のバイトに変換し、 このバイトをWriter.write(int)メソッドと同様の方法で書き込みます。

パラメータ:
c - The char to be printed
例外:
IOException
IOException - I/Oエラーが発生した場合

print

public abstract void print(int i)
                    throws IOException
整数を出力します。String.valueOf(int) で作成された文字列をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、このバイトをWriter.write(int) メソッドと同様の方法で書き込みます。

パラメータ:
i - 出力するint
例外:
IOException - I/Oエラーが発生した場合
関連項目:
Integer.toString(int)

print

public abstract void print(long l)
                    throws IOException
long整数を出力します。String.valueOf(long) で作成された文字列をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、 このバイトをWriter.write(int)メソッドと同様の方法で書き込みます。

パラメータ:
l - 出力するlong
例外:
IOException - I/Oエラーが発生した場合
関連項目:
Long.toString(long)

print

public abstract void print(float f)
                    throws IOException
浮動小数点数を出力します。String.valueOf(float) で作成された文字列をプラットフォームのデフォルトの文字 エンコーディングに従ってバイトに変換し、このバイトを Writer.write(int)メソッドと同様の方法で書き込みます。

パラメータ:
f - 出力するfloat
例外:
IOException - I/Oエラーが発生した場合
関連項目:
Float.toString(float)

print

public abstract void print(double d)
                    throws IOException
倍精度浮動小数点数を出力します。 String.valueOf(double)で作成された文字列をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、 このバイトをWriter.write(int)メソッドと同様の方法で書き込みます。

パラメータ:
d - 出力するdouble
例外:
IOException - I/Oエラーが発生した場合
関連項目:
Double.toString(double)

print

public abstract void print(char[] s)
                    throws IOException
文字の配列を出力します。引数で与えられた文字の配列をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、 このバイトをWriter.write(int)メソッドと同様の方法で書き込みます。

パラメータ:
s - 出力する文字の配列
例外:
NullPointerException - snullの場合
IOException - I/Oエラーが発生した場合

print

public abstract void print(String s)
                    throws IOException
文字列を出力します。変数がnull の場合、文字列 "null" を出力します。それ以外の場合、文字列の各文字をプラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、このバイトをWriter.write(int)メソッドと同様の方法で書きみます。

パラメータ:
s - 出力するString
例外:
IOException - I/Oエラーが発生した場合

print

public abstract void print(Object obj)
                    throws IOException
オブジェクトを出力します。String.valueOf(Object) により作成された文字列を、プラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換し、このバイトを Writer.write(int)メソッドと同様の方法で書き込みます。

パラメータ:
obj - 出力するObject
例外:
IOException - I/Oエラーが発生した場合
関連項目:
Object.toString()

println

public abstract void println()
                      throws IOException
改行文字列を書き込むことで、現在の行を終了します。この改行文字列はシステムプロパティ line.separator により定義され、 必ずしも単一の改行文字 ('\n') である必要はありません。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(boolean x)
                      throws IOException
boolean 値を出力して、改行します。このメソッドは print(boolean)を呼び出してからprintln() を呼び出すのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(char x)
                      throws IOException
文字を出力して、改行します。このメソッドは print(char)を呼び出してからprintln() を呼び出すのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(int x)
                      throws IOException
整数を出力して、改行します。このメソッドは print(int)を呼び出してからprintln() を呼び出すのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(long x)
                      throws IOException
long整数を出力して、改行します。このメソッドは print(long)を呼び出してからprintln() を呼び出すのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(float x)
                      throws IOException
浮動小数点数を出力して、改行します。このメソッドは print(float)を呼び出してからprintln() を呼び出すのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(double x)
                      throws IOException
倍精度浮動小数点数を出力して、改行します。このメソッドは print(double)を呼び出してからprintln() を呼び出すのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(char[] x)
                      throws IOException
文字の配列を出力して、改行します。このメソッドは print(char[])を呼び出してからprintln() を呼び出すすのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(String x)
                      throws IOException
文字列を出力して、改行します。このメソッドは print(String)を呼び出してからprintln() を呼び出すすのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

println

public abstract void println(Object x)
                      throws IOException
オブジェクトを出力して、改行します。このメソッドは print(Object)を呼び出してからprintln() を呼び出すすのと同じように動作します。

例外:
IOException - I/Oエラーが発生した場合

clear

public abstract void clear()
                    throws IOException
バッファの内容を消去します。バッファが既にフラッシュされていた場合、 クライアントへのレスポンスストリームに書き込まれたデータを消去することはできないので、 この操作はIOExceptionをスローします。

例外:
IOException - I/Oエラーが発生した場合

clearBuffer

public abstract void clearBuffer()
                          throws IOException
現在のバッファの内容を消去します。clear()とは違い、バッファが既にフラッシュされている場合でもこのメソッドはIOExceptionをスローしません。 このメソッドは単に現在のバッファの内容を消去して、戻ります。

例外:
IOException - I/Oエラーが発生した場合

flush

public abstract void flush()
                    throws IOException
ストリームをフラッシュします。ストリームにwrite()メソッドでバッファに書き込まれた何らかの文字が保存されている場合、 ただちにその文字は目的とするところへ書き込まれます。 その際、その場所が別の文字やバイトストリームであればそれをフラッシュします。 このように1回flush()を実行すると、連続したWriterとOutputStreamの全てのバッファをフラッシュします。

バッファサイズを超えたとき、このメソッドは間接的に呼び出されます。

一旦ストリームをクローズして、それ以降にwrite()やflush()を呼び出すと IOExceptionがスローされます。

定義:
クラス Writer 内の flush
例外:
IOException - I/Oエラーが発生した場合

close

public abstract void close()
                    throws IOException
ストリームをフラッシュして、クローズします。

このメソッドは、初期化された JspWriter で明確に呼び出す必要はありません。 なぜならJSPコンテナにより生成されたコードには、close()への呼び出しが自動的に含まれるからです。

それ以前にクローズしてしまったストリームをクローズすることはflush()とは異なり、 何の効果もありません。

定義:
クラス Writer 内の close
例外:
IOException - I/Oエラーが発生した場合

getBufferSize

public int getBufferSize()
このメソッドはJspWriterで使われるバッファのサイズを返します。

戻り値:
バッファのバイトサイズ、もしくはバッファしていない場合0

getRemaining

public abstract int getRemaining()
このメソッドはバッファでまだ使われていないバイト数を返します。

戻り値:
バッファでまだ使われていないバイト数

isAutoFlush

public boolean isAutoFlush()
このメソッドはJspWriterがautoFlushを使用しているかどうかを返します。

戻り値:
JspWriterがバッファサイズを超えたときに自動的にフラッシュする場合true、IOExceptionをスローする場合false


このドキュメントは、Ja-Jakarta Project により翻訳されました。コメントがある場合は、jajakarta-report@jajakarta.good-day.netまでお願いします。

Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.