org.eclipse.jetty.server

## Class Request

- java.lang.Object
- - org.eclipse.jetty.server.Request

All Implemented Interfaces:
  javax.servlet.http.HttpServletRequest, javax.servlet.ServletRequest

Direct Known Subclasses:
  Ajp13Request, NestedRequest

    public class Request
    extends Object
    implements javax.servlet.http.HttpServletRequest

Jetty Request.

Implements `HttpServletRequest` from the `javax.servlet.http` package.

The standard interface of mostly getters, is extended with setters so that the request is mutable by the handlers that it is passed to. This allows the request object to be as lightweight as possible and not actually implement any significant behavior. For example

- The `getContextPath()` method will return null, until the request has been passed to a `ContextHandler` which matches the `getPathInfo()` with a context path and calls `setContextPath(String)` as a result.
- the HTTP session methods will all return null sessions until such time as a request has been passed to a `SessionHandler` which checks for session cookies and enables the ability to create new sessions.
- The `getServletPath()` method will return null until the request has been passed to a `org.eclipse.jetty.servlet.ServletHandler` and the pathInfo matched against the servlet URL patterns and `setServletPath(String)` called as a result.

A request instance is created for each `AbstractHttpConnection` accepted by the server and recycled for each HTTP request received via that connection. An effort is made to avoid reparsing headers and cookies that are likely to be the same for requests from the same connection.

The form content that a request can process is limited to protect from Denial of Service attacks. The size in bytes is limited by `ContextHandler.getMaxFormContentSize()` or if there is no context then the "org.eclipse.jetty.server.Request.maxFormContentSize" `Server` attribute. The number of parameters keys is limited by `ContextHandler.getMaxFormKeys()` or if there is no context then the "org.eclipse.jetty.server.Request.maxFormKeys" `Server` attribute.

### Field Summary

Fields
`protected AsyncContinuation` `_async`
`protected AbstractHttpConnection` `_connection`

### Fields inherited from interface javax.servlet.http.HttpServletRequest

`BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH`

### Constructor Summary

Constructors
Constructor and Description
`Request()`
`Request(AbstractHttpConnection connection)`

### Method Summary

