# Class ResponseIncludeWrapper

java.lang.Object
jakarta.servlet.ServletResponseWrapper
jakarta.servlet.http.HttpServletResponseWrapper
org.apache.catalina.ssi.ResponseIncludeWrapper

All Implemented Interfaces:
  `HttpServletResponse, ServletResponse`

public class ResponseIncludeWrapper extends HttpServletResponseWrapper
An HttpServletResponseWrapper, used from `SSIServletExternalResolver`.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final ServletOutputStream`
  `captureServletOutputStream`
  Our ServletOutputStream
  `protected long`
  `lastModified`
  `protected PrintWriter`
  `printWriter`
  `protected ServletOutputStream`
  `servletOutputStream`

  ### Fields inherited from interface HttpServletResponse

  `SC_ACCEPTED, SC_BAD_GATEWAY, SC_BAD_REQUEST, SC_CONFLICT, SC_CONTINUE, SC_CREATED, SC_EXPECTATION_FAILED, SC_FORBIDDEN, SC_FOUND, SC_GATEWAY_TIMEOUT, SC_GONE, SC_HTTP_VERSION_NOT_SUPPORTED, SC_INTERNAL_SERVER_ERROR, SC_LENGTH_REQUIRED, SC_METHOD_NOT_ALLOWED, SC_MISDIRECTED_REQUEST, SC_MOVED_PERMANENTLY, SC_MOVED_TEMPORARILY, SC_MULTIPLE_CHOICES, SC_NO_CONTENT, SC_NON_AUTHORITATIVE_INFORMATION, SC_NOT_ACCEPTABLE, SC_NOT_FOUND, SC_NOT_IMPLEMENTED, SC_NOT_MODIFIED, SC_OK, SC_PARTIAL_CONTENT, SC_PAYMENT_REQUIRED, SC_PERMANENT_REDIRECT, SC_PRECONDITION_FAILED, SC_PROXY_AUTHENTICATION_REQUIRED, SC_REQUEST_ENTITY_TOO_LARGE, SC_REQUEST_TIMEOUT, SC_REQUEST_URI_TOO_LONG, SC_REQUESTED_RANGE_NOT_SATISFIABLE, SC_RESET_CONTENT, SC_SEE_OTHER, SC_SERVICE_UNAVAILABLE, SC_SWITCHING_PROTOCOLS, SC_TEMPORARY_REDIRECT, SC_UNAUTHORIZED, SC_UNPROCESSABLE_CONTENT, SC_UNSUPPORTED_MEDIA_TYPE, SC_UPGRADE_REQUIRED, SC_USE_PROXY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ResponseIncludeWrapper(HttpServletResponse response, ServletOutputStream captureServletOutputStream)`
  Initialize our wrapper with the current HttpServletResponse and ServletOutputStream.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addDateHeader(String name, long value)`
  The default behavior of this method is to call addDateHeader(String name, long date) on the wrapped response object.
  `void`
  `addHeader(String name, String value)`
  The default behavior of this method is to return addHeader(String name, String value) on the wrapped response object.
  `void`
  `flushOutputStreamOrWriter()`
  Flush the servletOutputStream or printWriter ( only one will be non-null ) This must be called after a requestDispatcher.include, since we can't assume that the included servlet flushed its stream.
  `long`
  `getLastModified()`
  Returns the value of the `last-modified` header field.
  `ServletOutputStream`
  `getOutputStream()`
  Return an OutputStream, throws an exception if a printwriter already been returned.
  `PrintWriter`
  `getWriter()`
  Return a printwriter, throws an exception if an OutputStream already been returned.
  `void`
  `setDateHeader(String name, long value)`
  The default behavior of this method is to call setDateHeader(String name, long date) on the wrapped response object.
  `void`
  `setHeader(String name, String value)`
  The default behavior of this method is to return setHeader(String name, String value) on the wrapped response object.

  ### Methods inherited from class HttpServletResponseWrapper

  `addCookie, addIntHeader, containsHeader, encodeRedirectURL, encodeURL, getHeader, getHeaderNames, getHeaders, getStatus, getTrailerFields, sendError, sendError, sendRedirect, sendRedirect, sendRedirect, sendRedirect, setIntHeader, setStatus, setTrailerFields`

  ### Methods inherited from class ServletResponseWrapper

  `flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getResponse, isCommitted, isWrapperFor, isWrapperFor, reset, resetBuffer, setBufferSize, setCharacterEncoding, setCharacterEncoding, setContentLength, setContentLengthLong, setContentType, setLocale, setResponse`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface ServletResponse

  `flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setCharacterEncoding, setContentLength, setContentLengthLong, setContentType, setLocale`

