public interface ServletRequest
ServletRequest
object and passes it as an argument to the servlet's service
method.
A ServletRequest
object provides data including parameter name and values, attributes, and an input
stream. Interfaces that extend ServletRequest
can provide additional protocol-specific data (for
example, HTTP data is provided by HttpServletRequest
.
HttpServletRequest
Modifier and Type | Method and Description |
---|---|
AsyncContext |
getAsyncContext()
Gets the AsyncContext that was created or reinitialized by the most recent invocation of
startAsync() or
startAsync(ServletRequest,ServletResponse) on this request. |
java.lang.Object |
getAttribute(java.lang.String name)
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 or 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 name)
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 name)
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 path)
Deprecated.
As of Version 2.1 of the Java Servlet API, use
ServletContext.getRealPath(java.lang.String) instead. |
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 path)
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 name)
Removes an attribute from this request.
|
void |
setAttribute(java.lang.String name,
java.lang.Object o)
Stores an attribute in this request.
|
void |
setCharacterEncoding(java.lang.String env)
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. |
java.lang.Object getAttribute(java.lang.String name)
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 programmatically using 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.*
.
name
- a String
specifying the name of the attributeObject
containing the value of the attribute, or null
if the attribute does
not existjava.util.Enumeration<java.lang.String> getAttributeNames()
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.Enumeration
of strings containing the names of the request's attributesjava.lang.String getCharacterEncoding()
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).String
containing the name of the character encoding, or null
if the request
does not specify a character encodingvoid setCharacterEncoding(java.lang.String env) throws java.io.UnsupportedEncodingException
env
- 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 invalidint getContentLength()
long getContentLengthLong()
java.lang.String getContentType()
null
if the type is not known. For HTTP
servlets, same as the value of the CGI variable CONTENT_TYPE.String
containing the name of the MIME type of the request, or null if the type is not
knownServletInputStream getInputStream() throws java.io.IOException
ServletInputStream
. Either this method or
getReader()
may be called to read the body, not both.ServletInputStream
object containing the body of the requestjava.lang.IllegalStateException
- if the getReader()
method has already been called for this requestjava.io.IOException
- if an input or output exception occurredjava.lang.String getParameter(java.lang.String name)
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 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 getInputStream()
or getReader()
can interfere with the execution of this method.
name
- a String
specifying the name of the parameterString
representing the single value of the parametergetParameterValues(java.lang.String)
java.util.Enumeration<java.lang.String> getParameterNames()
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
.Enumeration
of String
objects, each String
containing the name
of a request parameter; or an empty Enumeration
if the request has no parametersjava.lang.String[] getParameterValues(java.lang.String name)
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.
name
- a String
containing the name of the parameter whose value is requestedString
objects containing the parameter's valuesgetParameter(java.lang.String)
java.util.Map<java.lang.String,java.lang.String[]> getParameterMap()
Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.
java.lang.String getProtocol()
SERVER_PROTOCOL
.String
containing the protocol name and version numberjava.lang.String getScheme()
http
, https
, or
ftp
. Different schemes have different rules for constructing URLs, as noted in RFC 1738.String
containing the name of the scheme used to make this requestjava.lang.String getServerName()
Host
header value, if any, or the resolved server name, or the server IP address.String
containing the name of the serverint getServerPort()
Host
header value, if any, or the server port where the client connection was accepted on.java.io.BufferedReader getReader() throws java.io.IOException
BufferedReader
. The reader translates
the character data according to the character encoding used on the body. Either this method or
getInputStream()
may be called to read the body, not both.BufferedReader
containing the body of the requestjava.io.UnsupportedEncodingException
- if the character set encoding used is not supported and the text cannot
be decodedjava.lang.IllegalStateException
- if getInputStream()
method has been called on this requestjava.io.IOException
- if an input or output exception occurredgetInputStream()
java.lang.String getRemoteAddr()
REMOTE_ADDR
.String
containing the IP address of the client that sent the requestjava.lang.String getRemoteHost()
REMOTE_HOST
.String
containing the fully qualified name of the clientvoid setAttribute(java.lang.String name, java.lang.Object o)
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 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.
name
- a String
specifying the name of the attributeo
- the Object
to be storedvoid removeAttribute(java.lang.String name)
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.
name
- a String
specifying the name of the attribute to removejava.util.Locale getLocale()
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.Locale
for the clientjava.util.Enumeration<java.util.Locale> getLocales()
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.Enumeration
of preferred Locale
objects for the clientboolean isSecure()
RequestDispatcher getRequestDispatcher(java.lang.String path)
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
.
Using a RequestDispatcher, requests may be dispatched to any part of the web application bypassing both implicit (no direct access to WEB-INF or META-INF) and explicit (defined by the web application) security constraints. Unsanitized user provided data must not be used to construct the path passed to the RequestDispatcher as it is very likely to create a security vulnerability in the application.
The difference between this method and ServletContext.getRequestDispatcher(java.lang.String)
is that this method can take a
relative path.
path
- 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)
java.lang.String getRealPath(java.lang.String path)
ServletContext.getRealPath(java.lang.String)
instead.path
- the path for which the real path is to be returned.int getRemotePort()
java.lang.String getLocalName()
String
containing the host name of the IP on which the request was received.java.lang.String getLocalAddr()
String
containing the IP address on which the request was received.int getLocalPort()
ServletContext getServletContext()
AsyncContext startAsync() throws java.lang.IllegalStateException
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.
java.lang.IllegalStateException
- if this request is within the scope of a filter or servlet that does not support
asynchronous operations (that is, isAsyncSupported()
returns false), or if
this method is called again without any asynchronous dispatch (resulting from one
of the AsyncContext.dispatch()
methods), is called outside the scope of any
such dispatch, or is called again within the scope of the same dispatch, or if the
response has already been closedAsyncContext.dispatch()
AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws java.lang.IllegalStateException
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.
servletRequest
- the ServletRequest used to initialize the AsyncContextservletResponse
- the ServletResponse used to initialize the AsyncContextjava.lang.IllegalStateException
- if this request is within the scope of a filter or servlet that does not support
asynchronous operations (that is, isAsyncSupported()
returns false), or if
this method is called again without any asynchronous dispatch (resulting from one
of the AsyncContext.dispatch()
methods), is called outside the scope of any
such dispatch, or is called again within the scope of the same dispatch, or if the
response has already been closedboolean isAsyncStarted()
A ServletRequest is put into asynchronous mode by calling startAsync()
or
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()
.
boolean isAsyncSupported()
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.
AsyncContext getAsyncContext()
startAsync()
or
startAsync(ServletRequest,ServletResponse)
on this request.startAsync()
or startAsync(ServletRequest,ServletResponse)
on this requestjava.lang.IllegalStateException
- if this request has not been put into asynchronous mode, i.e., if neither
startAsync()
nor startAsync(ServletRequest,ServletResponse)
has
been calledDispatcherType getDispatcherType()
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
.
DispatcherType