Methods
`void` `addEventListener(EventListener listener)`
`void` `extractParameters()` Extract Parameters from query string and/or form _content.
`AsyncContext` `getAsyncContext()`
`AsyncContinuation` `getAsyncContinuation()`
`Object` `getAttribute(String name)`
`Enumeration` `getAttributeNames()`
`Attributes` `getAttributes()`
`Authentication` `getAuthentication()` Get the authentication.
`String` `getAuthType()`
`String` `getCharacterEncoding()`
`AbstractHttpConnection` `getConnection()`
`int` `getContentLength()`
`long` `getContentRead()`
`String` `getContentType()`
`ContextHandler.Context` `getContext()`
`String` `getContextPath()`
`javax.servlet.http.Cookie[]` `getCookies()`
`long` `getDateHeader(String name)`
`DispatcherType` `getDispatcherType()`
`long` `getDispatchTime()` Get timestamp of the request dispatch
`String` `getHeader(String name)`
`Enumeration` `getHeaderNames()`
`Enumeration` `getHeaders(String name)`
`int` `getInputState()`
`javax.servlet.ServletInputStream` `getInputStream()`
`int` `getIntHeader(String name)`
`String` `getLocalAddr()`
`Locale` `getLocale()`
`Enumeration` `getLocales()`
`String` `getLocalName()`
`int` `getLocalPort()`
`String` `getMethod()`
`String` `getParameter(String name)`
`Map` `getParameterMap()`
`Enumeration` `getParameterNames()`
`MultiMap<String>` `getParameters()`
`String[]` `getParameterValues(String name)`
`String` `getPathInfo()`
`String` `getPathTranslated()`
`String` `getProtocol()`
`String` `getQueryEncoding()`
`String` `getQueryString()`
`BufferedReader` `getReader()`
`String` `getRealPath(String path)`
`String` `getRemoteAddr()`
`String` `getRemoteHost()`
`int` `getRemotePort()`
`String` `getRemoteUser()`
`static Request` `getRequest(javax.servlet.http.HttpServletRequest request)`
`javax.servlet.RequestDispatcher` `getRequestDispatcher(String path)`
`String` `getRequestedSessionId()`
`String` `getRequestURI()`
`StringBuffer` `getRequestURL()`
`UserIdentity` `getResolvedUserIdentity()`
`Response` `getResponse()`
`StringBuilder` `getRootURL()` Reconstructs the URL the client used to make the request.
`String` `getScheme()`
`String` `getServerName()`
`int` `getServerPort()`
`javax.servlet.ServletContext` `getServletContext()`
`String` `getServletName()`
`String` `getServletPath()`
`javax.servlet.ServletResponse` `getServletResponse()`
`javax.servlet.http.HttpSession` `getSession()`
`javax.servlet.http.HttpSession` `getSession(boolean create)`
`SessionManager` `getSessionManager()`
`long` `getTimeStamp()` Get Request TimeStamp
`Buffer` `getTimeStampBuffer()` Get Request TimeStamp
`HttpURI` `getUri()`
`UserIdentity` `getUserIdentity()`
`UserIdentity.Scope` `getUserIdentityScope()`
`Principal` `getUserPrincipal()`
`boolean` `isAsyncSupported()`
`boolean` `isHandled()`
`boolean` `isRequestedSessionIdFromCookie()`
`boolean` `isRequestedSessionIdFromUrl()`
`boolean` `isRequestedSessionIdFromURL()`
`boolean` `isRequestedSessionIdValid()`
`boolean` `isSecure()`
`boolean` `isUserInRole(String role)`
`void` `mergeQueryString(String query)` Merge in a new query string.
`javax.servlet.http.HttpSession` `recoverNewSession(Object key)`
`protected void` `recycle()`
`void` `removeAttribute(String name)`
`void` `removeEventListener(EventListener listener)`
`void` `saveNewSession(Object key, javax.servlet.http.HttpSession session)`
`void` `setAsyncSupported(boolean supported)`
`void` `setAttribute(String name, Object value)`
`void` `setAttributes(Attributes attributes)`
`void` `setAuthentication(Authentication authentication)` Set the authentication.
`void` `setCharacterEncoding(String encoding)`
`void` `setCharacterEncodingUnchecked(String encoding)`
`protected void` `setConnection(AbstractHttpConnection connection)`
`void` `setContentType(String contentType)`
`void` `setContext(ContextHandler.Context context)` Set request context
`void` `setContextPath(String contextPath)` Sets the "context path" for this request
`void` `setCookies(javax.servlet.http.Cookie[] cookies)`
`void` `setDispatcherType(DispatcherType type)`
`void` `setDispatchTime(long value)` Set timetstamp of request dispatch
`void` `setHandled(boolean h)`
`void` `setMethod(String method)`
`void` `setParameters(MultiMap<String> parameters)`
`void` `setPathInfo(String pathInfo)`
`void` `setProtocol(String protocol)`
`void` `setQueryEncoding(String queryEncoding)` Set the character encoding used for the query string.
`void` `setQueryString(String queryString)`
`void` `setRemoteAddr(String addr)`
`void` `setRemoteHost(String host)`
`void` `setRequestedSessionId(String requestedSessionId)`
`void` `setRequestedSessionIdFromCookie(boolean requestedSessionIdCookie)`
`void` `setRequestURI(String requestURI)`
`void` `setScheme(String scheme)`
`void` `setServerName(String host)`
`void` `setServerPort(int port)`
`void` `setServletPath(String servletPath)`
`void` `setSession(javax.servlet.http.HttpSession session)`
`void` `setSessionManager(SessionManager sessionManager)`
`void` `setTimeStamp(long ts)`
`void` `setUri(HttpURI uri)`
`void` `setUserIdentityScope(UserIdentity.Scope scope)`
`AsyncContext` `startAsync()`
`AsyncContext` `startAsync(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse)`
`boolean` `takeNewContext()`
`String` `toString()`

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

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

### Field Detail

#### _async

    protected final AsyncContinuation _async

