パッケージ jakarta.servlet

クラス ServletInputStream

java.lang.ObjectSE
java.io.InputStreamSE
jakarta.servlet.ServletInputStream
実装されているすべてのインターフェース:
CloseableSEAutoCloseableSE

public abstract class ServletInputStream extends InputStreamSE
クライアントリクエストからバイナリデータを読み取るための入力ストリームを提供します。これには、一度に 1 行ずつデータを読み取るための効率的な readLine メソッドが含まれます。HTTP POST や PUT などの一部のプロトコルでは、ServletInputStream オブジェクトを使用して、クライアントから送信されたデータを読み取ることができます。

ServletInputStream オブジェクトは、通常 ServletRequest.getInputStream() メソッドを介して取得されます。

これは、サーブレットコンテナーが実装する抽象クラスです。このクラスのサブクラスは、java.io.InputStream.read() メソッドを実装する必要があります。

作成者:
Various
関連事項:
  • コンストラクターの詳細

    • ServletInputStream

      protected ServletInputStream()
      これは抽象クラスであるため、何もしません。
  • メソッドの詳細

    • read

      public int read(ByteBufferSE buffer) throws IOExceptionSE
      入力ストリームから指定されたバッファーに読み取ります。

      入力ストリームがノンブロッキングモードの場合、このメソッドを呼び出すたびに isReady() を呼び出して true を返す必要があります。または、ReadListener.onDataAvailable() コールバックでデータを読み取ることができることを示す必要があり、そうでない場合は IllegalStateExceptionSE をスローする必要があります。

      それ以外の場合、buffer にスペースが残っていないときにこのメソッドが呼び出された場合、メソッドは直ちに 0 を返し、buffer は変更されません。

      入力ストリームがブロッキングモードで、buffer にスペースが残っている場合、このメソッドは、少なくとも 1 バイトが読み取られるか、ストリームの終わりに到達するか、例外がスローされるまでブロックします。

      読み取ったバイト数を返すか、データをまったく読み取らずにストリームの終わりに到達した場合は -1 を返します。

      メソッドが戻ったとき、データが読み取られている場合、バッファーの位置はこのメソッドに渡されたときの値から変更されず、制限は読み取られたバイト数によって増分された位置になります。

      サブクラスでは、このメソッドをオーバーライドして、より効率的な実装を提供することを強くお勧めします。

      パラメーター:
      buffer - データが読み込まれるバッファー。
      戻り値:
      読み取られたバイト数、またはストリームの終わりに達した場合は -1
      例外:
      IllegalStateExceptionSE - 入力ストリームがノンブロッキングモードで、最初に isReady() を呼び出さずにこのメソッドが呼び出され、そのメソッドが true を返したか、ReadListener.onDataAvailable() がデータの読み取りが可能であることを通知しなかった場合。
      IOExceptionSE - ストリームの終端に到達した以外の何らかの理由でデータを読み取れない場合は、入力ストリームが閉じられているか、その他の I/O エラーが発生しています。
      NullPointerExceptionSE - バッファが null の場合。
      導入:
      Servlet 6.1
    • readLine

      public int readLine(byte[] b, int off, int len) throws IOExceptionSE
      入力ストリームを一度に 1 行ずつ読み取ります。オフセットから開始して、特定のバイト数を読み取るか、改行文字に達するまで配列にバイトを読み取ります。改行文字も配列に読み取ります。

      このメソッドは、最大バイト数を読み取る前に入力ストリームの終わりに到達した場合、-1 を返します。

      このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。

      パラメーター:
      b - データが読み込まれるバイトの配列
      off - このメソッドが読み取りを開始する文字を指定する整数
      len - 読み込むバイトの最大数を指定する整数
      戻り値:
      読み込まれた実際のバイト数を指定する整数、またはストリームの終わりに達した場合は -1
      例外:
      IllegalStateExceptionSE - 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。
      IOExceptionSE - 入力または出力の例外が発生した場合
    • isFinished

      public abstract boolean isFinished()
      ストリームからすべてのデータが読み取られた場合は true を返し、そうでない場合は false を返します。
      戻り値:
      この特定のリクエストのすべてのデータが読み取られた場合は true、そうでない場合は false を返します。
      導入:
      Servlet 3.1
    • isReady

      public abstract boolean isReady()
      read() メソッドの呼び出しが許可されている場合は、true を返します。ブロッキングモードでは、このメソッドは常に true を返しますが、後続の read() メソッドの呼び出しによって待機中のデータがブロックされる可能性があります。ノンブロッキングモードでは、このメソッドは false を返す場合があります。その場合、read() メソッドを呼び出すことは不正であり、IllegalStateExceptionSE をスローしなければなりません。ReadListener.onDataAvailable() が呼び出された場合、true を返したこのメソッドの呼び出しは暗黙的です。

      このメソッドが false を返し、setReadListener(ReadListener) 経由で ReadListener が設定されている場合、コンテナーはデータ (または EOF) が使用可能になった後に ReadListener.onDataAvailable() (または ReadListener.onAllDataRead() ) を呼び出します。最初の呼び出しを除き、ReadListener.onDataAvailable() は、このメソッドが呼び出され false が返された場合にのみ呼び出されます。

      戻り値:
      ブロックせずにデータを取得できる場合は true、そうでない場合は false を返します。
      導入:
      Servlet 3.1
      関連事項:
    • setReadListener

      public abstract void setReadListener(ReadListener readListener)
      読み取りが可能になったときに、提供された ReadListener を呼び出すよう ServletInputStream に指示します
      パラメーター:
      readListener - 読み取りが可能になったときに通知される ReadListener
      例外:
      IllegalStateExceptionSE - 次の条件のいずれかに該当する場合
      • 関連するリクエストはアップグレードされず、非同期も開始されません
      • setReadListener は同じリクエストの範囲内で複数回呼び出されます。
      NullPointerExceptionSE - readListener が null の場合
      導入:
      Servlet 3.1
    • readAllBytes

      public byte[] readAllBytes() throws IOExceptionSE

      このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。

      オーバーライド:
      クラス InputStreamSEreadAllBytes 
      例外:
      IllegalStateExceptionSE - 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。
      IOExceptionSE
    • readNBytes

      public byte[] readNBytes(int len) throws IOExceptionSE

      このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。

      オーバーライド:
      クラス InputStreamSEreadNBytesSE 
      例外:
      IllegalStateExceptionSE - 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。
      IOExceptionSE
    • readNBytes

      public int readNBytes(byte[] b, int off, int len) throws IOExceptionSE

      このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。

      オーバーライド:
      クラス InputStreamSEreadNBytesSE 
      例外:
      IllegalStateExceptionSE - 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。
      IOExceptionSE