Class ServletInputStream

java.lang.Object
java.io.InputStream
jakarta.servlet.ServletInputStream
All Implemented Interfaces:
Closeable, AutoCloseable

public abstract class ServletInputStream
extends InputStream
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.

Author:
Various
See Also:
ServletRequest
  • Constructor Details

    • ServletInputStream

      protected ServletInputStream()
      Does nothing, because this is an abstract class.
  • Method Details

    • readLine

      public int readLine​(byte[] b, int off, int len) throws 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 read
      off - an integer specifying the character at which this method begins reading
      len - 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()
      Returns true when all the data from the stream has been read else it returns false.
      Returns:
      true when all data for this particular request has been read, otherwise returns false.
      Since:
      Servlet 3.1
    • isReady

      public abstract boolean isReady()
      Returns true if data can be read without blocking else returns false.
      Returns:
      true if data can be obtained without blocking, otherwise returns false.
      Since:
      Servlet 3.1
    • setReadListener

      public abstract void setReadListener​(ReadListener readListener)
      Instructs the ServletInputStream to invoke the provided ReadListener when it is possible to read
      Parameters:
      readListener - the ReadListener that should be notified when it's possible to read.
      Throws:
      IllegalStateException - if one of the following conditions is true
      • the associated request is neither upgraded nor the async started
      • setReadListener is called more than once within the scope of the same request.
      NullPointerException - if readListener is null
      Since:
      Servlet 3.1