パッケージ 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 をスローします。

    関連事項:
    WriterSE, BufferedWriterSE, PrintWriterSE
    • フィールドサマリー

      フィールド  
      修飾子と型 フィールド 説明
      protected booleanautoFlush
      JspWriter が自動フラッシュしているかどうか。
      protected intbufferSize
      JspWriter が使用するバッファーのサイズ。
      static intDEFAULT_BUFFER
      Writer がバッファリングされ、実装のデフォルトのバッファサイズを使用していることを示す定数。
      static intNO_BUFFER
      Writer が出力をバッファリングしていないことを示す定数。
      static intUNBOUNDED_BUFFER
      Writer がバッファリングされ、制限がないことを示す定数。これは BodyContent で使用されます。
      • クラス java.io.WriterSE から継承されたフィールド

        lockSE
    • コンストラクターのサマリー

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

      すべてのメソッド   インスタンスメソッド   抽象メソッド   具象メソッド  
      修飾子と型 メソッド 説明
      abstract voidclear()
      バッファの内容をクリアします。
      abstract voidclearBuffer()
      バッファの現在の内容をクリアします。
      abstract voidclose()
      最初にフラッシュして、ストリームを閉じます。
      abstract voidflush()
      ストリームをフラッシュします。
      intgetBufferSize()
      このメソッドは、JspWriter によって使用されるバッファのサイズを返します。
      abstract intgetRemaining()
      このメソッドは、バッファ内の未使用のバイト数を返します。
      booleanisAutoFlush()
      このメソッドは、JspWriter が autoFlushing であるかどうかを示します。
      abstract voidnewLine()
      行区切りを記述します。
      abstract voidprint​(boolean b)
      ブール値を出力します。
      abstract voidprint​(char c)
      文字を出力します。
      abstract voidprint​(char[] s)
      文字の配列を出力します。
      abstract voidprint​(double d)
      倍精度浮動小数点数を出力します。
      abstract voidprint​(float f)
      浮動小数点数を出力します。
      abstract voidprint​(int i)
      整数を出力します。
      abstract voidprint​(long l)
      長整数を出力します。
      abstract voidprint​(ObjectSE obj)
      オブジェクトを出力します。
      abstract voidprint​(StringSE s)
      文字列を print。
      abstract voidprintln()
      行セパレーター列を書き込んで、現在の行を終了します。
      abstract voidprintln​(boolean x)
      ブール値を出力して、行を終了します。
      abstract voidprintln​(char x)
      文字を出力して、行を終了します。
      abstract voidprintln​(char[] x)
      文字の配列を出力して、行を終了します。
      abstract voidprintln​(double x)
      倍精度浮動小数点数を出力して、行を終了します。
      abstract voidprintln​(float x)
      浮動小数点数を出力して、行を終了します。
      abstract voidprintln​(int x)
      整数を出力して、行を終了します。
      abstract voidprintln​(long x)
      長整数を出力して、行を終了します。
      abstract voidprintln​(ObjectSE x)
      オブジェクトを出力して、行を終了します。
      abstract voidprintln​(StringSE x)
      文字列を出力して、行を終了します。
    • フィールドの詳細

      • 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 - 書き込み中にエラーが発生した場合
        関連事項:
        Integer.toString(int)SE
      • print

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

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

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