Package org.apache.coyote

## Class Request

- java.lang.Object
- - org.apache.coyote.Request

-     public final class Request
      extends Object

  This is a low-level, efficient representation of a server request. Most fields are GC-free, expensive operations are delayed until the user code needs the information. Processing is delegated to modules, using a hook mechanism. This class is not intended for user code - it is used internally by tomcat for processing the request in the most efficient way. Users ( servlets ) can access the information using a facade, which provides the high-level view of the request. Tomcat defines a number of attributes:
  - "org.apache.tomcat.request" - allows access to the low-level request object in trusted applications
  Author:
    James Duncan Davidson [duncan@eng.sun.com], James Todd [gonzo@eng.sun.com], Jason Hunter [jch@eng.sun.com], Harish Prabandham, Alex Cruikshank [alex@epitonic.com], Hans Bergsten [hans@gefionsoftware.com], Costin Manolache, Remy Maucherat

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Request()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `action​(ActionCode actionCode, Object param)` |
    `void` | `addPathParameter​(String name, String value)` |
    `void` | `clearRequestThread()` |
    `MessageBytes` | `contentType()` |
    `MessageBytes` | `decodedURI()` |
    `int` | `doRead​(ApplicationBufferHandler handler)` | Read data from the input buffer and put it into ApplicationBufferHandler.
    `Object` | `getAttribute​(String name)` |
    `HashMap<String,​Object>` | `getAttributes()` |
    `MessageBytes` | `getAuthType()` |
    `int` | `getAvailable()` |
    `long` | `getBytesRead()` |
    `String` | `getCharacterEncoding()` | Get the character encoding used for this request.
    `Charset` | `getCharset()` | Get the character encoding used for this request.
    `int` | `getContentLength()` |
    `long` | `getContentLengthLong()` |
    `String` | `getContentType()` |
    `ServerCookies` | `getCookies()` |
    `Exception` | `getErrorException()` | Get the Exception that occurred during the writing of the response.
    `String` | `getHeader​(String name)` |
    `InputBuffer` | `getInputBuffer()` |
    `int` | `getLocalPort()` |
    `MimeHeaders` | `getMimeHeaders()` |
    `Object` | `getNote​(int pos)` |
    `Parameters` | `getParameters()` |
    `String` | `getPathParameter​(String name)` |
    `String` | `getProtocolRequestId()` |
    `ReadListener` | `getReadListener()` |
    `int` | `getRemotePort()` |
    `MessageBytes` | `getRemoteUser()` |
    `boolean` | `getRemoteUserNeedsAuthorization()` |
    `String` | `getRequestId()` |
    `RequestInfo` | `getRequestProcessor()` |
    `Response` | `getResponse()` |
    `boolean` | `getSendfile()` |
    `int` | `getServerPort()` |
    `ServletConnection` | `getServletConnection()` |
    `long` | `getStartTime()` |
    `long` | `getStartTimeNanos()` |
    `boolean` | `getSupportsRelativeRedirects()` |
    `long` | `getThreadId()` |
    `Map<String,​String>` | `getTrailerFields()` |
    `UDecoder` | `getURLDecoder()` |
    `boolean` | `hasExpectation()` |
    `boolean` | `isExceptionPresent()` |
    `boolean` | `isFinished()` |
    `boolean` | `isProcessing()` |
    `boolean` | `isReady()` |
    `boolean` | `isRequestThread()` |
    `boolean` | `isTrailerFieldsReady()` |
    `MessageBytes` | `localAddr()` |
    `MessageBytes` | `localName()` |
    `MessageBytes` | `method()` |
    `void` | `onDataAvailable()` |
    `MessageBytes` | `peerAddr()` |
    `MessageBytes` | `protocol()` |
    `MessageBytes` | `queryString()` |
    `void` | `recycle()` |
    `MessageBytes` | `remoteAddr()` |
    `MessageBytes` | `remoteHost()` |
    `MessageBytes` | `requestURI()` |
    `MessageBytes` | `scheme()` |
    `boolean` | `sendAllDataReadEvent()` |
    `MessageBytes` | `serverName()` | Get the "virtual host", derived from the Host: header associated with this request.
    `void` | `setAttribute​(String name, Object o)` |
    `void` | `setAvailable​(int available)` |
    `void` | `setCharset​(Charset charset)` |
    `void` | `setContentLength​(long len)` |
    `void` | `setContentType​(String type)` |
    `void` | `setContentType​(MessageBytes mb)` |
    `void` | `setErrorException​(Exception ex)` | Set the error Exception that occurred during the writing of the response processing.
    `void` | `setExpectation​(boolean expectation)` |
    `protected void` | `setHook​(ActionHook hook)` |
    `void` | `setInputBuffer​(InputBuffer inputBuffer)` |
    `void` | `setLocalPort​(int port)` |
    `void` | `setNote​(int pos, Object value)` | Used to store private data.
    `void` | `setReadListener​(ReadListener listener)` |
    `void` | `setRemotePort​(int port)` |
    `void` | `setRemoteUserNeedsAuthorization​(boolean remoteUserNeedsAuthorization)` |
    `void` | `setRequestThread()` |
    `void` | `setResponse​(Response response)` |
    `void` | `setSendfile​(boolean sendfile)` |
    `void` | `setServerPort​(int serverPort)` |
    `void` | `setStartTime​(long startTime)` | Deprecated. This setter will be removed in Tomcat 11
    `void` | `setStartTimeNanos​(long startTimeNanos)` |
    `String` | `toString()` |
    `void` | `updateCounters()` |

    - ### Methods inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### Request

          public Request()

  - ### Method Detail

    - #### getReadListener

          public ReadListener getReadListener()

    - #### setReadListener

          public void setReadListener​(ReadListener listener)

    - #### isReady

          public boolean isReady()

    - #### onDataAvailable

          public void onDataAvailable()
                               throws IOException

      Throws:
        `IOException`

    - #### sendAllDataReadEvent

          public boolean sendAllDataReadEvent()

    - #### getMimeHeaders

          public MimeHeaders getMimeHeaders()

    - #### isTrailerFieldsReady

          public boolean isTrailerFieldsReady()

    - #### getTrailerFields

          public Map<String,​String> getTrailerFields()

    - #### getURLDecoder

          public UDecoder getURLDecoder()

    - #### scheme

          public MessageBytes scheme()

    - #### method

          public MessageBytes method()

    - #### requestURI

          public MessageBytes requestURI()

    - #### decodedURI

          public MessageBytes decodedURI()

    - #### queryString

          public MessageBytes queryString()

    - #### protocol

          public MessageBytes protocol()

    - #### serverName

          public MessageBytes serverName()

      Get the "virtual host", derived from the Host: header associated with this request.
      Returns:
        The buffer holding the server name, if any. Use isNull() to check if there is no value set.

    - #### getServerPort

          public int getServerPort()

    - #### setServerPort

          public void setServerPort​(int serverPort)

    - #### remoteAddr

          public MessageBytes remoteAddr()

    - #### peerAddr

          public MessageBytes peerAddr()

    - #### remoteHost

          public MessageBytes remoteHost()

    - #### localName

          public MessageBytes localName()

    - #### localAddr

          public MessageBytes localAddr()

    - #### getRemotePort

          public int getRemotePort()

    - #### setRemotePort

          public void setRemotePort​(int port)

    - #### getLocalPort

          public int getLocalPort()

    - #### setLocalPort

          public void setLocalPort​(int port)

    - #### getCharacterEncoding

          public String getCharacterEncoding()

      Get the character encoding used for this request.
      Returns:
        The value set via `setCharset(Charset)` or if no call has been made to that method try to obtain if from the content type.

    - #### getCharset

          public Charset getCharset()
                             throws UnsupportedEncodingException

      Get the character encoding used for this request.
      Returns:
        The value set via `setCharset(Charset)` or if no call has been made to that method try to obtain if from the content type.
      Throws:
        `UnsupportedEncodingException` - If the user agent has specified an invalid character encoding

    - #### setCharset

          public void setCharset​(Charset charset)

    - #### setContentLength

          public void setContentLength​(long len)

    - #### getContentLength

          public int getContentLength()

    - #### getContentLengthLong

          public long getContentLengthLong()

    - #### getContentType

          public String getContentType()

    - #### setContentType

          public void setContentType​(String type)

    - #### contentType

          public MessageBytes contentType()

    - #### setContentType

          public void setContentType​(MessageBytes mb)

    - #### getHeader

          public String getHeader​(String name)

    - #### setExpectation

          public void setExpectation​(boolean expectation)

    - #### hasExpectation

          public boolean hasExpectation()

    - #### getResponse

          public Response getResponse()

    - #### setResponse

          public void setResponse​(Response response)

    - #### setHook

          protected void setHook​(ActionHook hook)

    - #### action

          public void action​(ActionCode actionCode,
                             Object param)

    - #### getCookies

          public ServerCookies getCookies()

    - #### getParameters

          public Parameters getParameters()

    - #### addPathParameter

          public void addPathParameter​(String name,
                                       String value)

    - #### getPathParameter

          public String getPathParameter​(String name)

    - #### setAttribute

          public void setAttribute​(String name,
                                   Object o)

    - #### getAttributes

          public HashMap<String,​Object> getAttributes()

    - #### getAttribute

          public Object getAttribute​(String name)

    - #### getRemoteUser

          public MessageBytes getRemoteUser()

    - #### getRemoteUserNeedsAuthorization

          public boolean getRemoteUserNeedsAuthorization()

    - #### setRemoteUserNeedsAuthorization

          public void setRemoteUserNeedsAuthorization​(boolean remoteUserNeedsAuthorization)

    - #### getAuthType

          public MessageBytes getAuthType()

    - #### getAvailable

          public int getAvailable()

    - #### setAvailable

          public void setAvailable​(int available)

    - #### getSendfile

          public boolean getSendfile()

    - #### setSendfile

          public void setSendfile​(boolean sendfile)

    - #### isFinished

          public boolean isFinished()

    - #### getSupportsRelativeRedirects

          public boolean getSupportsRelativeRedirects()

    - #### getInputBuffer

          public InputBuffer getInputBuffer()

    - #### setInputBuffer

          public void setInputBuffer​(InputBuffer inputBuffer)

    - #### doRead

          public int doRead​(ApplicationBufferHandler handler)
                     throws IOException

      Read data from the input buffer and put it into ApplicationBufferHandler. The buffer is owned by the protocol implementation - it will be reused on the next read. The Adapter must either process the data in place or copy it to a separate buffer if it needs to hold it. In most cases this is done during byte->char conversions or via InputStream. Unlike InputStream, this interface allows the app to process data in place, without copy.
      Parameters:
        `handler` - The destination to which to copy the data
      Returns:
        The number of bytes copied
      Throws:
        `IOException` - If an I/O error occurs during the copy

    - #### setErrorException

          public void setErrorException​(Exception ex)

      Set the error Exception that occurred during the writing of the response processing.
      Parameters:
        `ex` - The exception that occurred

    - #### getErrorException

          public Exception getErrorException()

      Get the Exception that occurred during the writing of the response.
      Returns:
        The exception that occurred

    - #### isExceptionPresent

          public boolean isExceptionPresent()

    - #### getRequestId

          public String getRequestId()

    - #### getProtocolRequestId

          public String getProtocolRequestId()

    - #### getServletConnection

          public ServletConnection getServletConnection()

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### getStartTime

          public long getStartTime()

    - #### setStartTime

          @Deprecated
          public void setStartTime​(long startTime)

      Deprecated.
      This setter will be removed in Tomcat 11
      Parameters:
        `startTime` - time

    - #### getStartTimeNanos

          public long getStartTimeNanos()

    - #### setStartTimeNanos

          public void setStartTimeNanos​(long startTimeNanos)

    - #### getThreadId

          public long getThreadId()

    - #### clearRequestThread

          public void clearRequestThread()

    - #### setRequestThread

          public void setRequestThread()

    - #### isRequestThread

          public boolean isRequestThread()

    - #### setNote

          public void setNote​(int pos,
                              Object value)

      Used to store private data. Thread data could be used instead - but if you have the req, getting/setting a note is just an array access, may be faster than ThreadLocal for very frequent operations. Example use: Catalina CoyoteAdapter: ADAPTER_NOTES = 1 - stores the HttpServletRequest object ( req/res) To avoid conflicts, note in the range 0 - 8 are reserved for the servlet container ( catalina connector, etc ), and values in 9 - 16 for connector use. 17-31 range is not allocated or used.
      Parameters:
        `pos` - Index to use to store the note
        `value` - The value to store at that index

    - #### getNote

          public Object getNote​(int pos)

    - #### recycle

          public void recycle()

    - #### updateCounters

          public void updateCounters()

    - #### getRequestProcessor

          public RequestInfo getRequestProcessor()

    - #### getBytesRead

          public long getBytesRead()

    - #### isProcessing

          public boolean isProcessing()