Class 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
James Duncan Davidson [], James Todd [], Jason Hunter [], Harish Prabandham, Alex Cruikshank [], Hans Bergsten [], 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
    • 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.
      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.
      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.
      The value set via setCharset(Charset) or if no call has been made to that method try to obtain if from the content type.
      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.
      handler - The destination to which to copy the data
      The number of bytes copied
      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.
      ex - The exception that occurred
    • getErrorException

      public Exception getErrorException()
      Get the Exception that occurred during the writing of the response.
      The exception that occurred
    • isExceptionPresent

      public boolean isExceptionPresent()
    • toString

      public String toString()
      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.
      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()