Package javax.servlet
Class ServletInputStream
- java.lang.Object
-
- java.io.InputStream
-
- javax.servlet.ServletInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
- Direct Known Subclasses:
HttpInput
public abstract class ServletInputStream extends java.io.InputStream
Provides an input stream for reading binary data from a client request, including an efficientreadLine
method for reading data one line at a time. With some protocols, such as HTTP POST and PUT, aServletInputStream
object can be used to read data sent from the client.A
ServletInputStream
object is normally retrieved via theServletRequest.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:
ServletRequest
-
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract boolean
isFinished()
Has the end of this InputStream been reached?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.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.
-
-
-
Method Detail
-
readLine
public int readLine(byte[] b, int off, int len) throws java.io.IOException
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:
java.io.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
public abstract void setReadListener(ReadListener listener)
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:
java.lang.IllegalStateException
- If this method is called if neither async nor HTTP upgrade is in progress or if theReadListener
has already been setjava.lang.NullPointerException
- If listener is null- Since:
- Servlet 3.1
-
-