- ## Field Details

  - ### lastModified

    protected long lastModified

  - ### captureServletOutputStream

    protected final ServletOutputStream captureServletOutputStream
    Our ServletOutputStream

  - ### servletOutputStream

    protected ServletOutputStream servletOutputStream

  - ### printWriter

    protected PrintWriter printWriter

- ## Constructor Details

  - ### ResponseIncludeWrapper

    public ResponseIncludeWrapper(HttpServletResponse response, ServletOutputStream captureServletOutputStream)
    Initialize our wrapper with the current HttpServletResponse and ServletOutputStream.
    Parameters:
      `response` - The response to use
      `captureServletOutputStream` - The ServletOutputStream to use

- ## Method Details

  - ### flushOutputStreamOrWriter

    public void flushOutputStreamOrWriter() throws IOException
    Flush the servletOutputStream or printWriter ( only one will be non-null ) This must be called after a requestDispatcher.include, since we can't assume that the included servlet flushed its stream.
    Throws:
      `IOException` - an IO error occurred

  - ### getWriter

    public PrintWriter getWriter() throws IOException
    Return a printwriter, throws an exception if an OutputStream already been returned.
    Specified by:
      `getWriter` in interface `ServletResponse`
    Overrides:
      `getWriter` in class `ServletResponseWrapper`
    Returns:
      a PrintWriter object
    Throws:
      `IOException` - if the outputstream already been called
    See Also:
      - `ServletResponse.getOutputStream()`
      - `ServletResponse.setCharacterEncoding(String)`

  - ### getOutputStream

    public ServletOutputStream getOutputStream() throws IOException
    Return an OutputStream, throws an exception if a printwriter already been returned.
    Specified by:
      `getOutputStream` in interface `ServletResponse`
    Overrides:
      `getOutputStream` in class `ServletResponseWrapper`
    Returns:
      an OutputStream object
    Throws:
      `IOException` - if the printwriter already been called
    See Also:
      - `ServletResponse.getWriter()`

  - ### getLastModified

    public long getLastModified()
    Returns the value of the `last-modified` header field. The result is the number of milliseconds since January 1, 1970 GMT.
    Returns:
      the date the resource referenced by this `ResponseIncludeWrapper` was last modified, or -1 if not known.

  - ### addDateHeader

    public void addDateHeader(String name, long value)
    Description copied from class: `jakarta.servlet.http.HttpServletResponseWrapper`
    The default behavior of this method is to call addDateHeader(String name, long date) on the wrapped response object.
    Specified by:
      `addDateHeader` in interface `HttpServletResponse`
    Overrides:
      `addDateHeader` in class `HttpServletResponseWrapper`
    Parameters:
      `name` - the name of the header to set
      `value` - the additional date value
    See Also:
      - `HttpServletResponse.setDateHeader(String, long)`

  - ### addHeader

    public void addHeader(String name, String value)
    Description copied from class: `jakarta.servlet.http.HttpServletResponseWrapper`
    The default behavior of this method is to return addHeader(String name, String value) on the wrapped response object.
    Specified by:
      `addHeader` in interface `HttpServletResponse`
    Overrides:
      `addHeader` in class `HttpServletResponseWrapper`
    Parameters:
      `name` - the name of the header
      `value` - the additional header value If it contains octet string, it should be encoded according to RFC 2047
    See Also:
      - `HttpServletResponse.setHeader(String, String)`

  - ### setDateHeader

    public void setDateHeader(String name, long value)
    Description copied from class: `jakarta.servlet.http.HttpServletResponseWrapper`
    The default behavior of this method is to call setDateHeader(String name, long date) on the wrapped response object.
    Specified by:
      `setDateHeader` in interface `HttpServletResponse`
    Overrides:
      `setDateHeader` in class `HttpServletResponseWrapper`
    Parameters:
      `name` - the name of the header to set
      `value` - the assigned date value
    See Also:
      - `HttpServletResponse.containsHeader(String)`
      - `HttpServletResponse.addDateHeader(String, long)`

  - ### setHeader

    public void setHeader(String name, String value)
    Description copied from class: `jakarta.servlet.http.HttpServletResponseWrapper`
    The default behavior of this method is to return setHeader(String name, String value) on the wrapped response object.
    Specified by:
      `setHeader` in interface `HttpServletResponse`
    Overrides:
      `setHeader` in class `HttpServletResponseWrapper`
    Parameters:
      `name` - the name of the header
      `value` - the header value If it contains octet string, it should be encoded according to RFC 2047
    See Also:
      - `HttpServletResponse.containsHeader(String)`
      - `HttpServletResponse.addHeader(String, String)`