Class Request
- All Implemented Interfaces:
javax.servlet.http.HttpServletRequest,javax.servlet.ServletRequest
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 aContextHandlerwhich matches thegetPathInfo()with a context path and callssetContext(Context,String)as a result. For some dispatch types (ie include and named dispatch) the context path may not reflect theServletContextset bysetContext(Context, String). - the HTTP session methods will all return null sessions until such time as a request has been passed to a
SessionHandlerwhich checks for session cookies and enables the ability to create new sessions. - The
getServletPath()method will return "" until the request has been passed to aorg.eclipse.jetty.servlet.ServletHandlerand the pathInfo matched against the servlet URL patterns andsetServletPathMapping(ServletPathMapping)called as a result.
A request instance is created for each connection 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.
Request instances are recycled, which combined with badly written asynchronous applications can result in calls on requests that have been reset. The code is written in a style to avoid NPE and ISE when such calls are made, as this has often proved generate exceptions that distraction from debugging such bad asynchronous applications. Instead, request methods attempt to not fail when called in an illegal state, so that hopefully the bad application will proceed to a major state event (eg calling AsyncContext.onComplete) which has better asynchronous guards, true atomic state and better failure behaviour that will assist in debugging.
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.
If IOExceptions or timeouts occur while reading form parameters, these are thrown as unchecked Exceptions: ether RuntimeIOException,
BadMessageException or RuntimeException as appropriate.
-
Field Summary
FieldsFields inherited from interface javax.servlet.http.HttpServletRequest
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddEventListener(EventListener listener) booleanauthenticate(javax.servlet.http.HttpServletResponse response) voidenterSession(javax.servlet.http.HttpSession s) Remember a session that this request has just entered.voidextractFormParameters(MultiMap<String> params) javax.servlet.AsyncContextgetAttribute(String name) Get Request Attribute.Get the authentication.static RequestgetBaseRequest(javax.servlet.ServletRequest request) Obtain the baseRequestinstance of aServletRequest, by coercion, unwrapping or special attribute.longGet the nanoTime at which the request arrived to a connector, obtained viaSystem.nanoTime().intlonglongjavax.servlet.http.Cookie[]longgetDateHeader(String name) javax.servlet.DispatcherTypegetHeaders(String name) javax.servlet.http.HttpServletMappingintjavax.servlet.ServletInputStreamintgetIntHeader(String name) intgetParameter(String name) String[]getParameterValues(String name) javax.servlet.http.PartCollection<javax.servlet.http.Part>getParts()Get the path in the context.getRealPath(String path) Deprecated.Access the underlying RemoteInetSocketAddressfor this request.intjavax.servlet.RequestDispatchergetRequestDispatcher(String path) Reconstructs the URL the client used to make the request.intjavax.servlet.ServletContextjavax.servlet.ServletResponsejavax.servlet.http.HttpSessionjavax.servlet.http.HttpSessiongetSession(boolean create) javax.servlet.http.HttpSessiongetSession(SessionHandler sessionHandler) Find a session that this request has already entered for the given SessionHandlerlongGet Request TimeStampbooleanbooleanbooleanbooleanbooleanisHead()booleanisPush()booleanbooleanbooleanDeprecated.booleanbooleanbooleanisSecure()booleanisUserInRole(String role) voidvoidlogout()voidmergeQueryParameters(String oldQuery, String newQuery) javax.servlet.http.PushBuildervoidCalled when the request is fully finished being handled.voidCalled when a response is about to be committed, ie sent back to the clientprotected voidrecycle()voidremoveAttribute(String name) voidremoveEventListener(EventListener listener) voidvoidvoidsetAsyncSupported(boolean supported, Object source) voidsetAttribute(String name, Object value) Set a request attribute. if the attribute name is "org.eclipse.jetty.server.server.Request.queryEncoding" then the value is also passed in a call tosetQueryEncoding(java.lang.String).voidsetAttributes(Attributes attributes) Set the attributes for the request.voidsetAuthentication(Authentication authentication) Set the authentication.voidsetCharacterEncoding(String encoding) voidsetCharacterEncodingUnchecked(String encoding) voidsetContentParameters(MultiMap<String> contentParameters) voidsetContentType(String contentType) voidsetContext(ContextHandler.Context context, String pathInContext) Set request context and path in the context.voidsetCookies(javax.servlet.http.Cookie[] cookies) voidsetDispatcherType(javax.servlet.DispatcherType type) voidsetHandled(boolean h) voidsetHttpFields(HttpFields fields) voidsetHttpURI(HttpURI uri) voidsetMetaData(MetaData.Request request) voidvoidsetQueryEncoding(String queryEncoding) Set the character encoding used for the query string.voidsetQueryParameters(MultiMap<String> queryParameters) voidvoidsetRequestedSessionId(String requestedSessionId) voidsetRequestedSessionIdFromCookie(boolean requestedSessionIdCookie) voidsetSecure(boolean secure) voidsetServletPathMapping(ServletPathMapping servletPathMapping) Set the servletPathMapping, the servletPath and the pathInfo.voidsetSession(javax.servlet.http.HttpSession session) voidsetSessionHandler(SessionHandler sessionHandler) voidsetTimeStamp(long ts) voidsetTrailerHttpFields(HttpFields trailers) voidjavax.servlet.AsyncContextjavax.servlet.AsyncContextstartAsync(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse) booleantoString()static javax.servlet.http.HttpServletRequestunwrap(javax.servlet.ServletRequest servletRequest) <T extends javax.servlet.http.HttpUpgradeHandler>
TMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface javax.servlet.http.HttpServletRequest
isTrailerFieldsReady
-
Field Details
-
__MULTIPART_CONFIG_ELEMENT
- See Also:
-
-
Constructor Details
-
Request
-
-
Method Details
-
getBaseRequest
Obtain the baseRequestinstance of aServletRequest, by coercion, unwrapping or special attribute.- Parameters:
request- The request- Returns:
- the base
Requestinstance of aServletRequest.
-
getHttpFields
-
setHttpFields
-
getTrailerFields
- Specified by:
getTrailerFieldsin interfacejavax.servlet.http.HttpServletRequest
-
setTrailerHttpFields
-
getTrailerHttpFields
-
getHttpInput
-
isPush
public boolean isPush() -
isPushSupported
public boolean isPushSupported() -
newPushBuilder
public javax.servlet.http.PushBuilder newPushBuilder()- Specified by:
newPushBuilderin interfacejavax.servlet.http.HttpServletRequest
-
addEventListener
-
enterSession
public void enterSession(javax.servlet.http.HttpSession s) Remember a session that this request has just entered.- Parameters:
s- the session
-
extractFormParameters
-
getAsyncContext
public javax.servlet.AsyncContext getAsyncContext()- Specified by:
getAsyncContextin interfacejavax.servlet.ServletRequest
-
getHttpChannelState
-
getComplianceViolationListener
-
getAttribute
Get Request Attribute.Also supports jetty specific attributes to gain access to Jetty APIs:
- org.eclipse.jetty.server.Server
- The Jetty Server instance
- org.eclipse.jetty.server.HttpChannel
- The HttpChannel for this request
- org.eclipse.jetty.server.HttpConnection
- The HttpConnection or null if another transport is used
- Specified by:
getAttributein interfacejavax.servlet.ServletRequest- See Also:
-
ServletRequest.getAttribute(java.lang.String)
-
getAttributeNames
- Specified by:
getAttributeNamesin interfacejavax.servlet.ServletRequest
-
getAttributes
-
getAuthentication
Get the authentication.- Returns:
- the authentication
-
getAuthType
- Specified by:
getAuthTypein interfacejavax.servlet.http.HttpServletRequest
-
getCharacterEncoding
- Specified by:
getCharacterEncodingin interfacejavax.servlet.ServletRequest
-
getHttpChannel
- Returns:
- Returns the connection.
-
getContentLength
public int getContentLength()- Specified by:
getContentLengthin interfacejavax.servlet.ServletRequest
-
getContentLengthLong
public long getContentLengthLong()- Specified by:
getContentLengthLongin interfacejavax.servlet.ServletRequest
-
getContentRead
public long getContentRead() -
getContentType
- Specified by:
getContentTypein interfacejavax.servlet.ServletRequest
-
getContext
- Returns:
- The current
contextused for this request, ornullifsetContext(org.eclipse.jetty.server.handler.ContextHandler.Context, java.lang.String)has not yet been called.
-
getErrorContext
- Returns:
- The current
contextused for this error handling for this request. If the request is asynchronous, then it is the context that called async. Otherwise it is the last non-null context passed to #setContext
-
getContextPath
- Specified by:
getContextPathin interfacejavax.servlet.http.HttpServletRequest
-
getPathInContext
Get the path in the context. The path relative to the context path, analogous togetServletPath()+getPathInfo(). If no context is set, then the path in context is the full path.- Returns:
- The decoded part of the
getRequestURI()path after anygetContextPath()up to anygetQueryString(), excluding path parameters. - See Also:
-
getCookies
public javax.servlet.http.Cookie[] getCookies()- Specified by:
getCookiesin interfacejavax.servlet.http.HttpServletRequest
-
getDateHeader
- Specified by:
getDateHeaderin interfacejavax.servlet.http.HttpServletRequest
-
getDispatcherType
public javax.servlet.DispatcherType getDispatcherType()- Specified by:
getDispatcherTypein interfacejavax.servlet.ServletRequest
-
getHeader
- Specified by:
getHeaderin interfacejavax.servlet.http.HttpServletRequest
-
getHeaderNames
- Specified by:
getHeaderNamesin interfacejavax.servlet.http.HttpServletRequest
-
getHeaders
- Specified by:
getHeadersin interfacejavax.servlet.http.HttpServletRequest
-
getInputState
public int getInputState()- Returns:
- Returns the inputState.
-
getInputStream
- Specified by:
getInputStreamin interfacejavax.servlet.ServletRequest- Throws:
IOException
-
getIntHeader
- Specified by:
getIntHeaderin interfacejavax.servlet.http.HttpServletRequest
-
getLocale
- Specified by:
getLocalein interfacejavax.servlet.ServletRequest
-
getLocales
- Specified by:
getLocalesin interfacejavax.servlet.ServletRequest
-
getLocalAddr
- Specified by:
getLocalAddrin interfacejavax.servlet.ServletRequest
-
getLocalName
- Specified by:
getLocalNamein interfacejavax.servlet.ServletRequest
-
getLocalPort
public int getLocalPort()- Specified by:
getLocalPortin interfacejavax.servlet.ServletRequest
-
getMethod
- Specified by:
getMethodin interfacejavax.servlet.http.HttpServletRequest
-
getParameter
- Specified by:
getParameterin interfacejavax.servlet.ServletRequest
-
getParameterMap
- Specified by:
getParameterMapin interfacejavax.servlet.ServletRequest
-
getParameterNames
- Specified by:
getParameterNamesin interfacejavax.servlet.ServletRequest
-
getParameterValues
- Specified by:
getParameterValuesin interfacejavax.servlet.ServletRequest
-
getQueryParameters
-
setQueryParameters
-
setContentParameters
-
resetParameters
public void resetParameters() -
getPathInfo
- Specified by:
getPathInfoin interfacejavax.servlet.http.HttpServletRequest
-
getPathTranslated
- Specified by:
getPathTranslatedin interfacejavax.servlet.http.HttpServletRequest
-
getProtocol
- Specified by:
getProtocolin interfacejavax.servlet.ServletRequest
-
getHttpVersion
-
getQueryEncoding
-
getQueryString
- Specified by:
getQueryStringin interfacejavax.servlet.http.HttpServletRequest
-
getReader
- Specified by:
getReaderin interfacejavax.servlet.ServletRequest- Throws:
IOException
-
getRealPath
Deprecated.- Specified by:
getRealPathin interfacejavax.servlet.ServletRequest
-
getRemoteInetSocketAddress
Access the underlying RemoteInetSocketAddressfor this request.- Returns:
- the remote
InetSocketAddressfor this request, or null if the request has no remote (seeServletRequest.getRemoteAddr()for conditions that result in no remote address)
-
getRemoteAddr
- Specified by:
getRemoteAddrin interfacejavax.servlet.ServletRequest
-
getRemoteHost
- Specified by:
getRemoteHostin interfacejavax.servlet.ServletRequest
-
getRemotePort
public int getRemotePort()- Specified by:
getRemotePortin interfacejavax.servlet.ServletRequest
-
getRemoteUser
- Specified by:
getRemoteUserin interfacejavax.servlet.http.HttpServletRequest
-
getRequestDispatcher
- Specified by:
getRequestDispatcherin interfacejavax.servlet.ServletRequest
-
getRequestedSessionId
- Specified by:
getRequestedSessionIdin interfacejavax.servlet.http.HttpServletRequest
-
getRequestURI
- Specified by:
getRequestURIin interfacejavax.servlet.http.HttpServletRequest
-
getRequestURL
- Specified by:
getRequestURLin interfacejavax.servlet.http.HttpServletRequest
-
getResponse
-
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
- Specified by:
getSchemein interfacejavax.servlet.ServletRequest
-
getServerName
- Specified by:
getServerNamein interfacejavax.servlet.ServletRequest
-
getServerPort
public int getServerPort()- Specified by:
getServerPortin interfacejavax.servlet.ServletRequest
-
getServletContext
public javax.servlet.ServletContext getServletContext()- Specified by:
getServletContextin interfacejavax.servlet.ServletRequest
-
getServletName
-
getServletPath
- Specified by:
getServletPathin interfacejavax.servlet.http.HttpServletRequest
-
getServletResponse
public javax.servlet.ServletResponse getServletResponse() -
changeSessionId
- Specified by:
changeSessionIdin interfacejavax.servlet.http.HttpServletRequest
-
onCompleted
public void onCompleted()Called when the request is fully finished being handled. For every session in any context that the session has accessed, ensure that the session is completed. -
onResponseCommit
public void onResponseCommit()Called when a response is about to be committed, ie sent back to the client -
getSession
Find a session that this request has already entered for the given SessionHandler- Parameters:
sessionHandler- the SessionHandler (ie context) to check- Returns:
- the session for the passed session handler or null
-
getSession
public javax.servlet.http.HttpSession getSession()- Specified by:
getSessionin interfacejavax.servlet.http.HttpServletRequest
-
getSession
public javax.servlet.http.HttpSession getSession(boolean create) - Specified by:
getSessionin interfacejavax.servlet.http.HttpServletRequest
-
getSessionHandler
- Returns:
- Returns the sessionManager.
-
getTimeStamp
public long getTimeStamp()Get Request TimeStamp- Returns:
- The time that the request was received.
-
getHttpURI
-
setHttpURI
-
getOriginalURI
- Returns:
- Returns the original uri passed in metadata before customization/rewrite
-
getUserIdentity
-
getResolvedUserIdentity
- Returns:
- The resolved user Identity, which may be null if the
Authenticationis notAuthentication.User(eg.Authentication.Deferred).
-
getUserIdentityScope
-
getUserPrincipal
- Specified by:
getUserPrincipalin interfacejavax.servlet.http.HttpServletRequest
-
isHandled
public boolean isHandled() -
isAsyncStarted
public boolean isAsyncStarted()- Specified by:
isAsyncStartedin interfacejavax.servlet.ServletRequest
-
isAsyncSupported
public boolean isAsyncSupported()- Specified by:
isAsyncSupportedin interfacejavax.servlet.ServletRequest
-
isRequestedSessionIdFromCookie
public boolean isRequestedSessionIdFromCookie()- Specified by:
isRequestedSessionIdFromCookiein interfacejavax.servlet.http.HttpServletRequest
-
isRequestedSessionIdFromUrl
Deprecated.- Specified by:
isRequestedSessionIdFromUrlin interfacejavax.servlet.http.HttpServletRequest
-
isRequestedSessionIdFromURL
public boolean isRequestedSessionIdFromURL()- Specified by:
isRequestedSessionIdFromURLin interfacejavax.servlet.http.HttpServletRequest
-
isRequestedSessionIdValid
public boolean isRequestedSessionIdValid()- Specified by:
isRequestedSessionIdValidin interfacejavax.servlet.http.HttpServletRequest
-
isSecure
public boolean isSecure()- Specified by:
isSecurein interfacejavax.servlet.ServletRequest
-
setSecure
public void setSecure(boolean secure) -
getBeginNanoTime
public long getBeginNanoTime()Get the nanoTime at which the request arrived to a connector, obtained via
System.nanoTime(). This method can be used when measuring latencies.- Returns:
- The nanoTime at which the request was received/created in nanoseconds
-
isUserInRole
- Specified by:
isUserInRolein interfacejavax.servlet.http.HttpServletRequest
-
setMetaData
- Parameters:
request- the Request metadata
-
getMetaData
-
hasMetaData
public boolean hasMetaData() -
recycle
protected void recycle() -
removeAttribute
- Specified by:
removeAttributein interfacejavax.servlet.ServletRequest
-
removeEventListener
-
setAsyncSupported
-
setAttribute
Set a request attribute. if the attribute name is "org.eclipse.jetty.server.server.Request.queryEncoding" then the value is also passed in a call tosetQueryEncoding(java.lang.String).- Specified by:
setAttributein interfacejavax.servlet.ServletRequest- See Also:
-
ServletRequest.setAttribute(java.lang.String, java.lang.Object)
-
setAttributes
Set the attributes for the request.- Parameters:
attributes- The attributes, which must be aAttributes.Wrapperfor whichAttributes.unwrap(Attributes)will return the originalServletAttributes.
-
setAsyncAttributes
public void setAsyncAttributes() -
setAuthentication
Set the authentication.- Parameters:
authentication- the authentication to set
-
setCharacterEncoding
- Specified by:
setCharacterEncodingin interfacejavax.servlet.ServletRequest- Throws:
UnsupportedEncodingException
-
setCharacterEncodingUnchecked
-
setContentType
-
setContext
Set request context and path in the context.- Parameters:
context- context objectpathInContext- the part of the URI path that is withing the context. For servlets, this is equal to servletPath + pathInfo
-
takeNewContext
public boolean takeNewContext()- Returns:
- True if this is the first call of
takeNewContext()since the lastsetContext(org.eclipse.jetty.server.handler.ContextHandler.Context, String)call.
-
setCookies
public void setCookies(javax.servlet.http.Cookie[] cookies) - Parameters:
cookies- The cookies to set.
-
setDispatcherType
public void setDispatcherType(javax.servlet.DispatcherType type) -
setHandled
public void setHandled(boolean h) -
setMethod
- Parameters:
method- The method to set.
-
isHead
public boolean isHead() -
setQueryEncoding
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 getParameter methods. The request attribute "org.eclipse.jetty.server.Request.queryEncoding" may be set as an alternate method of calling setQueryEncoding.- Parameters:
queryEncoding- the URI query character encoding
-
setRemoteAddr
- Parameters:
addr- The address to set.
-
setRequestedSessionId
- Parameters:
requestedSessionId- The requestedSessionId to set.
-
setRequestedSessionIdFromCookie
public void setRequestedSessionIdFromCookie(boolean requestedSessionIdCookie) - Parameters:
requestedSessionIdCookie- The requestedSessionIdCookie to set.
-
setSession
public void setSession(javax.servlet.http.HttpSession session) - Parameters:
session- The session to set.
-
setSessionHandler
- Parameters:
sessionHandler- The SessionHandler to set.
-
setTimeStamp
public void setTimeStamp(long ts) -
setUserIdentityScope
-
startAsync
- Specified by:
startAsyncin interfacejavax.servlet.ServletRequest- Throws:
IllegalStateException
-
startAsync
public javax.servlet.AsyncContext startAsync(javax.servlet.ServletRequest servletRequest, javax.servlet.ServletResponse servletResponse) throws IllegalStateException - Specified by:
startAsyncin interfacejavax.servlet.ServletRequest- Throws:
IllegalStateException
-
unwrap
public static javax.servlet.http.HttpServletRequest unwrap(javax.servlet.ServletRequest servletRequest) -
toString
-
authenticate
public boolean authenticate(javax.servlet.http.HttpServletResponse response) throws IOException, javax.servlet.ServletException - Specified by:
authenticatein interfacejavax.servlet.http.HttpServletRequest- Throws:
IOExceptionjavax.servlet.ServletException
-
getPart
public javax.servlet.http.Part getPart(String name) throws IOException, javax.servlet.ServletException - Specified by:
getPartin interfacejavax.servlet.http.HttpServletRequest- Throws:
IOExceptionjavax.servlet.ServletException
-
getParts
public Collection<javax.servlet.http.Part> getParts() throws IOException, javax.servlet.ServletException- Specified by:
getPartsin interfacejavax.servlet.http.HttpServletRequest- Throws:
IOExceptionjavax.servlet.ServletException
-
login
- Specified by:
loginin interfacejavax.servlet.http.HttpServletRequest- Throws:
javax.servlet.ServletException
-
logout
public void logout() throws javax.servlet.ServletException- Specified by:
logoutin interfacejavax.servlet.http.HttpServletRequest- Throws:
javax.servlet.ServletException
-
mergeQueryParameters
-
upgrade
public <T extends javax.servlet.http.HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, javax.servlet.ServletException - Specified by:
upgradein interfacejavax.servlet.http.HttpServletRequest- Throws:
IOExceptionjavax.servlet.ServletException
-
setServletPathMapping
Set the servletPathMapping, the servletPath and the pathInfo.- Parameters:
servletPathMapping- The mapping used to return fromgetHttpServletMapping()
-
getServletPathMapping
- Returns:
- The mapping for the current target servlet, regardless of dispatch type.
-
getHttpServletMapping
public javax.servlet.http.HttpServletMapping getHttpServletMapping()- Specified by:
getHttpServletMappingin interfacejavax.servlet.http.HttpServletRequest
-