Class ServletInputStream
java.lang.Object
java.io.InputStream
javax.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
ConstructorsModifierConstructorDescriptionprotectedDoes nothing, because this is an abstract class. -
Method Summary
Modifier and TypeMethodDescriptionabstract booleanHas the end of this InputStream been reached?abstract booleanisReady()Can data be read from this InputStream without blocking?intreadLine(byte[] b, int off, int len) Reads the input stream, one line at a time.abstract voidsetReadListener(ReadListener listener) Sets theReadListenerfor thisServletInputStreamand thereby switches to non-blocking IO.Methods inherited from class 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:
trueif 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:
trueif data can be read without blocking, elsefalse- Since:
- Servlet 3.1
-
setReadListener
Sets theReadListenerfor thisServletInputStreamand 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 theReadListenerhas already been setNullPointerException- If listener is null- Since:
- Servlet 3.1
-