#### _connection

    protected AbstractHttpConnection _connection

### Constructor Detail

#### Request

    public Request()

#### Request

    public Request(AbstractHttpConnection connection)

### Method Detail

#### getRequest

    public static Request getRequest(javax.servlet.http.HttpServletRequest request)

#### addEventListener

    public void addEventListener(EventListener listener)

#### extractParameters

    public void extractParameters()

Extract Parameters from query string and/or form _content.

#### getAsyncContext

    public AsyncContext getAsyncContext()

#### getAsyncContinuation

    public AsyncContinuation getAsyncContinuation()

#### getAttribute

    public Object getAttribute(String name)

Specified by:
  `getAttribute` in interface `javax.servlet.ServletRequest`

#### getAttributeNames

    public Enumeration getAttributeNames()

Specified by:
  `getAttributeNames` in interface `javax.servlet.ServletRequest`

#### getAttributes

    public Attributes getAttributes()

#### getAuthentication

    public Authentication getAuthentication()

Get the authentication.

Returns:
  the authentication

#### getAuthType

    public String getAuthType()

Specified by:
  `getAuthType` in interface `javax.servlet.http.HttpServletRequest`

#### getCharacterEncoding

    public String getCharacterEncoding()

Specified by:
  `getCharacterEncoding` in interface `javax.servlet.ServletRequest`

#### getConnection

    public AbstractHttpConnection getConnection()

Returns:
  Returns the connection.

#### getContentLength

    public int getContentLength()

Specified by:
  `getContentLength` in interface `javax.servlet.ServletRequest`

#### getContentRead

    public long getContentRead()

#### getContentType

    public String getContentType()

Specified by:
  `getContentType` in interface `javax.servlet.ServletRequest`

#### getContext

    public ContextHandler.Context getContext()

Returns:
  The current `context` used for this request, or `null` if `setContext(org.eclipse.jetty.server.handler.ContextHandler.Context)` has not yet been called.

#### getContextPath

    public String getContextPath()

Specified by:
  `getContextPath` in interface `javax.servlet.http.HttpServletRequest`

#### getCookies

    public javax.servlet.http.Cookie[] getCookies()

Specified by:
  `getCookies` in interface `javax.servlet.http.HttpServletRequest`

#### getDateHeader

    public long getDateHeader(String name)

Specified by:
  `getDateHeader` in interface `javax.servlet.http.HttpServletRequest`

#### getDispatcherType

    public DispatcherType getDispatcherType()

#### getHeader

    public String getHeader(String name)

Specified by:
  `getHeader` in interface `javax.servlet.http.HttpServletRequest`

#### getHeaderNames

    public Enumeration getHeaderNames()

Specified by:
  `getHeaderNames` in interface `javax.servlet.http.HttpServletRequest`

#### getHeaders

    public Enumeration getHeaders(String name)

Specified by:
  `getHeaders` in interface `javax.servlet.http.HttpServletRequest`

#### getInputState

    public int getInputState()

Returns:
  Returns the inputState.

#### getInputStream

    public javax.servlet.ServletInputStream getInputStream()
                                                    throws IOException

Specified by:
  `getInputStream` in interface `javax.servlet.ServletRequest`
Throws:
  `IOException`

#### getIntHeader

    public int getIntHeader(String name)

Specified by:
  `getIntHeader` in interface `javax.servlet.http.HttpServletRequest`

#### getLocalAddr

    public String getLocalAddr()

Specified by:
  `getLocalAddr` in interface `javax.servlet.ServletRequest`

#### getLocale

    public Locale getLocale()

Specified by:
  `getLocale` in interface `javax.servlet.ServletRequest`

#### getLocales

    public Enumeration getLocales()

Specified by:
  `getLocales` in interface `javax.servlet.ServletRequest`

#### getLocalName

    public String getLocalName()

Specified by:
  `getLocalName` in interface `javax.servlet.ServletRequest`

#### getLocalPort

    public int getLocalPort()

Specified by:
  `getLocalPort` in interface `javax.servlet.ServletRequest`

#### getMethod

    public String getMethod()

