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

  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()`
  `MimeHeaders`
  `getMimeTrailerFields()`
  `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 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

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