クラス ServletInputStream
- 実装済みのインターフェース一覧:
CloseableSE,AutoCloseableSE
readLine メソッドが含まれます。HTTP POST や PUT などの一部のプロトコルでは、ServletInputStream オブジェクトを使用して、クライアントから送信されたデータを読み取ることができます。ServletInputStream オブジェクトは、通常 ServletRequest.getInputStream() メソッドを介して取得されます。
これは、サーブレットコンテナーが実装する抽象クラスです。このクラスのサブクラスは、java.io.InputStream.read() メソッドを実装する必要があります。
- 作成者:
- Various
- 関連事項:
コンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明abstract booleanストリームからすべてのデータが読み取られた場合は true を返し、そうでない場合は false を返します。abstract booleanisReady()read()メソッドの呼び出しが許可されている場合は、trueを返します。intread(ByteBufferSE buffer) 入力ストリームから指定されたバッファーに読み取ります。byte[]intreadLine(byte[] b, int off, int len) 入力ストリームを一度に 1 行ずつ読み取ります。intreadNBytes(byte[] b, int off, int len) byte[]readNBytes(int len) abstract voidsetReadListener(ReadListener readListener) 読み取りが可能になったときに、提供されたReadListenerを呼び出すようServletInputStreamに指示しますクラス java.io.InputStreamSE から継承されたメソッド
available, close, markSE, markSupported, nullInputStream, read, readSE, readSE, reset, skipSE, skipNBytesSE, transferToSE
コンストラクターの詳細
ServletInputStream
protected ServletInputStream()これは抽象クラスであるため、何もしません。
メソッドの詳細
read
入力ストリームから指定されたバッファーに読み取ります。入力ストリームがノンブロッキングモードの場合、このメソッドを呼び出すたびに
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
入力ストリームを一度に 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
読み取りが可能になったときに、提供されたReadListenerを呼び出すようServletInputStreamに指示します- パラメーター:
readListener- 読み取りが可能になったときに通知されるReadListener- 例外:
IllegalStateExceptionSE- 次の条件のいずれかに該当する場合- 関連するリクエストはアップグレードされず、非同期も開始されません
- setReadListener は同じリクエストの範囲内で複数回呼び出されます。
NullPointerExceptionSE- readListener が null の場合- 導入:
- Servlet 3.1
readAllBytes
このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。
- オーバーライド:
- クラス
InputStreamSEのreadAllBytes - 例外:
IllegalStateExceptionSE- 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。IOExceptionSE
readNBytes
このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。
- オーバーライド:
- クラス
InputStreamSEのreadNBytesSE - 例外:
IllegalStateExceptionSE- 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。IOExceptionSE
readNBytes
このメソッドは、入力ストリームがブロッキングモードの場合にのみ使用できます。
- オーバーライド:
- クラス
InputStreamSEのreadNBytesSE - 例外:
IllegalStateExceptionSE- 入力ストリームがノンブロッキングモードのときにこのメソッドが呼び出された場合。IOExceptionSE