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
    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 Detail

      • Request

        public Request()
    • Method Detail

      • setReadListener

        public void setReadListener​(ReadListener listener)
      • isReady

        public boolean isReady()
      • sendAllDataReadEvent

        public boolean sendAllDataReadEvent()
      • isTrailerFieldsReady

        public boolean isTrailerFieldsReady()
      • getURLDecoder

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

        public void setContentType​(MessageBytes mb)
      • 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)
      • 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)
      • getAttribute

        public Object getAttribute​(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)
                   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()
      • 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()