Package org.apache.coyote
Class Request
- java.lang.Object
-
- org.apache.coyote.Request
-
public final class Request extends java.lang.ObjectThis 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
-
-
Field Summary
Fields Modifier and Type Field Description static intNOTE_BAD_REQUEST
-
Constructor Summary
Constructors Constructor Description Request()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaction(ActionCode actionCode, java.lang.Object param)voidaddPathParameter(java.lang.String name, java.lang.String value)voidclearRequestThread()MessageBytescontentType()MessageBytesdecodedURI()intdoRead(ApplicationBufferHandler handler)Read data from the input buffer and put it into ApplicationBufferHandler.java.lang.ObjectgetAttribute(java.lang.String name)java.util.HashMap<java.lang.String,java.lang.Object>getAttributes()MessageBytesgetAuthType()intgetAvailable()longgetBytesRead()java.lang.StringgetCharacterEncoding()Get the character encoding used for this request.java.nio.charset.CharsetgetCharset()Get the character encoding used for this request.intgetContentLength()longgetContentLengthLong()java.lang.StringgetContentType()ServerCookiesgetCookies()java.lang.ExceptiongetErrorException()Get the Exception that occurred during the writing of the response.java.lang.StringgetHeader(java.lang.String name)InputBuffergetInputBuffer()intgetLocalPort()java.lang.StringgetMethod()MimeHeadersgetMimeHeaders()MimeHeadersgetMimeTrailerFields()java.lang.ObjectgetNote(int pos)ParametersgetParameters()java.lang.StringgetPathParameter(java.lang.String name)java.lang.StringgetProtocolRequestId()ReadListenergetReadListener()intgetRemotePort()MessageBytesgetRemoteUser()booleangetRemoteUserNeedsAuthorization()java.lang.StringgetRequestId()RequestInfogetRequestProcessor()ResponsegetResponse()booleangetSendfile()intgetServerPort()ServletConnectiongetServletConnection()java.time.InstantgetStartInstant()longgetStartTime()longgetStartTimeNanos()booleangetSupportsRelativeRedirects()longgetThreadId()java.util.Map<java.lang.String,java.lang.String>getTrailerFields()UDecodergetURLDecoder()booleanhasExpectation()booleanisExceptionPresent()booleanisFinished()booleanisProcessing()booleanisReady()booleanisRequestThread()booleanisTrailerFieldsReady()MessageByteslocalAddr()MessageByteslocalName()voidmarkStartTime()MessageBytesmethod()Deprecated.voidonDataAvailable()MessageBytespeerAddr()MessageBytesprotocol()MessageBytesqueryString()voidrecycle()MessageBytesremoteAddr()MessageBytesremoteHost()MessageBytesrequestURI()MessageBytesscheme()booleansendAllDataReadEvent()MessageBytesserverName()Get the "virtual host", derived from the Host: header associated with this request.voidsetAttribute(java.lang.String name, java.lang.Object o)voidsetAvailable(int available)voidsetCharset(java.nio.charset.Charset charset)voidsetContentLength(long len)voidsetContentType(java.lang.String type)voidsetContentType(MessageBytes mb)voidsetErrorException(java.lang.Exception ex)Set the error Exception that occurred during the writing of the response processing.voidsetExpectation(boolean expectation)voidsetInputBuffer(InputBuffer inputBuffer)voidsetLocalPort(int port)voidsetMethod(byte[] buf, int start, int len)voidsetMethod(java.lang.String method)voidsetNote(int pos, java.lang.Object value)Used to store private data.voidsetReadListener(ReadListener listener)voidsetRemotePort(int port)voidsetRemoteUserNeedsAuthorization(boolean remoteUserNeedsAuthorization)voidsetRequestThread()voidsetResponse(Response response)voidsetSendfile(boolean sendfile)voidsetServerPort(int serverPort)voidsetStartTime(long startTime)Deprecated.This setter will be removed in Tomcat 11.voidsetStartTimeNanos(long startTimeNanos)Deprecated.Unused.java.lang.StringtoString()voidupdateCounters()
-
-
-
Field Detail
-
NOTE_BAD_REQUEST
public static final int NOTE_BAD_REQUEST
- See Also:
- Constant Field Values
-
-
Method Detail
-
getReadListener
public ReadListener getReadListener()
-
setReadListener
public void setReadListener(ReadListener listener)
-
isReady
public boolean isReady()
-
onDataAvailable
public void onDataAvailable() throws java.io.IOException- Throws:
java.io.IOException
-
sendAllDataReadEvent
public boolean sendAllDataReadEvent()
-
getMimeHeaders
public MimeHeaders getMimeHeaders()
-
isTrailerFieldsReady
public boolean isTrailerFieldsReady()
-
getTrailerFields
public java.util.Map<java.lang.String,java.lang.String> getTrailerFields()
-
getMimeTrailerFields
public MimeHeaders getMimeTrailerFields()
-
getURLDecoder
public UDecoder getURLDecoder()
-
scheme
public MessageBytes scheme()
-
method
@Deprecated public MessageBytes method()
Deprecated.Get a MessageBytes instance that holds the current request's HTTP method.- Returns:
- a MessageBytes instance that holds the current request's HTTP method.
-
setMethod
public void setMethod(java.lang.String method)
-
setMethod
public void setMethod(byte[] buf, int start, int len)
-
getMethod
public java.lang.String getMethod()
-
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 java.lang.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 java.nio.charset.Charset getCharset() throws java.io.UnsupportedEncodingExceptionGet 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:
java.io.UnsupportedEncodingException- 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)
-
contentType
public MessageBytes contentType()
-
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)
-
action
public void action(ActionCode actionCode, java.lang.Object param)
-
getCookies
public ServerCookies getCookies()
-
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)
-
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 java.io.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:
java.io.IOException- 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.- Parameters:
ex- The exception that occurred
-
getErrorException
public java.lang.Exception getErrorException()
Get the Exception that occurred during the writing of the response.- Returns:
- The exception that occurred
-
isExceptionPresent
public boolean isExceptionPresent()
-
getRequestId
public java.lang.String getRequestId()
-
getProtocolRequestId
public java.lang.String getProtocolRequestId()
-
getServletConnection
public ServletConnection getServletConnection()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getStartTime
public long getStartTime()
-
getStartTimeNanos
public long getStartTimeNanos()
-
setStartTime
@Deprecated public void setStartTime(long startTime)
Deprecated.This setter will be removed in Tomcat 11. UsemarkStartTime().- Parameters:
startTime- time
-
setStartTimeNanos
@Deprecated public void setStartTimeNanos(long startTimeNanos)
Deprecated.Unused. Will be removed in Tomcat 12 onwards. UsemarkStartTime().Set the start time using the value provided bySystem.nanoTime().- Parameters:
startTimeNanos- The value returned fromSystem.nanoTime()at the point the requests started.
-
markStartTime
public void markStartTime()
-
getStartInstant
public java.time.Instant getStartInstant()
-
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.- Parameters:
pos- Index to use to store the notevalue- 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()
-
-