Specified by:
  `getMethod` in interface `javax.servlet.http.HttpServletRequest`

#### getParameter

    public String getParameter(String name)

Specified by:
  `getParameter` in interface `javax.servlet.ServletRequest`

#### getParameterMap

    public Map getParameterMap()

Specified by:
  `getParameterMap` in interface `javax.servlet.ServletRequest`

#### getParameterNames

    public Enumeration getParameterNames()

Specified by:
  `getParameterNames` in interface `javax.servlet.ServletRequest`

#### getParameters

    public MultiMap<String> getParameters()

Returns:
  Returns the parameters.

#### getParameterValues

    public String[] getParameterValues(String name)

Specified by:
  `getParameterValues` in interface `javax.servlet.ServletRequest`

#### getPathInfo

    public String getPathInfo()

Specified by:
  `getPathInfo` in interface `javax.servlet.http.HttpServletRequest`

#### getPathTranslated

    public String getPathTranslated()

Specified by:
  `getPathTranslated` in interface `javax.servlet.http.HttpServletRequest`

#### getProtocol

    public String getProtocol()

Specified by:
  `getProtocol` in interface `javax.servlet.ServletRequest`

#### getQueryEncoding

    public String getQueryEncoding()

#### getQueryString

    public String getQueryString()

Specified by:
  `getQueryString` in interface `javax.servlet.http.HttpServletRequest`

#### getReader

    public BufferedReader getReader()
                             throws IOException

Specified by:
  `getReader` in interface `javax.servlet.ServletRequest`
Throws:
  `IOException`

#### getRealPath

    public String getRealPath(String path)

Specified by:
  `getRealPath` in interface `javax.servlet.ServletRequest`

#### getRemoteAddr

    public String getRemoteAddr()

Specified by:
  `getRemoteAddr` in interface `javax.servlet.ServletRequest`

#### getRemoteHost

    public String getRemoteHost()

Specified by:
  `getRemoteHost` in interface `javax.servlet.ServletRequest`

#### getRemotePort

    public int getRemotePort()

Specified by:
  `getRemotePort` in interface `javax.servlet.ServletRequest`

#### getRemoteUser

    public String getRemoteUser()

Specified by:
  `getRemoteUser` in interface `javax.servlet.http.HttpServletRequest`

#### getRequestDispatcher

    public javax.servlet.RequestDispatcher getRequestDispatcher(String path)

Specified by:
  `getRequestDispatcher` in interface `javax.servlet.ServletRequest`

#### getRequestedSessionId

    public String getRequestedSessionId()

Specified by:
  `getRequestedSessionId` in interface `javax.servlet.http.HttpServletRequest`

#### getRequestURI

    public String getRequestURI()

Specified by:
  `getRequestURI` in interface `javax.servlet.http.HttpServletRequest`

#### getRequestURL

    public StringBuffer getRequestURL()

Specified by:
  `getRequestURL` in interface `javax.servlet.http.HttpServletRequest`

#### getResponse

    public Response getResponse()

#### getRootURL

    public StringBuilder getRootURL()

Reconstructs the URL the client used to make the request. The returned URL contains a protocol, server name, port number, and, but it does not include a path.

Because this method returns a `StringBuffer`, not a string, you can modify the URL easily, for example, to append path and query parameters. This method is useful for creating redirect messages and for reporting errors.

Returns:
  "scheme://host:port"

#### getScheme

    public String getScheme()

Specified by:
  `getScheme` in interface `javax.servlet.ServletRequest`

#### getServerName

    public String getServerName()

Specified by:
  `getServerName` in interface `javax.servlet.ServletRequest`

#### getServerPort

    public int getServerPort()

Specified by:
  `getServerPort` in interface `javax.servlet.ServletRequest`

#### getServletContext

    public javax.servlet.ServletContext getServletContext()

#### getServletName

    public String getServletName()

#### getServletPath

    public String getServletPath()

Specified by:
  `getServletPath` in interface `javax.servlet.http.HttpServletRequest`

#### getServletResponse

    public javax.servlet.ServletResponse getServletResponse()

#### getSession

    public javax.servlet.http.HttpSession getSession()

