Request (Apache Tomcat 9.0.117 API Documentation)
Description: declaration: package: org.apache.coyote, class: Request

# 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

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `NOTE_BAD_REQUEST`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Request()`

- ## Method Summary

  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()`
  `String`
  `getMethod()`
  `MimeHeaders`
  `getMimeHeaders()`
  `MimeHeaders`
  `getMimeTrailerFields()`
  `Object`
  `getNote(int pos)`
  `Parameters`
  `getParameters()`
  `String`
  `getPathParameter(String name)`
  `ReadListener`
  `getReadListener()`
  `int`
  `getRemotePort()`
  `MessageBytes`
  `getRemoteUser()`
  `boolean`
  `getRemoteUserNeedsAuthorization()`
  `RequestInfo`
  `getRequestProcessor()`
  `Response`
  `getResponse()`
  `boolean`
  `getSendfile()`
  `int`
  `getServerPort()`
  `long`
  `getStartTime()`
  `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()`
  Deprecated.
  Use `getMethod()`, `setMethod(String)` and `setMethod(byte[], int, int)`
  `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)`
  `void`
  `setInputBuffer(InputBuffer inputBuffer)`
  `void`
  `setLocalPort(int port)`
  `void`
  `setMethod(byte[] buf, int start, int len)`
  `void`
  `setMethod(String method)`
  `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)`
  `String`
  `toString()`
  `void`
  `updateCounters()`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### NOTE_BAD_REQUEST

    public static final int NOTE_BAD_REQUEST
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Request

    public Request()

- ## Method Details

  - ### 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()

  - ### getMimeTrailerFields

    public MimeHeaders getMimeTrailerFields()

  - ### getURLDecoder

    public UDecoder getURLDecoder()

  - ### scheme

    public MessageBytes scheme()

  - ### method

    @Deprecated public MessageBytes method()
    Deprecated.
    Use `getMethod()`, `setMethod(String)` and `setMethod(byte[], int, int)`
    Get a MessageBytes instance that holds the current request's HTTP method.
    Returns:
      a MessageBytes instance that holds the current request's HTTP method.

  - ### setMethod

    public void setMethod(String method)

  - ### setMethod

    public void setMethod(byte[] buf, int start, int len)

  - ### getMethod

    public String getMethod()

  - ### 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)

  - ### 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()

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### getStartTime

    public long getStartTime()

  - ### setStartTime

    public void setStartTime(long startTime)

  - ### 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()