org.apache.coyote
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.
For lazy evaluation, the request uses the getInfo() hook. The following ids
are defined:
- req.encoding - returns the request encoding
- req.attribute - returns a module-specific attribute ( like SSL keys, etc ).
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
public Request()
public void action(
ActionCode actionCode, Object param)
Read data from the input buffer and put it into a byte chunk.
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.
public Object getAttribute(String name)
public HashMap getAttributes()
public int getAvailable()
public int getBytesRead()
public String getCharacterEncoding()
Get the character encoding used for this request.
public int getContentLength()
public long getContentLengthLong()
public String getContentType()
public String getHeader(String name)
public int getLocalPort()
public final Object getNote(int pos)
public int getRemotePort()
public int getServerPort()
public long getStartTime()
Get the instance id (or JVM route). Curently Ajp is sending it with each
request. In future this should be fixed, and sent only once ( or
'negociated' at config time so both tomcat and apache share the same name.
Returns: the instance id
public void recycle()
Return the buffer holding the server name, if
any. Use isNull() to check if there is no value
set.
This is the "virtual host", derived from the
Host: header.
public void setAttribute(String name, Object o)
public void setAvailable(int available)
public void setBytesRead(int bytesRead)
public void setCharacterEncoding(String enc)
public void setContentLength(int len)
public void setContentType(String type)
public void setLocalPort(int port)
public final 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 a array access, may
be faster than ThreadLocal for very frequent operations.
Example use:
Jk:
HandlerRequest.HOSTBUFFER = 10 CharChunk, buffer for Host decoding
WorkerEnv: SSL_CERT_NOTE=16 - MessageBytes containing the cert
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.
public void setRemotePort(int port)
public void setResponse(
Response response)
public void setServerPort(int serverPort)
public void setStartTime(long startTime)
public String toString()
public void updateCounters()
Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.