Specified by:
  `getSession` in interface `javax.servlet.http.HttpServletRequest`

#### getSession

    public javax.servlet.http.HttpSession getSession(boolean create)

Specified by:
  `getSession` in interface `javax.servlet.http.HttpServletRequest`

#### getSessionManager

    public SessionManager getSessionManager()

Returns:
  Returns the sessionManager.

#### getTimeStamp

    public long getTimeStamp()

Get Request TimeStamp

Returns:
  The time that the request was received.

#### getTimeStampBuffer

    public Buffer getTimeStampBuffer()

Get Request TimeStamp

Returns:
  The time that the request was received.

#### getUri

    public HttpURI getUri()

Returns:
  Returns the uri.

#### getUserIdentity

    public UserIdentity getUserIdentity()

#### getResolvedUserIdentity

    public UserIdentity getResolvedUserIdentity()

Returns:
  The resolved user Identity, which may be null if the `Authentication` is not `Authentication.User` (eg. `Authentication.Deferred`).

#### getUserIdentityScope

    public UserIdentity.Scope getUserIdentityScope()

#### getUserPrincipal

    public Principal getUserPrincipal()

Specified by:
  `getUserPrincipal` in interface `javax.servlet.http.HttpServletRequest`

#### getDispatchTime

    public long getDispatchTime()

Get timestamp of the request dispatch

Returns:
  timestamp

#### isHandled

    public boolean isHandled()

#### isAsyncSupported

    public boolean isAsyncSupported()

#### isRequestedSessionIdFromCookie

    public boolean isRequestedSessionIdFromCookie()

Specified by:
  `isRequestedSessionIdFromCookie` in interface `javax.servlet.http.HttpServletRequest`

#### isRequestedSessionIdFromUrl

    public boolean isRequestedSessionIdFromUrl()

Specified by:
  `isRequestedSessionIdFromUrl` in interface `javax.servlet.http.HttpServletRequest`

#### isRequestedSessionIdFromURL

    public boolean isRequestedSessionIdFromURL()

Specified by:
  `isRequestedSessionIdFromURL` in interface `javax.servlet.http.HttpServletRequest`

#### isRequestedSessionIdValid

    public boolean isRequestedSessionIdValid()

Specified by:
  `isRequestedSessionIdValid` in interface `javax.servlet.http.HttpServletRequest`

#### isSecure

    public boolean isSecure()

Specified by:
  `isSecure` in interface `javax.servlet.ServletRequest`

#### isUserInRole

    public boolean isUserInRole(String role)

Specified by:
  `isUserInRole` in interface `javax.servlet.http.HttpServletRequest`

#### recoverNewSession

    public javax.servlet.http.HttpSession recoverNewSession(Object key)

#### recycle

    protected void recycle()

#### removeAttribute

    public void removeAttribute(String name)

Specified by:
  `removeAttribute` in interface `javax.servlet.ServletRequest`

#### removeEventListener

    public void removeEventListener(EventListener listener)

#### saveNewSession

    public void saveNewSession(Object key,
                      javax.servlet.http.HttpSession session)

#### setAsyncSupported

    public void setAsyncSupported(boolean supported)

#### setAttribute

    public void setAttribute(String name,
                    Object value)

Specified by:
  `setAttribute` in interface `javax.servlet.ServletRequest`

#### setAttributes

    public void setAttributes(Attributes attributes)

#### setAuthentication

    public void setAuthentication(Authentication authentication)

Set the authentication.

Parameters:
  `authentication` - the authentication to set

#### setCharacterEncoding

    public void setCharacterEncoding(String encoding)
                              throws UnsupportedEncodingException

Specified by:
  `setCharacterEncoding` in interface `javax.servlet.ServletRequest`
Throws:
  `UnsupportedEncodingException`

#### setCharacterEncodingUnchecked

    public void setCharacterEncodingUnchecked(String encoding)

#### setConnection

    protected final void setConnection(AbstractHttpConnection connection)

#### setContentType

    public void setContentType(String contentType)

#### setContext

    public void setContext(ContextHandler.Context context)

