Class Request

  • public final class Request
    extends java.lang.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 Detail

      • Request

        public Request()
    • Method Detail

      • setReadListener

        public void setReadListener​(ReadListener listener)
      • isReady

        public boolean isReady()
      • onDataAvailable

        public void onDataAvailable()
      • sendAllDataReadEvent

        public boolean sendAllDataReadEvent()
      • isTrailerFieldsReady

        public boolean isTrailerFieldsReady()
      • getTrailerFields

        public java.util.Map<java.lang.String,​java.lang.String> getTrailerFields()
      • getURLDecoder

        public UDecoder getURLDecoder()
      • 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)
      • getRemotePort

        public int getRemotePort()
      • setRemotePort

        public void setRemotePort​(int port)
      • getLocalPort

        public int getLocalPort()
      • setLocalPort

        public void setLocalPort​(int port)
      • getCharacterEncoding

        public java.lang.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 java.nio.charset.Charset getCharset()
        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.
        Throws: - If the user agent has specified an invalid character encoding
      • setCharset

        public void setCharset​(java.nio.charset.Charset charset)
      • setContentLength

        public void setContentLength​(long len)
      • getContentLength

        public int getContentLength()
      • getContentLengthLong

        public long getContentLengthLong()
      • getContentType

        public java.lang.String getContentType()
      • setContentType

        public void setContentType​(java.lang.String type)
      • setContentType

        public void setContentType​(MessageBytes mb)
      • getHeader

        public java.lang.String getHeader​(java.lang.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,
                           java.lang.Object param)
      • getParameters

        public Parameters getParameters()
      • addPathParameter

        public void addPathParameter​(java.lang.String name,
                                     java.lang.String value)
      • getPathParameter

        public java.lang.String getPathParameter​(java.lang.String name)
      • setAttribute

        public void setAttribute​(java.lang.String name,
                                 java.lang.Object o)
      • getAttributes

        public java.util.HashMap<java.lang.String,​java.lang.Object> getAttributes()
      • getAttribute

        public java.lang.Object getAttribute​(java.lang.String name)
      • getRemoteUserNeedsAuthorization

        public boolean getRemoteUserNeedsAuthorization()
      • setRemoteUserNeedsAuthorization

        public void setRemoteUserNeedsAuthorization​(boolean remoteUserNeedsAuthorization)
      • 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()
      • setInputBuffer

        public void setInputBuffer​(InputBuffer inputBuffer)
      • doRead

        public int doRead​(ApplicationBufferHandler handler)
        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
        Throws: - If an I/O error occurs during the copy
      • setErrorException

        public void setErrorException​(java.lang.Exception ex)
        Set the error Exception that occurred during the writing of the response processing.
        ex - The exception that occurred
      • getErrorException

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

        public boolean isExceptionPresent()
      • toString

        public java.lang.String toString()
        toString in class java.lang.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,
                            java.lang.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 java.lang.Object getNote​(int pos)
      • recycle

        public void recycle()
      • updateCounters

        public void updateCounters()
      • getRequestProcessor

        public RequestInfo getRequestProcessor()
      • getBytesRead

        public long getBytesRead()
      • isProcessing

        public boolean isProcessing()