javax.servlet.jsp
クラス JspWriter

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

public abstract class JspWriter
extends java.io.Writer

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
 

フィールドの詳細

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)
保護されたコンストラクタです。
メソッドの詳細

newLine

public abstract void newLine()
                      throws java.io.IOException
改行文字を書き込みます。改行文字は、システムの line.separator プロパティにより定義され、必ずしも単一の改行文字 ('\n') であるとは限りません。
例外:
java.io.IOException - 入出力エラーが発生した場合

print

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

print

public abstract void print(char c)
                    throws java.io.IOException
文字を出力します。文字はプラットフォームのデフォルトの文字エンコーディングに従って 1 つ以上のバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。
パラメータ:
c - 出力される char
例外:
java.io.IOException -  

print

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)

print

public abstract void print(long l)
                    throws java.io.IOException
long 整数を出力します。String.valueOf(long) により作成された文字列は、プラットフォームのデフォルトの文字エンコーディングに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。
パラメータ:
l - 出力される long
例外:
java.io.IOException -  
関連項目:
java.lang.Long#toString(long)

print

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)

print

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)

print

public abstract void print(char[] s)
                    throws java.io.IOException
文字の配列を出力します。この文字の配列はプラットフォームのデフォルトの文字セットに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。
パラメータ:
s - 出力される char の配列
例外:
java.lang.NullPointerException - snull の場合
java.io.IOException -  

print

public abstract void print(java.lang.String s)
                    throws java.io.IOException
文字列を出力します。引数が null の場合は、 "null" が出力されます。そうでない場合、文字列の各文字はプラットフォームのデフォルトの文字セットに従ってバイトに変換され、このバイトが Writer.write(int) メソッドとまったく同じ方法で書き込まれます。
パラメータ:
s - 出力される String
例外:
java.io.IOException -  

print

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()

println

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

println

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

println

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

println

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

println

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

println

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

println

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

println

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

println

public abstract void println(java.lang.String x)
                      throws java.io.IOException
String を出力して、行を改行します。このメソッドは、print(String) を呼び出してから println() を呼び出すのと同じように動作します。
例外:
java.io.IOException -  

println

public abstract void println(java.lang.Object x)
                      throws java.io.IOException
Object を出力して、行を改行します。このメソッドは、print(Object) を呼び出してから println() を呼び出すのと同じように動作します。
例外:
java.io.IOException -  

clear

public abstract void clear()
                    throws java.io.IOException
バッファのコンテンツをクリアします。バッファがすでにフラッシュされていると、クリア操作は IOException をスローして、なんらかのデータがクライアントの応答ストリームにすでに書き込まれてしまったという事実を知らせます。
例外:
java.io.IOException - 入出力エラーが発生した場合

clearBuffer

public abstract void clearBuffer()
                          throws java.io.IOException
バッファの現在のコンテンツをクリアします。clear() とは異なり、バッファがすでにフラッシュされていても、このメソッドは IOException をスローしません。 バッファの現在のコンテンツをクリアして復帰するだけです。
例外:
java.io.IOException - 入出力エラーが発生した場合

flush

public abstract void flush()
                    throws java.io.IOException
ストリームをフラッシュします。ストリームが write() メソッドにより書き込まれた文字をバッファに保存してある場合、これらの文字の目的の送信先にただちに文字を書き込みます。さらに、送信先が別の文字ストリームまたはバイトストリームの場合は、この送信先をフラッシュします。つまり、1 つの flush() の呼び出しで、関連する Writer および OutputStream のすべてのバッファをフラッシュします。

バッファサイズの限界を超えている場合は、このメソッドが間接的に呼び出される場合があります。

ストリームが閉じられた後に write() または flush() を呼び出すと、IOException がスローされます。

オーバーライド:
クラス java.io.Writer 内の flush
例外:
java.io.IOException - 入出力エラーが発生した場合

close

public abstract void close()
                    throws java.io.IOException
まずフラッシュして、ストリームを閉じます。

JSP コンテナによって生成されたコードには close() への呼び出しが自動的に含まれるため、最初の JspWriter のためにこのメソッドを明示的に呼び出す必要はありません。

flush() とは異なり、以前閉じられたストリームを閉じても、何の影響もありません。

オーバーライド:
クラス java.io.Writer 内の close
例外:
java.io.IOException - 入出力エラーが発生した場合

getBufferSize

public int getBufferSize()
このメソッドは、JspWriter に使用されるバッファのサイズを返します。
戻り値:
バッファのサイズ (バイト数)。0 の場合は、バッファリングされていません。

getRemaining

public abstract int getRemaining()
このメソッドは、バッファ内の未使用バイト数を返します。
戻り値:
バッファ内の未使用バイト数

isAutoFlush

public boolean isAutoFlush()
このメソッドは、JspWriter が autoFlushing かどうかを示します。
戻り値:
バッファのオーバーフロー状態時に、JspWriter が自動的にフラッシュするか、IOException をスローするか


Copyright 2002 Sun Microsystems, Inc. All rights reserved.
使用には使用許諾契約が適用されます。