# Class ServletOutputStream

java.lang.Object
java.io.OutputStream
javax.servlet.ServletOutputStream

All Implemented Interfaces:
  `Closeable, Flushable, AutoCloseable`

public abstract class ServletOutputStream extends OutputStream
Provides an output stream for sending binary data to the client. A `ServletOutputStream` object is normally retrieved via the `ServletResponse.getOutputStream()` method.

This is an abstract class that the servlet container implements. Subclasses of this class must implement the `java.io.OutputStream.write(int)` method.

See Also:
  - `ServletResponse`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`ServletOutputStream()`
Does nothing, because this is an abstract class.

## Method Summary

Modifier and Type
Method
Description
`abstract boolean`
`isReady()`
Checks if a non-blocking write will succeed.
`void`
`print(boolean b)`
Writes a `boolean` value to the client, with no carriage return-line feed (CRLF) character at the end.
`void`
`print(char c)`
Writes a character to the client, with no carriage return-line feed (CRLF) at the end.
`void`
`print(double d)`
Writes a `double` value to the client, with no carriage return-line feed (CRLF) at the end.
`void`
`print(float f)`
Writes a `float` value to the client, with no carriage return-line feed (CRLF) at the end.
`void`
`print(int i)`
Writes an int to the client, with no carriage return-line feed (CRLF) at the end.
`void`
`print(long l)`
Writes a `long` value to the client, with no carriage return-line feed (CRLF) at the end.
`void`
`print(String s)`
Writes a `String` to the client, without a carriage return-line feed (CRLF) character at the end.
`void`
`println()`
Writes a carriage return-line feed (CRLF) to the client.
`void`
`println(boolean b)`
Writes a `boolean` value to the client, followed by a carriage return-line feed (CRLF).
`void`
`println(char c)`
Writes a character to the client, followed by a carriage return-line feed (CRLF).
`void`
`println(double d)`
Writes a `double` value to the client, followed by a carriage return-line feed (CRLF).
`void`
`println(float f)`
Writes a `float` value to the client, followed by a carriage return-line feed (CRLF).
`void`
`println(int i)`
Writes an int to the client, followed by a carriage return-line feed (CRLF) character.
`void`
`println(long l)`
Writes a `long` value to the client, followed by a carriage return-line feed (CRLF).
`void`
`println(String s)`
Writes a `String` to the client, followed by a carriage return-line feed (CRLF).
`abstract void`
`setWriteListener(WriteListener listener)`
Sets the `WriteListener` for this `ServletOutputStream` and thereby switches to non-blocking IO.

### Methods inherited from class OutputStream

`close, flush, nullOutputStream, write, write, write`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ServletOutputStream

protected ServletOutputStream()
Does nothing, because this is an abstract class.

## Method Details

### print

public void print(String s) throws IOException
Writes a `String` to the client, without a carriage return-line feed (CRLF) character at the end.

Parameters:
  `s` - the `String` to send to the client
Throws:
  `IOException` - if an input or output exception occurred

### print

public void print(boolean b) throws IOException
Writes a `boolean` value to the client, with no carriage return-line feed (CRLF) character at the end.

Parameters:
  `b` - the `boolean` value to send to the client
Throws:
  `IOException` - if an input or output exception occurred

### print

public void print(char c) throws IOException
Writes a character to the client, with no carriage return-line feed (CRLF) at the end.

Parameters:
  `c` - the character to send to the client
Throws:
  `IOException` - if an input or output exception occurred

### print

public void print(int i) throws IOException
Writes an int to the client, with no carriage return-line feed (CRLF) at the end.

Parameters:
  `i` - the int to send to the client
Throws:
  `IOException` - if an input or output exception occurred

### print

public void print(long l) throws IOException
Writes a `long` value to the client, with no carriage return-line feed (CRLF) at the end.

Parameters:
  `l` - the `long` value to send to the client
Throws:
  `IOException` - if an input or output exception occurred

### print

public void print(float f) throws IOException
Writes a `float` value to the client, with no carriage return-line feed (CRLF) at the end.

Parameters:
  `f` - the `float` value to send to the client
Throws:
  `IOException` - if an input or output exception occurred

### print

public void print(double d) throws IOException
Writes a `double` value to the client, with no carriage return-line feed (CRLF) at the end.

Parameters:
  `d` - the `double` value to send to the client
Throws:
  `IOException` - if an input or output exception occurred

### println

public void println() throws IOException
Writes a carriage return-line feed (CRLF) to the client.

Throws:
  `IOException` - if an input or output exception occurred

### println

public void println(String s) throws IOException
Writes a `String` to the client, followed by a carriage return-line feed (CRLF).

Parameters:
  `s` - the `String` to write to the client
Throws:
  `IOException` - if an input or output exception occurred

### println

public void println(boolean b) throws IOException
Writes a `boolean` value to the client, followed by a carriage return-line feed (CRLF).

Parameters:
  `b` - the `boolean` value to write to the client
Throws:
  `IOException` - if an input or output exception occurred

### println

public void println(char c) throws IOException
Writes a character to the client, followed by a carriage return-line feed (CRLF).

Parameters:
  `c` - the character to write to the client
Throws:
  `IOException` - if an input or output exception occurred

### println

public void println(int i) throws IOException
Writes an int to the client, followed by a carriage return-line feed (CRLF) character.

Parameters:
  `i` - the int to write to the client
Throws:
  `IOException` - if an input or output exception occurred

### println

public void println(long l) throws IOException
Writes a `long` value to the client, followed by a carriage return-line feed (CRLF).

Parameters:
  `l` - the `long` value to write to the client
Throws:
  `IOException` - if an input or output exception occurred

### println

public void println(float f) throws IOException
Writes a `float` value to the client, followed by a carriage return-line feed (CRLF).

Parameters:
  `f` - the `float` value to write to the client
Throws:
  `IOException` - if an input or output exception occurred

### println

public void println(double d) throws IOException
Writes a `double` value to the client, followed by a carriage return-line feed (CRLF).

Parameters:
  `d` - the `double` value to write to the client
Throws:
  `IOException` - if an input or output exception occurred

### isReady

public abstract boolean isReady()
Checks if a non-blocking write will succeed. If this returns `false`, it will cause a callback to `WriteListener.onWritePossible()` when the buffer has emptied. If this method returns `false` no further data must be written until the container calls `WriteListener.onWritePossible()`.

Returns:
  `true` if data can be written, else `false`
Since:
  Servlet 3.1

### setWriteListener

public abstract void setWriteListener(WriteListener listener)
Sets the `WriteListener` for this `ServletOutputStream` 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 write listener
Throws:
  `IllegalStateException` - If this method is called if neither async nor HTTP upgrade is in progress or if the `WriteListener` has already been set
  `NullPointerException` - If listener is null
Since:
  Servlet 3.1