# Class HttpServletResponseWrapper

java.lang.Object
jakarta.servlet.ServletResponseWrapper
jakarta.servlet.http.HttpServletResponseWrapper

All Implemented Interfaces:
  `HttpServletResponse, ServletResponse`

public class HttpServletResponseWrapper extends ServletResponseWrapper implements HttpServletResponse
Provides a convenient implementation of the HttpServletResponse interface that can be subclassed by developers wishing to adapt the response from a Servlet. This class implements the Wrapper or Decorator pattern. Methods default to calling through to the wrapped response object.

Since:
  Servlet 2.3
See Also:
  - `HttpServletResponse`

- ## Field Summary

  ### 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
  `HttpServletResponseWrapper(HttpServletResponse response)`
  Constructs a response adaptor wrapping the given response.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addCookie(Cookie cookie)`
  The default behavior of this method is to call addCookie(Cookie cookie) on the wrapped response object.
  `void`
  `addDateHeader(String name, long date)`
  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`
  `addIntHeader(String name, int value)`
  The default behavior of this method is to call addIntHeader(String name, int value) on the wrapped response object.
  `boolean`
  `containsHeader(String name)`
  The default behavior of this method is to call containsHeader(String name) on the wrapped response object.
  `String`
  `encodeRedirectURL(String url)`
  The default behavior of this method is to return encodeRedirectURL(String url) on the wrapped response object.
  `String`
  `encodeURL(String url)`
  The default behavior of this method is to call encodeURL(String url) on the wrapped response object.
  `String`
  `getHeader(String name)`
  Return the value for the specified header, or `null` if this header has not been set.
  `Collection<String>`
  `getHeaderNames()`
  Get the header names set for this HTTP response.
  `Collection<String>`
  `getHeaders(String name)`
  Return a Collection of all the header values associated with the specified header name.
  `int`
  `getStatus()`
  Get the HTTP status code for this Response.
  `Supplier<Map<String,String>>`
  `getTrailerFields()`
  Obtain the supplier of the trailer headers.
  `void`
  `sendError(int sc)`
  The default behavior of this method is to call sendError(int sc) on the wrapped response object.
  `void`
  `sendError(int sc, String msg)`
  The default behavior of this method is to call sendError(int sc, String msg) on the wrapped response object.
  `void`
  `sendRedirect(String location)`
  The default behavior of this method is to call sendRedirect(String location) on the wrapped response object.
  `void`
  `sendRedirect(String location, boolean clearBuffer)`
  The default behavior of this method is to call sendRedirect(String location, boolean clearBuffer) on the wrapped response object.
  `void`
  `sendRedirect(String location, int sc)`
  The default behavior of this method is to call sendRedirect(String location, int sc) on the wrapped response object.
  `void`
  `sendRedirect(String location, int sc, boolean clearBuffer)`
  The default behavior of this method is to call sendRedirect(String location, int sc, boolean clearBuffer) on the wrapped response object.
  `void`
  `setDateHeader(String name, long date)`
  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.
  `void`
  `setIntHeader(String name, int value)`
  The default behavior of this method is to call setIntHeader(String name, int value) on the wrapped response object.
  `void`
  `setStatus(int sc)`
  The default behavior of this method is to call setStatus(int sc) on the wrapped response object.
  `void`
  `setTrailerFields(Supplier<Map<String,String>> supplier)`
  Configure the supplier of the trailer headers.

  ### Methods inherited from class ServletResponseWrapper

  `flushBuffer, getBufferSize, getCharacterEncoding, getContentType, getLocale, getOutputStream, getResponse, getWriter, 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, getOutputStream, getWriter, isCommitted, reset, resetBuffer, setBufferSize, setCharacterEncoding, setCharacterEncoding, setContentLength, setContentLengthLong, setContentType, setLocale`

- ## Constructor Details

  - ### HttpServletResponseWrapper

    public HttpServletResponseWrapper(HttpServletResponse response)
    Constructs a response adaptor wrapping the given response.
    Parameters:
      `response` - The response to be wrapped
    Throws:
      `IllegalArgumentException` - if the response is null

