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
- 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaction(ActionCode actionCode, java.lang.Object param)voidaddPathParameter(java.lang.String name, java.lang.String value)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.StringgetHeader(java.lang.String name)InputBuffergetInputBuffer()intgetLocalPort()MimeHeadersgetMimeHeaders()java.lang.ObjectgetNote(int pos)ParametersgetParameters()java.lang.StringgetPathParameter(java.lang.String name)ReadListenergetReadListener()intgetRemotePort()MessageBytesgetRemoteUser()booleangetRemoteUserNeedsAuthorization()RequestInfogetRequestProcessor()ResponsegetResponse()booleangetSendfile()intgetServerPort()longgetStartTime()booleangetSupportsRelativeRedirects()java.util.Map<java.lang.String,java.lang.String>getTrailerFields()UDecodergetURLDecoder()booleanhasExpectation()booleanisFinished()booleanisProcessing()booleanisTrailerFieldsReady()MessageByteslocalAddr()MessageByteslocalName()MessageBytesmethod()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)voidsetExpectation(boolean expectation)protected voidsetHook(ActionHook hook)voidsetInputBuffer(InputBuffer inputBuffer)voidsetLocalPort(int port)voidsetNote(int pos, java.lang.Object value)Used to store private data.voidsetReadListener(ReadListener listener)voidsetRemotePort(int port)voidsetRemoteUserNeedsAuthorization(boolean remoteUserNeedsAuthorization)voidsetResponse(Response response)voidsetSendfile(boolean sendfile)voidsetServerPort(int serverPort)voidsetStartTime(long startTime)java.lang.StringtoString()voidupdateCounters()
-
-
-
Method Detail
-
getReadListener
public ReadListener getReadListener()
-
setReadListener
public void setReadListener(ReadListener listener)
-
sendAllDataReadEvent
public boolean sendAllDataReadEvent()
-
getMimeHeaders
public MimeHeaders getMimeHeaders()
-
isTrailerFieldsReady
public boolean isTrailerFieldsReady()
-
getTrailerFields
public java.util.Map<java.lang.String,java.lang.String> getTrailerFields()
-
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()
-
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)
-
setHook
protected void setHook(ActionHook hook)
-
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
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getStartTime
public long getStartTime()
-
setStartTime
public void setStartTime(long startTime)
-
setNote
public final 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 final 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()
-
-