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 Details

    • NOTE_BAD_REQUEST

      public static final int NOTE_BAD_REQUEST
      Note key for bad request.
      See Also:
  • Constructor Details

    • Request

      public Request()
      Default constructor.
  • Method Details

    • getReadListener

      public ReadListener getReadListener()
      Return the read listener.
      Returns:
      the read listener
    • setReadListener

      public void setReadListener(ReadListener listener)
      Set the read listener for non-blocking reads.
      Parameters:
      listener - the read listener
    • isReady

      public boolean isReady()
      Check if the request is ready for reading.
      Returns:
      true if ready for reading
    • onDataAvailable

      public void onDataAvailable() throws IOException
      Called when data is available for reading.
      Throws:
      IOException - if an I/O error occurs
    • sendAllDataReadEvent

      public boolean sendAllDataReadEvent()
      Send the all-data-read event.
      Returns:
      true if the event was sent
    • getMimeHeaders

      public MimeHeaders getMimeHeaders()
      Return the MIME headers.
      Returns:
      the MIME headers
    • isTrailerFieldsReady

      public boolean isTrailerFieldsReady()
      Check if trailer fields are ready.
      Returns:
      true if trailer fields are ready
    • getTrailerFields

      public Map<String,String> getTrailerFields()
      Return the trailer fields as a map.
      Returns:
      the trailer fields
    • getMimeTrailerFields

      public MimeHeaders getMimeTrailerFields()
      Return the MIME trailer fields.
      Returns:
      the MIME trailer fields
    • getURLDecoder

      public UDecoder getURLDecoder()
      Return the URL decoder.
      Returns:
      the URL decoder
    • scheme

      public MessageBytes scheme()
      Return the scheme (e.g. "http" or "https").
      Returns:
      the scheme
    • method

      @Deprecated public MessageBytes method()
      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)
      Set the HTTP method.
      Parameters:
      method - the HTTP method
    • setMethod

      public void setMethod(byte[] buf, int start, int len)
      Set the HTTP method from a byte buffer.
      Parameters:
      buf - the byte buffer
      start - the start offset
      len - the length
    • getMethod

      public String getMethod()
      Return the HTTP method.
      Returns:
      the HTTP method
    • requestURI

      public MessageBytes requestURI()
      Return the request URI.
      Returns:
      the request URI
    • decodedURI

      public MessageBytes decodedURI()
      Return the decoded request URI.
      Returns:
      the decoded URI
    • queryString

      public MessageBytes queryString()
      Return the query string.
      Returns:
      the query string
    • protocol

      public MessageBytes protocol()
      Return the protocol.
      Returns:
      the 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()
      Return the server port.
      Returns:
      the server port
    • setServerPort

      public void setServerPort(int serverPort)
      Set the server port.
      Parameters:
      serverPort - the server port
    • remoteAddr

      public MessageBytes remoteAddr()
      Return the remote address.
      Returns:
      the remote address
    • peerAddr

      public MessageBytes peerAddr()
      Return the peer address.
      Returns:
      the peer address
    • remoteHost

      public MessageBytes remoteHost()
      Return the remote host.
      Returns:
      the remote host
    • localName

      public MessageBytes localName()
      Return the local name.
      Returns:
      the local name
    • localAddr

      public MessageBytes localAddr()
      Return the local address.
      Returns:
      the local address
    • getRemotePort

      public int getRemotePort()
      Return the remote port.
      Returns:
      the remote port
    • setRemotePort

      public void setRemotePort(int port)
      Set the remote port.
      Parameters:
      port - the remote port
    • getLocalPort

      public int getLocalPort()
      Return the local port.
      Returns:
      the local port
    • setLocalPort

      public void setLocalPort(int port)
      Set the local port.
      Parameters:
      port - the local 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)
      Set the content length.
      Parameters:
      len - the content length
    • getContentLength

      public int getContentLength()
      Return the content length.
      Returns:
      the content length
    • getContentLengthLong

      public long getContentLengthLong()
      Return the content length as a long.
      Returns:
      the content length
    • getContentType

      public String getContentType()
      Return the content type as a string.
      Returns:
      the content type
    • setContentType

      public void setContentType(String type)
      Set the content type.
      Parameters:
      type - the content type
    • contentType

      public MessageBytes contentType()
      Return the content type.
      Returns:
      the content type
    • setContentType

      public void setContentType(MessageBytes mb)
      Set the content type.
      Parameters:
      mb - the content type
    • getHeader

      public String getHeader(String name)
      Return the value of the specified header.
      Parameters:
      name - the header name
      Returns:
      the header value
    • setExpectation

      public void setExpectation(boolean expectation)
      Set the expectation flag.
      Parameters:
      expectation - the expectation flag
    • hasExpectation

      public boolean hasExpectation()
      Check if there is an expectation.
      Returns:
      true if there is an expectation
    • getResponse

      public Response getResponse()
      Return the associated response.
      Returns:
      the response
    • setResponse

      public void setResponse(Response response)
      Set the associated response.
      Parameters:
      response - the response
    • action

      public void action(ActionCode actionCode, Object param)
      Perform an action on this request.
      Parameters:
      actionCode - the action code
      param - the action parameter
    • getCookies

      public ServerCookies getCookies()
      Return the server cookies.
      Returns:
      the server cookies
    • getParameters

      public Parameters getParameters()
      Return the request parameters.
      Returns:
      the parameters
    • addPathParameter

      public void addPathParameter(String name, String value)
      Add a path parameter.
      Parameters:
      name - the parameter name
      value - the parameter value
    • getPathParameter

      public String getPathParameter(String name)
      Return the value of the specified path parameter.
      Parameters:
      name - the parameter name
      Returns:
      the parameter value
    • setAttribute

      public void setAttribute(String name, Object o)
      Set an attribute.
      Parameters:
      name - the attribute name
      o - the attribute value
    • getAttributes

      public HashMap<String,Object> getAttributes()
      Return the request attributes map.
      Returns:
      the attributes map
    • getAttribute

      public Object getAttribute(String name)
      Return the value of the specified attribute.
      Parameters:
      name - the attribute name
      Returns:
      the attribute value
    • getRemoteUser

      public MessageBytes getRemoteUser()
      Return the remote user.
      Returns:
      the remote user
    • getRemoteUserNeedsAuthorization

      public boolean getRemoteUserNeedsAuthorization()
      Check if the remote user needs authorization.
      Returns:
      true if the remote user needs authorization
    • setRemoteUserNeedsAuthorization

      public void setRemoteUserNeedsAuthorization(boolean remoteUserNeedsAuthorization)
      Set whether the remote user needs authorization.
      Parameters:
      remoteUserNeedsAuthorization - true if authorization is needed
    • getAuthType

      public MessageBytes getAuthType()
      Return the authentication type.
      Returns:
      the authentication type
    • getAvailable

      public int getAvailable()
      Return the number of available bytes.
      Returns:
      the available bytes
    • setAvailable

      public void setAvailable(int available)
      Set the number of available bytes.
      Parameters:
      available - the available bytes
    • getSendfile

      public boolean getSendfile()
      Check if sendfile is enabled.
      Returns:
      true if sendfile is enabled
    • setSendfile

      public void setSendfile(boolean sendfile)
      Set whether sendfile is enabled.
      Parameters:
      sendfile - true to enable sendfile
    • isFinished

      public boolean isFinished()
      Check if the request body has been fully read.
      Returns:
      true if finished
    • getSupportsRelativeRedirects

      public boolean getSupportsRelativeRedirects()
      Check if relative redirects are supported.
      Returns:
      true if relative redirects are supported
    • getInputBuffer

      public InputBuffer getInputBuffer()
      Return the input buffer.
      Returns:
      the input buffer
    • setInputBuffer

      public void setInputBuffer(InputBuffer inputBuffer)
      Set the input buffer.
      Parameters:
      inputBuffer - the input buffer
    • 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()
      Check if an error exception is present.
      Returns:
      true if an exception is present
    • getRequestId

      public String getRequestId()
      Return the request ID.
      Returns:
      the request ID
    • getProtocolRequestId

      public String getProtocolRequestId()
      Return the protocol request ID.
      Returns:
      the protocol request ID
    • getServletConnection

      public ServletConnection getServletConnection()
      Return the servlet connection.
      Returns:
      the servlet connection
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getStartTime

      public long getStartTime()
      Return the request start time in milliseconds.
      Returns:
      the start time
    • getStartTimeNanos

      public long getStartTimeNanos()
      Return the request start time in nanoseconds.
      Returns:
      the start time in nanoseconds
    • setStartTime

      @Deprecated public void setStartTime(long startTime)
      Deprecated.
      This setter will be removed in Tomcat 11. Use markStartTime().
      Parameters:
      startTime - time
    • setStartTimeNanos

      @Deprecated public void setStartTimeNanos(long startTimeNanos)
      Deprecated.
      Unused. Will be removed in Tomcat 12 onwards. Use markStartTime().
      Set the start time using the value provided by System.nanoTime().
      Parameters:
      startTimeNanos - The value returned from System.nanoTime() at the point the requests started.
    • markStartTime

      public void markStartTime()
      Mark the request start time.
    • getStartInstant

      public Instant getStartInstant()
      Return the request start instant.
      Returns:
      the start instant
    • getThreadId

      public long getThreadId()
      Return the thread ID.
      Returns:
      the thread ID
    • clearRequestThread

      public void clearRequestThread()
      Clear the request thread ID.
    • setRequestThread

      public void setRequestThread()
      Set the request thread ID.
    • isRequestThread

      public boolean isRequestThread()
      Check if the current thread is the request thread.
      Returns:
      true if the current thread is the request thread
    • 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)
      Return the note at the specified position.
      Parameters:
      pos - the position
      Returns:
      the note
    • recycle

      public void recycle()
      Recycle this request for reuse.
    • updateCounters

      public void updateCounters()
      Update request counters.
    • getRequestProcessor

      public RequestInfo getRequestProcessor()
      Return the request processor info.
      Returns:
      the request processor info
    • getBytesRead

      public long getBytesRead()
      Return the number of bytes read.
      Returns:
      the bytes read
    • isProcessing

      public boolean isProcessing()
      Check if the request is currently being processed.
      Returns:
      true if processing