- ## Method Details

  - ### addCookie

    public void addCookie(Cookie cookie)
    The default behavior of this method is to call addCookie(Cookie cookie) on the wrapped response object.
    Specified by:
      `addCookie` in interface `HttpServletResponse`
    Parameters:
      `cookie` - the Cookie to return to the client

  - ### containsHeader

    public boolean containsHeader(String name)
    The default behavior of this method is to call containsHeader(String name) on the wrapped response object.
    Specified by:
      `containsHeader` in interface `HttpServletResponse`
    Parameters:
      `name` - the header name
    Returns:
      `true` if the named response header has already been set; `false` otherwise

  - ### encodeURL

    public String encodeURL(String url)
    The default behavior of this method is to call encodeURL(String url) on the wrapped response object.
    Specified by:
      `encodeURL` in interface `HttpServletResponse`
    Parameters:
      `url` - the url to be encoded.
    Returns:
      the encoded URL if encoding is needed; the unchanged URL otherwise.

  - ### encodeRedirectURL

    public String encodeRedirectURL(String url)
    The default behavior of this method is to return encodeRedirectURL(String url) on the wrapped response object.
    Specified by:
      `encodeRedirectURL` in interface `HttpServletResponse`
    Parameters:
      `url` - the url to be encoded.
    Returns:
      the encoded URL if encoding is needed; the unchanged URL otherwise.
    See Also:
      - `HttpServletResponse.sendRedirect(String)`

  - ### sendError

    public void sendError(int sc, String msg) throws IOException
    The default behavior of this method is to call sendError(int sc, String msg) on the wrapped response object.
    Specified by:
      `sendError` in interface `HttpServletResponse`
    Parameters:
      `sc` - the error status code
      `msg` - the descriptive message
    Throws:
      `IOException` - If an input or output exception occurs

  - ### sendError

    public void sendError(int sc) throws IOException
    The default behavior of this method is to call sendError(int sc) on the wrapped response object.
    Specified by:
      `sendError` in interface `HttpServletResponse`
    Parameters:
      `sc` - the error status code
    Throws:
      `IOException` - If an input or output exception occurs

  - ### sendRedirect

    public void sendRedirect(String location) throws IOException
    The default behavior of this method is to call sendRedirect(String location) on the wrapped response object.
    Specified by:
      `sendRedirect` in interface `HttpServletResponse`
    Parameters:
      `location` - the redirect location URL (can be absolute or relative)
    Throws:
      `IOException` - If an input or output exception occurs
    See Also:
      - `HttpServletResponse.sendRedirect(String, int, boolean)`

  - ### sendRedirect

    public void sendRedirect(String location, int sc) throws IOException
    The default behavior of this method is to call sendRedirect(String location, int sc) on the wrapped response object.
    Specified by:
      `sendRedirect` in interface `HttpServletResponse`
    Parameters:
      `location` - the redirect location URL (can be absolute or relative)
      `sc` - the status code to use for the redirect
    Throws:
      `IOException` - If an input or output exception occurs
    Since:
      Servlet 6.1
    See Also:
      - `HttpServletResponse.sendRedirect(String, int, boolean)`

  - ### sendRedirect

    public void sendRedirect(String location, boolean clearBuffer) throws IOException
    The default behavior of this method is to call sendRedirect(String location, boolean clearBuffer) on the wrapped response object.
    Specified by:
      `sendRedirect` in interface `HttpServletResponse`
    Parameters:
      `location` - the redirect location URL (can be absolute or relative)
      `clearBuffer` - if `true`, clear the buffer and replace it with the data set by this method otherwise retain the existing buffer
    Throws:
      `IOException` - If an input or output exception occurs
    Since:
      Servlet 6.1
    See Also:
      - `HttpServletResponse.sendRedirect(String, int, boolean)`

  - ### sendRedirect

    public void sendRedirect(String location, int sc, boolean clearBuffer) throws IOException
    The default behavior of this method is to call sendRedirect(String location, int sc, boolean clearBuffer) on the wrapped response object.
    Specified by:
      `sendRedirect` in interface `HttpServletResponse`
    Parameters:
      `location` - the redirect location URL (can be absolute or relative)
      `sc` - the status code to use for the redirect
      `clearBuffer` - if `true`, clear the buffer and replace it with the data set by this method otherwise retain the existing buffer
    Throws:
      `IOException` - If an input or output exception occurs
    Since:
      Servlet 6.1

  - ### setDateHeader

    public void setDateHeader(String name, long date)
    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`
    Parameters:
      `name` - the name of the header to set
      `date` - the assigned date value
    See Also:
      - `HttpServletResponse.containsHeader(String)`
      - `HttpServletResponse.addDateHeader(String, long)`

  - ### addDateHeader

    public void addDateHeader(String name, long date)
    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`
    Parameters:
      `name` - the name of the header to set
      `date` - the additional date value
    See Also:
      - `HttpServletResponse.setDateHeader(String, long)`

  - ### setHeader

    public 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.
    Specified by:
      `setHeader` in interface `HttpServletResponse`
    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)`

  - ### addHeader

    public 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.
    Specified by:
      `addHeader` in interface `HttpServletResponse`
    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)`

  - ### setIntHeader

    public void setIntHeader(String name, int value)
    The default behavior of this method is to call setIntHeader(String name, int value) on the wrapped response object.
    Specified by:
      `setIntHeader` in interface `HttpServletResponse`
    Parameters:
      `name` - the name of the header
      `value` - the assigned integer value
    See Also:
      - `HttpServletResponse.containsHeader(String)`
      - `HttpServletResponse.addIntHeader(String, int)`

  - ### addIntHeader

    public void addIntHeader(String name, int value)
    The default behavior of this method is to call addIntHeader(String name, int value) on the wrapped response object.
    Specified by:
      `addIntHeader` in interface `HttpServletResponse`
    Parameters:
      `name` - the name of the header
      `value` - the assigned integer value
    See Also:
      - `HttpServletResponse.setIntHeader(String, int)`

  - ### setStatus

    public void setStatus(int sc)
    The default behavior of this method is to call setStatus(int sc) on the wrapped response object.
    Specified by:
      `setStatus` in interface `HttpServletResponse`
    Parameters:
      `sc` - the status code
    See Also:
      - `HttpServletResponse.sendError(int, String)`

  - ### getStatus

    public int getStatus()
    Get the HTTP status code for this Response.

    The default implementation is to call `HttpServletResponse.getStatus()` on the wrapped `HttpServletResponse`.

    Specified by:
      `getStatus` in interface `HttpServletResponse`
    Returns:
      The HTTP status code for this Response
    Since:
      Servlet 3.0

  - ### getHeader

    public String getHeader(String name)
    Return the value for the specified header, or `null` if this header has not been set. If more than one value was added for this name, only the first is returned; use `HttpServletResponse.getHeaders(String)` to retrieve all of them.

    The default implementation is to call `HttpServletResponse.getHeader(String)` on the wrapped `HttpServletResponse`.

    Specified by:
      `getHeader` in interface `HttpServletResponse`
    Parameters:
      `name` - Header name to look up
    Returns:
      The first value for the specified header. This is the raw value so if multiple values are specified in the first header then they will be returned as a single header value .
    Since:
      Servlet 3.0

  - ### getHeaders

    public Collection<String> getHeaders(String name)
    Return a Collection of all the header values associated with the specified header name.

    The default implementation is to call `HttpServletResponse.getHeaders(String)` on the wrapped `HttpServletResponse`.

    Specified by:
      `getHeaders` in interface `HttpServletResponse`
    Parameters:
      `name` - Header name to look up
    Returns:
      The values for the specified header. These are the raw values so if multiple values are specified in a single header that will be returned as a single header value.
    Since:
      Servlet 3.0

  - ### getHeaderNames

    public Collection<String> getHeaderNames()
    Get the header names set for this HTTP response.

    The default implementation is to call `HttpServletResponse.getHeaderNames()` on the wrapped `HttpServletResponse`.

    Specified by:
      `getHeaderNames` in interface `HttpServletResponse`
    Returns:
      The header names set for this HTTP response.
    Since:
      Servlet 3.0

  - ### setTrailerFields

    public void setTrailerFields(Supplier<Map<String,String>> supplier)
    Configure the supplier of the trailer headers. The supplier will be called in the scope of the thread that completes the response.
    Trailers that don't meet the requirements of RFC 7230, section 4.1.2 will be ignored.
    The default implementation is a NO-OP.

    The default implementation is to call `HttpServletResponse.setTrailerFields(Supplier)` on the wrapped `HttpServletResponse`.

    Specified by:
      `setTrailerFields` in interface `HttpServletResponse`
    Parameters:
      `supplier` - The supplier for the trailer headers
    Since:
      Servlet 4.0

  - ### getTrailerFields

    public Supplier<Map<String,String>> getTrailerFields()
    Obtain the supplier of the trailer headers.
    The default implementation returns null.

    The default implementation is to call `HttpServletResponse.getTrailerFields()` on the wrapped `HttpServletResponse`.

    Specified by:
      `getTrailerFields` in interface `HttpServletResponse`
    Returns:
      The supplier for the trailer headers
    Since:
      Servlet 4.0