Package org.apache.coyote
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 Summary
Constructors Constructor Description Request()
-
Method Summary
-
-
-
Method Detail
-
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()
-
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)
-
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()
-
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()
-
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 notevalue
- 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()
-
-