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