Class Request
- All Implemented Interfaces:
jakarta.servlet.http.HttpServletRequest,jakarta.servlet.ServletRequest
Implements HttpServletRequest from the jakarta.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 jakarta.servlet.http.HttpServletRequest
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddEventListener(EventListener listener) booleanauthenticate(jakarta.servlet.http.HttpServletResponse response) voidenterSession(jakarta.servlet.http.HttpSession s) Remember a session that this request has just entered.voidextractFormParameters(MultiMap<String> params) jakarta.servlet.AsyncContextgetAttribute(String name) Get Request Attribute.Get the authentication.static RequestgetBaseRequest(jakarta.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().intlonglongjakarta.servlet.http.Cookie[]longgetDateHeader(String name) jakarta.servlet.DispatcherTypegetHeaders(String name) jakarta.servlet.http.HttpServletMappingintjakarta.servlet.ServletInputStreamintgetIntHeader(String name) intgetParameter(String name) String[]getParameterValues(String name) jakarta.servlet.http.PartCollection<jakarta.servlet.http.Part>getParts()Get the path in the context.getRealPath(String path) Deprecated.Access the underlying RemoteInetSocketAddressfor this request.intjakarta.servlet.RequestDispatchergetRequestDispatcher(String path) Reconstructs the URL the client used to make the request.intjakarta.servlet.ServletContextjakarta.servlet.ServletResponsejakarta.servlet.http.HttpSessionjakarta.servlet.http.HttpSessiongetSession(boolean create) jakarta.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) jakarta.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(jakarta.servlet.http.Cookie[] cookies) voidsetDispatcherType(jakarta.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(jakarta.servlet.http.HttpSession session) voidsetSessionHandler(SessionHandler sessionHandler) voidsetTimeStamp(long ts) voidsetTrailerHttpFields(HttpFields trailers) voidjakarta.servlet.AsyncContextjakarta.servlet.AsyncContextstartAsync(jakarta.servlet.ServletRequest servletRequest, jakarta.servlet.ServletResponse servletResponse) booleantoString()static jakarta.servlet.http.HttpServletRequestunwrap(jakarta.servlet.ServletRequest servletRequest) <T extends jakarta.servlet.http.HttpUpgradeHandler>
TMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface jakarta.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 interfacejakarta.servlet.http.HttpServletRequest
-
setTrailerHttpFields
-
getTrailerHttpFields
-
getHttpInput
-
isPush
public boolean isPush() -
isPushSupported
public boolean isPushSupported() -
newPushBuilder
public jakarta.servlet.http.PushBuilder newPushBuilder()- Specified by:
newPushBuilderin interfacejakarta.servlet.http.HttpServletRequest
-
addEventListener
-
enterSession
public void enterSession(jakarta.servlet.http.HttpSession s) Remember a session that this request has just entered.- Parameters:
s- the session
-
extractFormParameters
-
getAsyncContext
public jakarta.servlet.AsyncContext getAsyncContext()- Specified by:
getAsyncContextin interfacejakarta.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 interfacejakarta.servlet.ServletRequest- See Also:
-
ServletRequest.getAttribute(java.lang.String)
-
getAttributeNames
- Specified by:
getAttributeNamesin interfacejakarta.servlet.ServletRequest
-
getAttributes
-
getAuthentication
Get the authentication.- Returns:
- the authentication
-
getAuthType
- Specified by:
getAuthTypein interfacejakarta.servlet.http.HttpServletRequest
-
getCharacterEncoding
- Specified by:
getCharacterEncodingin interfacejakarta.servlet.ServletRequest
-
getHttpChannel
- Returns:
- Returns the connection.
-
getContentLength
public int getContentLength()- Specified by:
getContentLengthin interfacejakarta.servlet.ServletRequest
-
getContentLengthLong
public long getContentLengthLong()- Specified by:
getContentLengthLongin interfacejakarta.servlet.ServletRequest
-
getContentRead
public long getContentRead() -
getContentType
- Specified by:
getContentTypein interfacejakarta.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 interfacejakarta.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 jakarta.servlet.http.Cookie[] getCookies()- Specified by:
getCookiesin interfacejakarta.servlet.http.HttpServletRequest
-
getDateHeader
- Specified by:
getDateHeaderin interfacejakarta.servlet.http.HttpServletRequest
-
getDispatcherType
public jakarta.servlet.DispatcherType getDispatcherType()- Specified by:
getDispatcherTypein interfacejakarta.servlet.ServletRequest
-
getHeader
- Specified by:
getHeaderin interfacejakarta.servlet.http.HttpServletRequest
-
getHeaderNames
- Specified by:
getHeaderNamesin interfacejakarta.servlet.http.HttpServletRequest
-
getHeaders
- Specified by:
getHeadersin interfacejakarta.servlet.http.HttpServletRequest
-
getInputState
public int getInputState()- Returns:
- Returns the inputState.
-
getInputStream
- Specified by:
getInputStreamin interfacejakarta.servlet.ServletRequest- Throws:
IOException
-
getIntHeader
- Specified by:
getIntHeaderin interfacejakarta.servlet.http.HttpServletRequest
-
getLocale
- Specified by:
getLocalein interfacejakarta.servlet.ServletRequest
-
getLocales
- Specified by:
getLocalesin interfacejakarta.servlet.ServletRequest
-
getLocalAddr
- Specified by:
getLocalAddrin interfacejakarta.servlet.ServletRequest
-
getLocalName
- Specified by:
getLocalNamein interfacejakarta.servlet.ServletRequest
-
getLocalPort
public int getLocalPort()- Specified by:
getLocalPortin interfacejakarta.servlet.ServletRequest
-
getMethod
- Specified by:
getMethodin interfacejakarta.servlet.http.HttpServletRequest
-
getParameter
- Specified by:
getParameterin interfacejakarta.servlet.ServletRequest
-
getParameterMap
- Specified by:
getParameterMapin interfacejakarta.servlet.ServletRequest
-
getParameterNames
- Specified by:
getParameterNamesin interfacejakarta.servlet.ServletRequest
-
getParameterValues
- Specified by:
getParameterValuesin interfacejakarta.servlet.ServletRequest
-
getQueryParameters
-
setQueryParameters
-
setContentParameters
-
resetParameters
public void resetParameters() -
getPathInfo
- Specified by:
getPathInfoin interfacejakarta.servlet.http.HttpServletRequest
-
getPathTranslated
- Specified by:
getPathTranslatedin interfacejakarta.servlet.http.HttpServletRequest
-
getProtocol
- Specified by:
getProtocolin interfacejakarta.servlet.ServletRequest
-
getHttpVersion
-
getQueryEncoding
-
getQueryString
- Specified by:
getQueryStringin interfacejakarta.servlet.http.HttpServletRequest
-
getReader
- Specified by:
getReaderin interfacejakarta.servlet.ServletRequest- Throws:
IOException
-
getRealPath
Deprecated.- Specified by:
getRealPathin interfacejakarta.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 interfacejakarta.servlet.ServletRequest
-
getRemoteHost
- Specified by:
getRemoteHostin interfacejakarta.servlet.ServletRequest
-
getRemotePort
public int getRemotePort()- Specified by:
getRemotePortin interfacejakarta.servlet.ServletRequest
-
getRemoteUser
- Specified by:
getRemoteUserin interfacejakarta.servlet.http.HttpServletRequest
-
getRequestDispatcher
- Specified by:
getRequestDispatcherin interfacejakarta.servlet.ServletRequest
-
getRequestedSessionId
- Specified by:
getRequestedSessionIdin interfacejakarta.servlet.http.HttpServletRequest
-
getRequestURI
- Specified by:
getRequestURIin interfacejakarta.servlet.http.HttpServletRequest
-
getRequestURL
- Specified by:
getRequestURLin interfacejakarta.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 interfacejakarta.servlet.ServletRequest
-
getServerName
- Specified by:
getServerNamein interfacejakarta.servlet.ServletRequest
-
getServerPort
public int getServerPort()- Specified by:
getServerPortin interfacejakarta.servlet.ServletRequest
-
getServletContext
public jakarta.servlet.ServletContext getServletContext()- Specified by:
getServletContextin interfacejakarta.servlet.ServletRequest
-
getServletName
-
getServletPath
- Specified by:
getServletPathin interfacejakarta.servlet.http.HttpServletRequest
-
getServletResponse
public jakarta.servlet.ServletResponse getServletResponse() -
changeSessionId
- Specified by:
changeSessionIdin interfacejakarta.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 jakarta.servlet.http.HttpSession getSession()- Specified by:
getSessionin interfacejakarta.servlet.http.HttpServletRequest
-
getSession
public jakarta.servlet.http.HttpSession getSession(boolean create) - Specified by:
getSessionin interfacejakarta.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 interfacejakarta.servlet.http.HttpServletRequest
-
isHandled
public boolean isHandled() -
isAsyncStarted
public boolean isAsyncStarted()- Specified by:
isAsyncStartedin interfacejakarta.servlet.ServletRequest
-
isAsyncSupported
public boolean isAsyncSupported()- Specified by:
isAsyncSupportedin interfacejakarta.servlet.ServletRequest
-
isRequestedSessionIdFromCookie
public boolean isRequestedSessionIdFromCookie()- Specified by:
isRequestedSessionIdFromCookiein interfacejakarta.servlet.http.HttpServletRequest
-
isRequestedSessionIdFromUrl
Deprecated.- Specified by:
isRequestedSessionIdFromUrlin interfacejakarta.servlet.http.HttpServletRequest
-
isRequestedSessionIdFromURL
public boolean isRequestedSessionIdFromURL()- Specified by:
isRequestedSessionIdFromURLin interfacejakarta.servlet.http.HttpServletRequest
-
isRequestedSessionIdValid
public boolean isRequestedSessionIdValid()- Specified by:
isRequestedSessionIdValidin interfacejakarta.servlet.http.HttpServletRequest
-
isSecure
public boolean isSecure()- Specified by:
isSecurein interfacejakarta.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 interfacejakarta.servlet.http.HttpServletRequest
-
setMetaData
- Parameters:
request- the Request metadata
-
getMetaData
-
hasMetaData
public boolean hasMetaData() -
recycle
protected void recycle() -
removeAttribute
- Specified by:
removeAttributein interfacejakarta.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 interfacejakarta.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 interfacejakarta.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(jakarta.servlet.http.Cookie[] cookies) - Parameters:
cookies- The cookies to set.
-
setDispatcherType
public void setDispatcherType(jakarta.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(jakarta.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 interfacejakarta.servlet.ServletRequest- Throws:
IllegalStateException
-
startAsync
public jakarta.servlet.AsyncContext startAsync(jakarta.servlet.ServletRequest servletRequest, jakarta.servlet.ServletResponse servletResponse) throws IllegalStateException - Specified by:
startAsyncin interfacejakarta.servlet.ServletRequest- Throws:
IllegalStateException
-
unwrap
public static jakarta.servlet.http.HttpServletRequest unwrap(jakarta.servlet.ServletRequest servletRequest) -
toString
-
authenticate
public boolean authenticate(jakarta.servlet.http.HttpServletResponse response) throws IOException, jakarta.servlet.ServletException - Specified by:
authenticatein interfacejakarta.servlet.http.HttpServletRequest- Throws:
IOExceptionjakarta.servlet.ServletException
-
getPart
public jakarta.servlet.http.Part getPart(String name) throws IOException, jakarta.servlet.ServletException - Specified by:
getPartin interfacejakarta.servlet.http.HttpServletRequest- Throws:
IOExceptionjakarta.servlet.ServletException
-
getParts
public Collection<jakarta.servlet.http.Part> getParts() throws IOException, jakarta.servlet.ServletException- Specified by:
getPartsin interfacejakarta.servlet.http.HttpServletRequest- Throws:
IOExceptionjakarta.servlet.ServletException
-
login
- Specified by:
loginin interfacejakarta.servlet.http.HttpServletRequest- Throws:
jakarta.servlet.ServletException
-
logout
public void logout() throws jakarta.servlet.ServletException- Specified by:
logoutin interfacejakarta.servlet.http.HttpServletRequest- Throws:
jakarta.servlet.ServletException
-
mergeQueryParameters
-
upgrade
public <T extends jakarta.servlet.http.HttpUpgradeHandler> T upgrade(Class<T> handlerClass) throws IOException, jakarta.servlet.ServletException - Specified by:
upgradein interfacejakarta.servlet.http.HttpServletRequest- Throws:
IOExceptionjakarta.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 jakarta.servlet.http.HttpServletMapping getHttpServletMapping()- Specified by:
getHttpServletMappingin interfacejakarta.servlet.http.HttpServletRequest
-