パッケージ jakarta.servlet.jsp

クラス JspWriter

java.lang.ObjectSE
java.io.WriterSE
jakarta.servlet.jsp.JspWriter
実装されているすべてのインターフェース:
CloseableSEFlushableSEAppendableSEAutoCloseableSE
既知の直属サブクラス
BodyContent

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
    JspWriter が自動フラッシュしているかどうか。
    protected int
    JspWriter が使用するバッファーのサイズ。
    static final int
    Writer がバッファリングされ、実装のデフォルトのバッファサイズを使用していることを示す定数。
    static final int
    Writer が出力をバッファリングしていないことを示す定数。
    static final int
    Writer がバッファリングされ、制限がないことを示す定数。これは BodyContent で使用されます。

    クラス java.io.WriterSE から継承されたフィールド

    lockSE
  • コンストラクターの概要

    コンストラクター
    修飾子
    コンストラクター
    説明
    protected
    JspWriter(int bufferSize, boolean autoFlush)
    protected コンストラクター。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    abstract void
    バッファの内容をクリアします。
    abstract void
    バッファの現在の内容をクリアします。
    abstract void
    最初にフラッシュして、ストリームを閉じます。
    abstract void
    ストリームをフラッシュします。
    int
    このメソッドは、JspWriter によって使用されるバッファのサイズを返します。
    abstract int
    このメソッドは、バッファ内の未使用のバイト数を返します。
    boolean
    このメソッドは、JspWriter が autoFlushing であるかどうかを示します。
    abstract void
    行区切りを記述します。
    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
    オブジェクトを出力します。
    abstract void
    文字列を print。
    abstract void
    行セパレーター列を書き込んで、現在の行を終了します。
    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
    オブジェクトを出力して、行を終了します。
    abstract void
    文字列を出力して、行を終了します。

    クラス java.io.WriterSE から継承されたメソッド

    appendSE, appendSE, appendSE, nullWriter, writeSE, writeSE, writeSE, writeSE, writeSE

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • 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
      JspWriter が使用するバッファーのサイズ。
    • autoFlush

      protected boolean autoFlush
      JspWriter が自動フラッシュしているかどうか。
  • コンストラクターの詳細

    • JspWriter

      protected JspWriter(int bufferSize, boolean autoFlush)
      protected コンストラクター。
      パラメーター:
      bufferSize - JspWriter が使用するバッファのサイズ
      autoFlush - JspWriter を自動フラッシュするかどうか
  • メソッドの詳細

    • newLine

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

      public abstract void print(boolean b) throws IOExceptionSE
      ブール値を出力します。String.valueOf(boolean)SE によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      b - 出力する boolean 
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • print

      public abstract void print(char c) throws IOExceptionSE
      文字を出力します。文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      c - 出力する char 
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • print

      public abstract void print(int i) throws IOExceptionSE
      整数を出力します。String.valueOf(int)SE によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      i - 出力する int 
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
      関連事項:
    • print

      public abstract void print(long l) throws IOExceptionSE
      長整数を出力します。String.valueOf(long)SE によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      l - 出力する long 
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
      関連事項:
    • print

      public abstract void print(float f) throws IOExceptionSE
      浮動小数点数を出力します。String.valueOf(float)SE によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      f - 出力する float 
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
      関連事項:
    • print

      public abstract void print(double d) throws IOExceptionSE
      倍精度浮動小数点数を出力します。String.valueOf(double)SE によって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      d - 出力する double 
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
      関連事項:
    • print

      public abstract void print(char[] s) throws IOExceptionSE
      文字の配列を出力します。文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      s - 出力される文字の配列
      例外:
      NullPointerExceptionSE - s が null の場合
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • print

      public abstract void print(StringSE s) throws IOExceptionSE
      文字列を出力します。引数が null の場合、文字列 "null" が出力されます。それ以外の場合、文字列の文字は JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      s - 出力する String 
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • print

      public abstract void print(ObjectSE obj) throws IOExceptionSE
      オブジェクトを出力します。String.valueOf(Object)SE メソッドによって生成された文字列は、JspWriter のバッファーに書き込まれます。バッファーが使用されていない場合は、基になるライターに直接書き込まれます。
      パラメーター:
      obj - 出力する Object 
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
      関連事項:
    • println

      public abstract void println() throws IOExceptionSE
      行セパレーター列を書き込んで、現在の行を終了します。行セパレーター列はシステムプロパティ line.separator によって定義され、必ずしも単一の改行文字('\n')ではありません。
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(boolean x) throws IOExceptionSE
      ブール値を出力して、行を終了します。このメソッドは、print(boolean) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書き込むブール値
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(char x) throws IOExceptionSE
      文字を出力して、行を終了します。このメソッドは、print(char) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書き込む char
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(int x) throws IOExceptionSE
      整数を出力して、行を終了します。このメソッドは、print(int) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書き込む int
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(long x) throws IOExceptionSE
      長整数を出力して、行を終了します。このメソッドは、print(long) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書くのに長い
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(float x) throws IOExceptionSE
      浮動小数点数を出力して、行を終了します。このメソッドは、print(float) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書き込む float
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(double x) throws IOExceptionSE
      倍精度浮動小数点数を出力して、行を終了します。このメソッドは、print(double) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書き込む double
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(char[] x) throws IOExceptionSE
      文字の配列を出力して、行を終了します。このメソッドは、print(char[]) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書き込む char[]
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(StringSE x) throws IOExceptionSE
      文字列を出力して、行を終了します。このメソッドは、print(String) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書き込む文字列
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • println

      public abstract void println(ObjectSE x) throws IOExceptionSE
      オブジェクトを出力して、行を終了します。このメソッドは、print(Object) を呼び出してから println() を呼び出すように動作します。
      パラメーター:
      x - 書き込むオブジェクト
      例外:
      IOExceptionSE - 書き込み中にエラーが発生した場合
    • clear

      public abstract void clear() throws IOExceptionSE
      バッファの内容をクリアします。バッファがすでにフラッシュされている場合、クリア操作は IOException をスローして、一部のデータがクライアントのレスポンスストリームにすでに取り消し不能に書き込まれていることを通知します。
      例外:
      IOExceptionSE - 入出力エラーが発生した場合
    • clearBuffer

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

      public abstract void flush() throws IOExceptionSE
      ストリームをフラッシュします。ストリームがさまざまな write() メソッドからの文字をバッファーに保存した場合、目的の宛先にすぐに書き込みます。次に、その宛先が別の文字またはバイトストリームの場合は、フラッシュします。flush() を 1 回呼び出すと、ライターのチェーンと OutputStreams のすべてのバッファがフラッシュされます。

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

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

      次で指定:
      インターフェース FlushableSEflush 
      次で指定:
      クラス WriterSEflush 
      例外:
      IOExceptionSE - 入出力エラーが発生した場合
    • close

      public abstract void close() throws IOExceptionSE
      最初にフラッシュして、ストリームを閉じます。

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

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

      次で指定:
      インターフェース AutoCloseableSEclose 
      次で指定:
      インターフェース CloseableSEclose 
      次で指定:
      クラス WriterSEclose 
      例外:
      IOExceptionSE - 入出力エラーが発生した場合
    • getBufferSize

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

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

      public boolean isAutoFlush()
      このメソッドは、JspWriter が autoFlushing であるかどうかを示します。
      戻り値:
      この JspWriter がバッファオーバーフロー条件で自動フラッシュまたは IOExceptions をスローしている場合