# 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

Modifier and Type
Method
Description
`void`
`action(ActionCode actionCode, Object param)`
`void`
`addPathParameter(String name, String value)`
`void`
`clearRequestThread()`
`MessageBytes`
`contentType()`
`MessageBytes`
`decodedURI()`
`int`
`doRead(ApplicationBufferHandler handler)`
Read data from the input buffer and put it into ApplicationBufferHandler.
`Object`
`getAttribute(String name)`
`HashMap<String,Object>`
`getAttributes()`
`MessageBytes`
`getAuthType()`
`int`
`getAvailable()`
`long`
`getBytesRead()`
`String`
`getCharacterEncoding()`
Deprecated.
Unused.
`Charset`
`getCharset()`
Deprecated.
Unused.
`CharsetHolder`
`getCharsetHolder()`
`int`
`getContentLength()`
`long`
`getContentLengthLong()`
`String`
`getContentType()`
`ServerCookies`
`getCookies()`
`Exception`
`getErrorException()`
Get the Exception that occurred during the writing of the response.
`String`
`getHeader(String name)`
`InputBuffer`
`getInputBuffer()`
`int`
`getLocalPort()`
`MimeHeaders`
`getMimeHeaders()`
`MimeHeaders`
`getMimeTrailerFields()`
`Object`
`getNote(int pos)`
`Parameters`
`getParameters()`
`String`
`getPathParameter(String name)`
`String`
`getProtocolRequestId()`
`ReadListener`
`getReadListener()`
`int`
`getRemotePort()`
`MessageBytes`
`getRemoteUser()`
`boolean`
`getRemoteUserNeedsAuthorization()`
`String`
`getRequestId()`
`RequestInfo`
`getRequestProcessor()`
`Response`
`getResponse()`
`boolean`
`getSendfile()`
`int`
`getServerPort()`
`ServletConnection`
`getServletConnection()`
`long`
`getStartTime()`
`long`
`getStartTimeNanos()`
`boolean`
`getSupportsRelativeRedirects()`
`long`
`getThreadId()`
`Map<String,String>`
`getTrailerFields()`
`UDecoder`
`getURLDecoder()`
`boolean`
`hasExpectation()`
`boolean`
`isExceptionPresent()`
`boolean`
`isFinished()`
`boolean`
`isProcessing()`
`boolean`
`isReady()`
`boolean`
`isRequestThread()`
`boolean`
`isTrailerFieldsReady()`
`MessageBytes`
`localAddr()`
`MessageBytes`
`localName()`
`MessageBytes`
`method()`
`void`
`onDataAvailable()`
`MessageBytes`
`peerAddr()`
`MessageBytes`
`protocol()`
`MessageBytes`
`queryString()`
`void`
`recycle()`
`MessageBytes`
`remoteAddr()`
`MessageBytes`
`remoteHost()`
`MessageBytes`
`requestURI()`
`MessageBytes`
`scheme()`
`boolean`
`sendAllDataReadEvent()`
`MessageBytes`
`serverName()`
Get the "virtual host", derived from the Host: header associated with this request.
`void`
`setAttribute(String name, Object o)`
`void`
`setAvailable(int available)`
`void`
`setCharset(Charset charset)`
Deprecated.
Unused.
`void`
`setCharsetHolder(CharsetHolder charsetHolder)`
`void`
`setContentLength(long len)`
`void`
`setContentType(String type)`
`void`
`setContentType(MessageBytes mb)`
`void`
`setErrorException(Exception ex)`
Set the error Exception that occurred during the writing of the response processing.
`void`
`setExpectation(boolean expectation)`
`protected void`
`setHook(ActionHook hook)`
`void`
`setInputBuffer(InputBuffer inputBuffer)`
`void`
`setLocalPort(int port)`
`void`
`setNote(int pos, Object value)`
Used to store private data.
`void`
`setReadListener(ReadListener listener)`
`void`
`setRemotePort(int port)`
`void`
`setRemoteUserNeedsAuthorization(boolean remoteUserNeedsAuthorization)`
`void`
`setRequestThread()`
`void`
`setResponse(Response response)`
`void`
`setSendfile(boolean sendfile)`
`void`
`setServerPort(int serverPort)`
`void`
`setStartTimeNanos(long startTimeNanos)`
`String`
`toString()`
`void`
`updateCounters()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### Request

public Request()

## Method Details

### 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()

### getTrailerFields

public Map<String,String> getTrailerFields()

### getMimeTrailerFields

public MimeHeaders getMimeTrailerFields()

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

@Deprecated public String getCharacterEncoding()
Deprecated.
Unused. This method will be removed in Tomcat 12.
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

@Deprecated public Charset getCharset() throws UnsupportedEncodingException
Deprecated.
Unused. This method will be removed in Tomcat 12.
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

@Deprecated public void setCharset(Charset charset)
Deprecated.
Unused. This method will be removed in Tomcat 12.
Unused.

Parameters:
  `charset` - The Charset to use for the request

### getCharsetHolder

public CharsetHolder getCharsetHolder()

### setCharsetHolder

public void setCharsetHolder(CharsetHolder charsetHolder)

### 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)

### getHeader

public String getHeader(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, Object param)

### getCookies

public ServerCookies getCookies()

### 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)

### getAttributes

public HashMap<String,Object> getAttributes()

### getAttribute

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

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### getStartTime

public long getStartTime()

### 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()