Package jakarta.servlet
Class ServletInputStream
java.lang.Object
java.io.InputStream
jakarta.servlet.ServletInputStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
Provides an input stream for reading binary data from a client request, including an efficient
readLine
method for reading data one line at a time. With some protocols, such as HTTP POST and PUT, a
ServletInputStream
object can be used to read data sent from the client.
A ServletInputStream
object is normally retrieved via the ServletRequest.getInputStream()
method.
This is an abstract class that a servlet container implements. Subclasses of this class must implement the
java.io.InputStream.read()
method.
- See Also:
-
Constructor Summary
ModifierConstructorDescriptionprotected
Does nothing, because this is an abstract class. -
Method Summary
Modifier and TypeMethodDescriptionabstract boolean
Has the end of this InputStream been reached?abstract boolean
isReady()
Can data be read from this InputStream without blocking?int
readLine
(byte[] b, int off, int len) Reads the input stream, one line at a time.abstract void
setReadListener
(ReadListener listener) Sets theReadListener
for thisServletInputStream
and thereby switches to non-blocking IO.Methods inherited from class java.io.InputStream
available, close, mark, markSupported, nullInputStream, read, read, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo
-
Constructor Details
-
ServletInputStream
protected ServletInputStream()Does nothing, because this is an abstract class.
-
-
Method Details
-
readLine
Reads the input stream, one line at a time. Starting at an offset, reads bytes into an array, until it reads a certain number of bytes or reaches a newline character, which it reads into the array as well.This method returns -1 if it reaches the end of the input stream before reading the maximum number of bytes.
- Parameters:
b
- an array of bytes into which data is readoff
- an integer specifying the character at which this method begins readinglen
- an integer specifying the maximum number of bytes to read- Returns:
- an integer specifying the actual number of bytes read, or -1 if the end of the stream is reached
- Throws:
IOException
- if an input or output exception has occurred
-
isFinished
public abstract boolean isFinished()Has the end of this InputStream been reached?- Returns:
true
if all the data has been read from the stream, elsefalse
- Since:
- Servlet 3.1
-
isReady
public abstract boolean isReady()Can data be read from this InputStream without blocking? Returns If this method is called and returns false, the container will invokeReadListener.onDataAvailable()
when data is available.- Returns:
true
if data can be read without blocking, elsefalse
- Since:
- Servlet 3.1
-
setReadListener
Sets theReadListener
for thisServletInputStream
and thereby switches to non-blocking IO. It is only valid to switch to non-blocking IO within async processing or HTTP upgrade processing.- Parameters:
listener
- The non-blocking IO read listener- Throws:
IllegalStateException
- If this method is called if neither async nor HTTP upgrade is in progress or if theReadListener
has already been setNullPointerException
- If listener is null- Since:
- Servlet 3.1
-