Set request context

Parameters:
  `context` - context object

#### takeNewContext

    public boolean takeNewContext()

Returns:
  True if this is the first call of `takeNewContext()` since the last `setContext(org.eclipse.jetty.server.handler.ContextHandler.Context)` call.

#### setContextPath

    public void setContextPath(String contextPath)

Sets the "context path" for this request

See Also:
  `HttpServletRequest.getContextPath()`

#### setCookies

    public void setCookies(javax.servlet.http.Cookie[] cookies)

Parameters:
  `cookies` - The cookies to set.

#### setDispatcherType

    public void setDispatcherType(DispatcherType type)

#### setHandled

    public void setHandled(boolean h)

#### setMethod

    public void setMethod(String method)

Parameters:
  `method` - The method to set.

#### setParameters

    public void setParameters(MultiMap<String> parameters)

Parameters:
  `parameters` - The parameters to set.

#### setPathInfo

    public void setPathInfo(String pathInfo)

Parameters:
  `pathInfo` - The pathInfo to set.

#### setProtocol

    public void setProtocol(String protocol)

Parameters:
  `protocol` - The protocol to set.

#### setQueryEncoding

    public void setQueryEncoding(String queryEncoding)

Set the character encoding used for the query string. This call will effect the return of getQueryString and getParamaters. It must be called before any geParameter methods. The request attribute "org.eclipse.jetty.server.server.Request.queryEncoding" may be set as an alternate method of calling setQueryEncoding.

Parameters:
  `queryEncoding` -

#### setQueryString

    public void setQueryString(String queryString)

Parameters:
  `queryString` - The queryString to set.

#### setRemoteAddr

    public void setRemoteAddr(String addr)

Parameters:
  `addr` - The address to set.

#### setRemoteHost

    public void setRemoteHost(String host)

Parameters:
  `host` - The host to set.

#### setRequestedSessionId

    public void setRequestedSessionId(String requestedSessionId)

Parameters:
  `requestedSessionId` - The requestedSessionId to set.

#### setRequestedSessionIdFromCookie

    public void setRequestedSessionIdFromCookie(boolean requestedSessionIdCookie)

Parameters:
  `requestedSessionIdCookie` - The requestedSessionIdCookie to set.

#### setRequestURI

    public void setRequestURI(String requestURI)

Parameters:
  `requestURI` - The requestURI to set.

#### setScheme

    public void setScheme(String scheme)

Parameters:
  `scheme` - The scheme to set.

#### setServerName

    public void setServerName(String host)

Parameters:
  `host` - The host to set.

#### setServerPort

    public void setServerPort(int port)

Parameters:
  `port` - The port to set.

#### setServletPath

    public void setServletPath(String servletPath)

Parameters:
  `servletPath` - The servletPath to set.

#### setSession

    public void setSession(javax.servlet.http.HttpSession session)

Parameters:
  `session` - The session to set.

#### setSessionManager

    public void setSessionManager(SessionManager sessionManager)

Parameters:
  `sessionManager` - The sessionManager to set.

#### setTimeStamp

    public void setTimeStamp(long ts)

#### setUri

    public void setUri(HttpURI uri)

Parameters:
  `uri` - The uri to set.

#### setUserIdentityScope

    public void setUserIdentityScope(UserIdentity.Scope scope)

#### setDispatchTime

    public void setDispatchTime(long value)

Set timetstamp of request dispatch

Parameters:
  `value` - timestamp

#### startAsync

    public AsyncContext startAsync()
                            throws IllegalStateException

Throws:
  `IllegalStateException`

#### startAsync

    public AsyncContext startAsync(javax.servlet.ServletRequest servletRequest,
                          javax.servlet.ServletResponse servletResponse)
                            throws IllegalStateException

Throws:
  `IllegalStateException`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### mergeQueryString

    public void mergeQueryString(String query)

Merge in a new query string. The query string is merged with the existing parameters and `setParameters(MultiMap)` and `setQueryString(String)` are called with the result. The merge is according to the rules of the servlet dispatch forward method.

Parameters:
  `query` - The query string to merge into the request.