|
DRAFT | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface ServletRequest
Defines an object to provide client request information to a servlet. The
servlet container creates a 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
Method Summary | |
---|---|
void |
addAsyncListener(AsyncListener listener)
Registers the given AsyncListener with this request for
asynchronous complete and timeout events. |
void |
addAsyncListener(AsyncListener listener,
ServletRequest servletRequest,
ServletResponse servletResponse)
Registers the given AsyncListener with this request for
asynchronous complete and timeout events. |
AsyncContext |
getAsyncContext()
Gets the AsyncContext that was created or reinitialized by the most recent invocation of startAsync() or
startAsync(ServletRequest,ServletResponse) on this request. |
long |
getAsyncTimeout()
Gets the timeout (in milliseconds) for any asynchronous operations initiated on this request by a call to startAsync() or
startAsync(ServletRequest, ServletResponse) . |
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. |
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 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 |
setAsyncTimeout(long timeout)
Sets the timeout (in milliseconds) for any asynchronous operations started on this request by a call to startAsync() or
startAsync(ServletRequest, ServletResponse) . |
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 and the timeout as returned by
getAsyncTimeout() . |
AsyncContext |
startAsync(ServletRequest servletRequest,
ServletResponse servletResponse)
Puts this request into asynchronous mode, and initializes its AsyncContext with the given request and response objects
and the timeout as returned by getAsyncTimeout() . |
Method Detail |
---|
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 programatically using
ServletRequest#setAttribute
. 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 attribute
Object
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 the request
does not specify a character encoding
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()
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 request
IllegalStateException
- if the getReader()
method
has already been called for this request
java.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 parameter
String
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 requested
String
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 request
UnsupportedEncodingException
- if the character set encoding
used is not supported and the
text cannot be decoded
IllegalStateException
- if getInputStream()
method
has been called on this request
java.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. Names beginning with java.*
,
javax.*
, and com.sun.*
, are
reserved for use by Sun Microsystems.
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
.
The difference between this method and ServletContext#getRequestDispatcher
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 getRealPath(java.lang.String path)
ServletContext#getRealPath
instead.
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 and the timeout as returned by
getAsyncTimeout()
.
This will delay committal of the associated response until
AsyncContext#complete
is called on the returned
AsyncContext
, or the AsyncContext times out.
The timer for async timeouts will not start until the container-initiated dispatch that called startAsync has returned to the container.
If a timeout occurs and none of the
AsyncListener#onTimeout(AsyncEvent)
handlers call
AsyncContext#complete
or one of the
AsyncContext#dispatch
methods, the container must call
AsyncContext#complete
.
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.
Subsequent invocations of this method, or its overloaded variant, will return the same AsyncContext instance, reinitialized as appropriate.
IllegalStateException
- if this request is within the scope of
a filter or servlet that does not support asynchronous operation,
that is, if isAsyncSupported()
returns false, or if this method
is called again outside the scope of a dispatch resulting from an
AsyncContext#dispatch
, or if the response has already been
closedAsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws java.lang.IllegalStateException
AsyncContext
with the given request and response objects
and the timeout as returned by getAsyncTimeout()
.
The ServletRequest and ServletResponse parameters must be either
the same objects as were passed to the calling servlet's service
(or calling filter's doFilter) method, or be subclasses of the
ServletRequestWrapper
or ServletResponseWrapper
classes that wrap them.
This will delay committal of the response until
AsyncContext#complete
is called on the returned
AsyncContext
, or the AsyncContext times out.
The timer for async timeouts will not start until the container-initiated dispatch that called startAsync has returned to the container.
If a timeout occurs and none of the
AsyncListener#onTimeout(AsyncEvent)
handlers call
AsyncContext#complete
or one of the
AsyncContext#dispatch
methods, the container must call
AsyncContext#complete
.
Calling AsyncContext#hasOriginalRequestAndResponse()
on
the returned AsyncContext will return false
(unless the passed in ServletRequest and ServletResponse arguments
are the original ones).
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.
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
AsyncContext
IllegalStateException
- if this request is within the scope of
a filter or servlet that does not support asynchronous operation,
that is, if isAsyncSupported()
returns false, or if this method
is called again outside the scope of a dispatch resulting from an
AsyncContext#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 request
IllegalStateException
- if this request has not been put
into asynchronous mode, i.e., if neither startAsync()
nor
startAsync(ServletRequest,ServletResponse)
has been calledvoid addAsyncListener(AsyncListener listener)
AsyncListener
with this request for
asynchronous complete and timeout events.
If startAsync()
or
startAsync(ServletRequest,ServletResponse)
is called on this
request, an AsyncEvent
will be sent to this AsyncListener as
soon as the asynchronous operation has completed or timed out.
The AsyncEvent will contain the ServletRequest and ServletResponse
objects that were used to initialize the AsyncContext
returned by the call to startAsync.
AsyncListener instances will be notified in the order in which they were added to this request.
listener
- the AsyncListener to be registeredvoid addAsyncListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse)
AsyncListener
with this request for
asynchronous complete and timeout events.
If startAsync()
or
startAsync(ServletRequest,ServletResponse)
is called on this
request, an AsyncEvent
will be sent to this AsyncListener as
soon as the asynchronous operation has completed or timed out.
The AsyncEvent will contain the given ServletRequest and
ServletResponse objects.
AsyncListener instances will be notified in the order in which they were added to this request.
The specified request and response objects, which will be included in the AsyncEvent that will be delivered to the given AsyncListener, should not be read from or written to, respectively, at the time when the AsyncEvent is delivered, because additional wrapping may have occurred after this method was called. One of the main reasons for allowing request and response objects to be passed to this method is to allow the AsyncListener to release any resources associated with them when the AsyncEvent is delivered.
listener
- the AsyncListener to be registeredservletRequest
- the ServletRequest that will be included
in the AsyncEventservletResponse
- the ServletResponse that will be included
in the AsyncEventvoid setAsyncTimeout(long timeout)
startAsync()
or
startAsync(ServletRequest, ServletResponse)
.
By default, the container's default timeout for asynchronous
operations, which is available via a call to
getAsyncTimeout()
, will be used.
A timeout value of 0 or less indicates that the asynchronous
operations will never time out.
If neither AsyncContext#complete
nor
AsyncContext#dispatch
is called within the
specified timeout, any listeners of type AsyncListener
that
were added to this request via a call to
addAsyncListener(AsyncListener)
or addAsyncListener(AsyncListener, ServletRequest,
ServletResponse)
will have their
AsyncListener#onTimeout(AsyncEvent)
method invoked.
This method raises an IllegalStateException
if
called after startAsync()
, unless it is called within the
scope of an AsyncContext#dispatch
, in which case the specified
timeout will be used to initialize the AsyncContext created by a new
call to startAsync()
, or will be ignored if startAsync()
is not called again.
timeout
- the timeout in milliseconds for any asynchronous
operations started on this request
IllegalStateException
- if called after startAsync()
,
unless within the scope of a dispatch resulting from an
AsyncContext#dispatch
long getAsyncTimeout()
startAsync()
or
startAsync(ServletRequest, ServletResponse)
.
This method returns the container's default timeout for
asynchronous operations, or the timeout value passed to the most
recent invocation of setAsyncTimeout(long)
.
A timeout value of 0 or less indicates that the asynchronous operation will never time out.
DispatcherType 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
|
DRAFT | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2009 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.