public class ThreadLocalServletRequest extends AbstractRestThreadLocalProxy<ServletRequest> implements ServletRequest
Modifier | Constructor and Description |
---|---|
protected |
ThreadLocalServletRequest() |
Modifier and Type | Method and Description |
---|---|
AsyncContext |
getAsyncContext()
Gets the AsyncContext that was created or reinitialized by the
most recent invocation of
ServletRequest.startAsync() or
ServletRequest.startAsync(ServletRequest,ServletResponse) on this request. |
java.lang.Object |
getAttribute(java.lang.String string)
Returns the value of the named attribute as an
Object ,
or null if no attribute of the given name exists. |
java.util.Enumeration<java.lang.String> |
getAttributeNames()
Returns an
Enumeration containing the
names of the attributes available to this request. |
java.lang.String |
getCharacterEncoding()
Returns the name of the character encoding used in the body of this
request.
|
int |
getContentLength()
Returns the length, in bytes, of the request body and made available by
the input stream, or -1 if the length is not known ir is greater than
Integer.MAX_VALUE.
|
long |
getContentLengthLong()
Returns the length, in bytes, of the request body and made available by
the input stream, or -1 if the length is not known.
|
java.lang.String |
getContentType()
Returns the MIME type of the body of the request, or
null if the type is not known. |
DispatcherType |
getDispatcherType()
Gets the dispatcher type of this request.
|
ServletInputStream |
getInputStream()
Retrieves the body of the request as binary data using
a
ServletInputStream . |
java.lang.String |
getLocalAddr()
Returns the Internet Protocol (IP) address of the interface on
which the request was received.
|
java.util.Locale |
getLocale()
Returns the preferred
Locale that the client will
accept content in, based on the Accept-Language header. |
java.util.Enumeration<java.util.Locale> |
getLocales()
Returns an
Enumeration of Locale objects
indicating, in decreasing order starting with the preferred locale, the
locales that are acceptable to the client based on the Accept-Language
header. |
java.lang.String |
getLocalName()
Returns the host name of the Internet Protocol (IP) interface on
which the request was received.
|
int |
getLocalPort()
Returns the Internet Protocol (IP) port number of the interface
on which the request was received.
|
java.lang.String |
getParameter(java.lang.String string)
Returns the value of a request parameter as a
String ,
or null if the parameter does not exist. |
java.util.Map<java.lang.String,java.lang.String[]> |
getParameterMap()
Returns a java.util.Map of the parameters of this request.
|
java.util.Enumeration<java.lang.String> |
getParameterNames()
Returns an
Enumeration of String
objects containing the names of the parameters contained
in this request. |
java.lang.String[] |
getParameterValues(java.lang.String string)
Returns an array of
String objects containing
all of the values the given request parameter has, or
null if the parameter does not exist. |
java.lang.String |
getProtocol()
Returns the name and version of the protocol the request uses
in the form protocol/majorVersion.minorVersion, for
example, HTTP/1.1.
|
java.io.BufferedReader |
getReader()
Retrieves the body of the request as character data using
a
BufferedReader . |
java.lang.String |
getRealPath(java.lang.String string) |
java.lang.String |
getRemoteAddr()
Returns the Internet Protocol (IP) address of the client
or last proxy that sent the request.
|
java.lang.String |
getRemoteHost()
Returns the fully qualified name of the client
or the last proxy that sent the request.
|
int |
getRemotePort()
Returns the Internet Protocol (IP) source port of the client
or last proxy that sent the request.
|
RequestDispatcher |
getRequestDispatcher(java.lang.String string)
Returns a
RequestDispatcher object that acts as a wrapper for
the resource located at the given path. |
java.lang.String |
getScheme()
Returns the name of the scheme used to make this request,
for example,
http , https , or ftp . |
java.lang.String |
getServerName()
Returns the host name of the server to which the request was sent.
|
int |
getServerPort()
Returns the port number to which the request was sent.
|
ServletContext |
getServletContext()
Gets the servlet context to which this ServletRequest was last
dispatched.
|
boolean |
isAsyncStarted()
Checks if this request has been put into asynchronous mode.
|
boolean |
isAsyncSupported()
Checks if this request supports asynchronous operation.
|
boolean |
isSecure()
Returns a boolean indicating whether this request was made using a
secure channel, such as HTTPS.
|
void |
removeAttribute(java.lang.String string)
Removes an attribute from this request.
|
void |
setAttribute(java.lang.String string,
java.lang.Object object)
Stores an attribute in this request.
|
void |
setCharacterEncoding(java.lang.String string)
Overrides the name of the character encoding used in the body of this
request.
|
AsyncContext |
startAsync()
Puts this request into asynchronous mode, and initializes its
AsyncContext with the original (unwrapped) ServletRequest
and ServletResponse objects. |
AsyncContext |
startAsync(ServletRequest servletRequest,
ServletResponse servletResponse)
Puts this request into asynchronous mode, and initializes its
AsyncContext with the given request and response objects. |
find, get, remove, set
public AsyncContext getAsyncContext()
ServletRequest
ServletRequest.startAsync()
or
ServletRequest.startAsync(ServletRequest,ServletResponse)
on this request.getAsyncContext
in interface ServletRequest
ServletRequest.startAsync()
or
ServletRequest.startAsync(ServletRequest,ServletResponse)
on
this requestpublic java.lang.Object getAttribute(java.lang.String string)
ServletRequest
Object
,
or null
if no attribute of the given name exists.
Attributes can be set two ways. The servlet container may set
attributes to make available custom information about a request.
For example, for requests made using HTTPS, the attribute
javax.servlet.request.X509Certificate
can be used to
retrieve information on the certificate of the client. Attributes
can also be set programatically using
ServletRequest.setAttribute(java.lang.String, java.lang.Object)
. This allows information to be
embedded into a request before a RequestDispatcher
call.
Attribute names should follow the same conventions as package
names. This specification reserves names matching java.*
,
javax.*
, and sun.*
.
getAttribute
in interface ServletRequest
string
- a String
specifying the name of the attributeObject
containing the value of the attribute,
or null
if the attribute does not existpublic java.util.Enumeration<java.lang.String> getAttributeNames()
ServletRequest
Enumeration
containing the
names of the attributes available to this request.
This method returns an empty Enumeration
if the request has no attributes available to it.getAttributeNames
in interface ServletRequest
Enumeration
of strings containing the names
of the request's attributespublic java.lang.String getCharacterEncoding()
ServletRequest
null
if no request encoding
character encoding has been specified. The following methods for
specifying the request character encoding are consulted, in decreasing
order of priority: per request, per web app (using
ServletContext.setRequestCharacterEncoding(java.lang.String)
, deployment
descriptor), and per container (for all web applications deployed in
that container, using vendor specific configuration).getCharacterEncoding
in interface ServletRequest
String
containing the name of the character
encoding, or null
if the request does not specify a
character encodingpublic int getContentLength()
ServletRequest
getContentLength
in interface ServletRequest
public long getContentLengthLong()
ServletRequest
getContentLengthLong
in interface ServletRequest
public java.lang.String getContentType()
ServletRequest
null
if the type is not known. For HTTP servlets,
same as the value of the CGI variable CONTENT_TYPE.getContentType
in interface ServletRequest
String
containing the name of the MIME type
of the request, or null if the type is not knownpublic DispatcherType getDispatcherType()
ServletRequest
The dispatcher type of a request is used by the container to select the filters that need to be applied to the request: Only filters with matching dispatcher type and url patterns will be applied.
Allowing a filter that has been configured for multiple dispatcher types to query a request for its dispatcher type allows the filter to process the request differently depending on its dispatcher type.
The initial dispatcher type of a request is defined as
DispatcherType.REQUEST
. The dispatcher type of a request
dispatched via RequestDispatcher.forward(ServletRequest,
ServletResponse)
or RequestDispatcher.include(ServletRequest,
ServletResponse)
is given as DispatcherType.FORWARD
or
DispatcherType.INCLUDE
, respectively, while the
dispatcher type of an asynchronous request dispatched via
one of the AsyncContext.dispatch()
methods is given as
DispatcherType.ASYNC
. Finally, the dispatcher type of a
request dispatched to an error page by the container's error handling
mechanism is given as DispatcherType.ERROR
.
getDispatcherType
in interface ServletRequest
DispatcherType
public ServletInputStream getInputStream() throws java.io.IOException
ServletRequest
ServletInputStream
. Either this method or
ServletRequest.getReader()
may be called to read the body, not both.getInputStream
in interface ServletRequest
ServletInputStream
object containing
the body of the requestjava.io.IOException
- if an input or output exception occurredpublic java.lang.String getLocalAddr()
ServletRequest
getLocalAddr
in interface ServletRequest
String
containing the
IP address on which the request was received.public java.util.Locale getLocale()
ServletRequest
Locale
that the client will
accept content in, based on the Accept-Language header.
If the client request doesn't provide an Accept-Language header,
this method returns the default locale for the server.getLocale
in interface ServletRequest
Locale
for the clientpublic java.util.Enumeration<java.util.Locale> getLocales()
ServletRequest
Enumeration
of Locale
objects
indicating, in decreasing order starting with the preferred locale, the
locales that are acceptable to the client based on the Accept-Language
header.
If the client request doesn't provide an Accept-Language header,
this method returns an Enumeration
containing one
Locale
, the default locale for the server.getLocales
in interface ServletRequest
Enumeration
of preferred
Locale
objects for the clientpublic java.lang.String getLocalName()
ServletRequest
getLocalName
in interface ServletRequest
String
containing the host
name of the IP on which the request was received.public int getLocalPort()
ServletRequest
getLocalPort
in interface ServletRequest
public java.lang.String getParameter(java.lang.String string)
ServletRequest
String
,
or null
if the parameter does not exist. Request parameters
are extra information sent with the request. For HTTP servlets,
parameters are contained in the query string or posted form data.
You should only use this method when you are sure the
parameter has only one value. If the parameter might have
more than one value, use ServletRequest.getParameterValues(java.lang.String)
.
If you use this method with a multivalued
parameter, the value returned is equal to the first value
in the array returned by getParameterValues
.
If the parameter data was sent in the request body, such as occurs
with an HTTP POST request, then reading the body directly via ServletRequest.getInputStream()
or ServletRequest.getReader()
can interfere
with the execution of this method.
getParameter
in interface ServletRequest
string
- a String
specifying the name of the parameterString
representing the single value of
the parameterServletRequest.getParameterValues(java.lang.String)
public java.util.Map<java.lang.String,java.lang.String[]> getParameterMap()
ServletRequest
Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.
getParameterMap
in interface ServletRequest
public java.lang.String[] getParameterValues(java.lang.String string)
ServletRequest
String
objects containing
all of the values the given request parameter has, or
null
if the parameter does not exist.
If the parameter has a single value, the array has a length of 1.
getParameterValues
in interface ServletRequest
string
- a String
containing the name of
the parameter whose value is requestedString
objects
containing the parameter's valuesServletRequest.getParameter(java.lang.String)
public java.util.Enumeration<java.lang.String> getParameterNames()
ServletRequest
Enumeration
of String
objects containing the names of the parameters contained
in this request. If the request has
no parameters, the method returns an empty Enumeration
.getParameterNames
in interface ServletRequest
Enumeration
of String
objects, each String
containing the name of
a request parameter; or an empty Enumeration
if the request has no parameterspublic java.lang.String getProtocol()
ServletRequest
SERVER_PROTOCOL
.getProtocol
in interface ServletRequest
String
containing the protocol
name and version numberpublic java.io.BufferedReader getReader() throws java.io.IOException
ServletRequest
BufferedReader
. The reader translates the character
data according to the character encoding used on the body.
Either this method or ServletRequest.getInputStream()
may be called to read the
body, not both.getReader
in interface ServletRequest
BufferedReader
containing the body of the requestjava.io.UnsupportedEncodingException
- if the character set encoding
used is not supported and the text cannot be decodedjava.io.IOException
- if an input or output exception occurredServletRequest.getInputStream()
public java.lang.String getRealPath(java.lang.String string)
getRealPath
in interface ServletRequest
string
- the path for which the real path is to be returned.public java.lang.String getRemoteAddr()
ServletRequest
REMOTE_ADDR
.getRemoteAddr
in interface ServletRequest
String
containing the
IP address of the client that sent the requestpublic java.lang.String getRemoteHost()
ServletRequest
REMOTE_HOST
.getRemoteHost
in interface ServletRequest
String
containing the fully
qualified name of the clientpublic int getRemotePort()
ServletRequest
getRemotePort
in interface ServletRequest
public RequestDispatcher getRequestDispatcher(java.lang.String string)
ServletRequest
RequestDispatcher
object that acts as a wrapper for
the resource located at the given path.
A RequestDispatcher
object can be used to forward
a request to the resource or to include the resource in a response.
The resource can be dynamic or static.
The pathname specified may be relative, although it cannot extend
outside the current servlet context. If the path begins with
a "/" it is interpreted as relative to the current context root.
This method returns null
if the servlet container
cannot return a RequestDispatcher
.
The difference between this method and ServletContext.getRequestDispatcher(java.lang.String)
is that this method can take a
relative path.
getRequestDispatcher
in interface ServletRequest
string
- a String
specifying the pathname
to the resource. If it is relative, it must be
relative against the current servlet.RequestDispatcher
object that acts as a
wrapper for the resource at the specified path,
or null
if the servlet container cannot
return a RequestDispatcher
RequestDispatcher
,
ServletContext.getRequestDispatcher(java.lang.String)
public java.lang.String getScheme()
ServletRequest
http
, https
, or ftp
.
Different schemes have different rules for constructing URLs,
as noted in RFC 1738.getScheme
in interface ServletRequest
String
containing the name
of the scheme used to make this requestpublic java.lang.String getServerName()
ServletRequest
Host
header value, if any, or the resolved server name, or the server IP
address.getServerName
in interface ServletRequest
String
containing the name of the serverpublic int getServerPort()
ServletRequest
Host
header value, if any, or the server port where the client connection
was accepted on.getServerPort
in interface ServletRequest
public ServletContext getServletContext()
ServletRequest
getServletContext
in interface ServletRequest
public boolean isAsyncStarted()
ServletRequest
A ServletRequest is put into asynchronous mode by calling
ServletRequest.startAsync()
or
ServletRequest.startAsync(ServletRequest,ServletResponse)
on it.
This method returns false if this request was
put into asynchronous mode, but has since been dispatched using
one of the AsyncContext.dispatch()
methods or released
from asynchronous mode via a call to AsyncContext.complete()
.
isAsyncStarted
in interface ServletRequest
public boolean isAsyncSupported()
ServletRequest
Asynchronous operation is disabled for this request if this request is within the scope of a filter or servlet that has not been annotated or flagged in the deployment descriptor as being able to support asynchronous handling.
isAsyncSupported
in interface ServletRequest
public boolean isSecure()
ServletRequest
isSecure
in interface ServletRequest
public void removeAttribute(java.lang.String string)
ServletRequest
Attribute names should follow the same conventions as
package names. Names beginning with java.*
,
javax.*
, and com.sun.*
, are
reserved for use by Sun Microsystems.
removeAttribute
in interface ServletRequest
string
- a String
specifying
the name of the attribute to removepublic void setAttribute(java.lang.String string, java.lang.Object object)
ServletRequest
RequestDispatcher
.
Attribute names should follow the same conventions as
package names.
If the object passed in is null, the effect is the same as
calling ServletRequest.removeAttribute(java.lang.String)
.
It is warned that when the request is dispatched from the
servlet resides in a different web application by
RequestDispatcher
, the object set by this method
may not be correctly retrieved in the caller servlet.
setAttribute
in interface ServletRequest
string
- a String
specifying
the name of the attributeobject
- the Object
to be storedpublic void setCharacterEncoding(java.lang.String string) throws java.io.UnsupportedEncodingException
ServletRequest
setCharacterEncoding
in interface ServletRequest
string
- String
containing the name of
the character encoding.java.io.UnsupportedEncodingException
- if this ServletRequest is still
in a state where a character encoding may be set,
but the specified encoding is invalidpublic AsyncContext startAsync()
ServletRequest
AsyncContext
with the original (unwrapped) ServletRequest
and ServletResponse objects.
Calling this method will cause committal of the associated
response to be delayed until AsyncContext.complete()
is
called on the returned AsyncContext
, or the asynchronous
operation has timed out.
Calling AsyncContext.hasOriginalRequestAndResponse()
on
the returned AsyncContext will return true
. Any filters
invoked in the outbound direction after this request was put
into asynchronous mode may use this as an indication that any request
and/or response wrappers that they added during their inbound
invocation need not stay around for the duration of the asynchronous
operation, and therefore any of their associated resources may be
released.
This method clears the list of AsyncListener
instances
(if any) that were registered with the AsyncContext returned by the
previous call to one of the startAsync methods, after calling each
AsyncListener at its onStartAsync
method.
Subsequent invocations of this method, or its overloaded variant, will return the same AsyncContext instance, reinitialized as appropriate.
startAsync
in interface ServletRequest
AsyncContext.dispatch()
public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse)
ServletRequest
AsyncContext
with the given request and response objects.
The ServletRequest and ServletResponse arguments must be
the same instances, or instances of ServletRequestWrapper
and
ServletResponseWrapper
that wrap them, that were passed to the
service
method of the Servlet or the
doFilter
method of the Filter, respectively,
in whose scope this method is being called.
Calling this method will cause committal of the associated
response to be delayed until AsyncContext.complete()
is
called on the returned AsyncContext
, or the asynchronous
operation has timed out.
Calling AsyncContext.hasOriginalRequestAndResponse()
on
the returned AsyncContext will return false
,
unless the passed in ServletRequest and ServletResponse arguments
are the original ones or do not carry any application-provided wrappers.
Any filters invoked in the outbound direction after this
request was put into asynchronous mode may use this as an indication
that some of the request and/or response wrappers that they added
during their inbound invocation may need to stay in place for
the duration of the asynchronous operation, and their associated
resources may not be released.
A ServletRequestWrapper applied during the inbound
invocation of a filter may be released by the outbound
invocation of the filter only if the given servletRequest
,
which is used to initialize the AsyncContext and will be returned by
a call to AsyncContext.getRequest()
, does not contain said
ServletRequestWrapper. The same holds true for ServletResponseWrapper
instances.
This method clears the list of AsyncListener
instances
(if any) that were registered with the AsyncContext returned by the
previous call to one of the startAsync methods, after calling each
AsyncListener at its onStartAsync
method.
Subsequent invocations of this method, or its zero-argument variant, will return the same AsyncContext instance, reinitialized as appropriate. If a call to this method is followed by a call to its zero-argument variant, the specified (and possibly wrapped) request and response objects will remain locked in on the returned AsyncContext.
startAsync
in interface ServletRequest
servletRequest
- the ServletRequest used to initialize the
AsyncContextservletResponse
- the ServletResponse used to initialize the
AsyncContext