Class ServletRequestAttributes
- All Implemented Interfaces:
RequestAttributes
- Direct Known Subclasses:
ServletWebRequest
RequestAttributes interface.
Accesses objects from servlet request and HTTP session scope, with no distinction between "session" and "global session".
- Since:
- 2.0
- Author:
- Juergen Hoeller
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringConstant identifying theStringprefixed to the name of a destruction callback when it is stored in aHttpSession.Fields inherited from class AbstractRequestAttributes
requestDestructionCallbacksFields inherited from interface RequestAttributes
REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_REQUEST, SCOPE_SESSION -
Constructor Summary
ConstructorsConstructorDescriptionServletRequestAttributes(jakarta.servlet.http.HttpServletRequest request) Create a new ServletRequestAttributes instance for the given request.ServletRequestAttributes(jakarta.servlet.http.HttpServletRequest request, @Nullable jakarta.servlet.http.HttpServletResponse response) Create a new ServletRequestAttributes instance for the given request. -
Method Summary
Modifier and TypeMethodDescriptiongetAttribute(String name, int scope) Return the value for the scoped attribute of the given name, if any.String[]getAttributeNames(int scope) Retrieve the names of all attributes in the scope.final jakarta.servlet.http.HttpServletRequestExposes the nativeHttpServletRequestthat we're wrapping.final @Nullable jakarta.servlet.http.HttpServletResponseExposes the nativeHttpServletResponsethat we're wrapping (if any).protected final @Nullable jakarta.servlet.http.HttpSessiongetSession(boolean allowCreate) Exposes theHttpSessionthat we're wrapping.Return an id for the current underlying session.Expose the best available mutex for the underlying session: that is, an object to synchronize on for the underlying session.protected booleanisImmutableSessionAttribute(String name, @Nullable Object value) Determine whether the given value is to be considered as an immutable session attribute, that is, doesn't have to be re-set viasession.setAttributesince its value cannot meaningfully change internally.voidregisterDestructionCallback(String name, Runnable callback, int scope) Register a callback to be executed on destruction of the specified attribute in the given scope.protected voidregisterSessionDestructionCallback(String name, Runnable callback) Register the given callback as to be executed after session termination.voidremoveAttribute(String name, int scope) Remove the scoped attribute of the given name, if it exists.resolveReference(String key) Resolve the contextual reference for the given key, if any.voidsetAttribute(String name, Object value, int scope) Set the value for the scoped attribute of the given name, replacing an existing value (if any).toString()protected voidUpdate all accessed session attributes throughsession.setAttributecalls, explicitly indicating to the container that they might have been modified.Methods inherited from class AbstractRequestAttributes
isRequestActive, registerRequestDestructionCallback, removeRequestDestructionCallback, requestCompleted
-
Field Details
-
DESTRUCTION_CALLBACK_NAME_PREFIX
-
immutableValueTypes
-
-
Constructor Details
-
ServletRequestAttributes
public ServletRequestAttributes(jakarta.servlet.http.HttpServletRequest request) Create a new ServletRequestAttributes instance for the given request.- Parameters:
request- current HTTP request
-
ServletRequestAttributes
public ServletRequestAttributes(jakarta.servlet.http.HttpServletRequest request, @Nullable jakarta.servlet.http.HttpServletResponse response) Create a new ServletRequestAttributes instance for the given request.- Parameters:
request- current HTTP requestresponse- current HTTP response (for optional exposure)
-
-
Method Details
-
getRequest
public final jakarta.servlet.http.HttpServletRequest getRequest()Exposes the nativeHttpServletRequestthat we're wrapping. -
getResponse
Exposes the nativeHttpServletResponsethat we're wrapping (if any). -
getSession
Exposes theHttpSessionthat we're wrapping.- Parameters:
allowCreate- whether to allow creation of a new session if none exists yet
-
getAttribute
Description copied from interface:RequestAttributesReturn the value for the scoped attribute of the given name, if any.- Parameters:
name- the name of the attributescope- the scope identifier- Returns:
- the current attribute value, or
nullif not found
-
setAttribute
Description copied from interface:RequestAttributesSet the value for the scoped attribute of the given name, replacing an existing value (if any).- Parameters:
name- the name of the attributevalue- the value for the attributescope- the scope identifier
-
removeAttribute
Description copied from interface:RequestAttributesRemove the scoped attribute of the given name, if it exists.Note that an implementation should also remove a registered destruction callback for the specified attribute, if any. It does, however, not need to execute a registered destruction callback in this case, since the object will be destroyed by the caller (if appropriate).
- Parameters:
name- the name of the attributescope- the scope identifier
-
getAttributeNames
Description copied from interface:RequestAttributesRetrieve the names of all attributes in the scope.- Parameters:
scope- the scope identifier- Returns:
- the attribute names as String array
-
registerDestructionCallback
Description copied from interface:RequestAttributesRegister a callback to be executed on destruction of the specified attribute in the given scope.Implementations should do their best to execute the callback at the appropriate time: that is, at request completion or session termination, respectively. If such a callback is not supported by the underlying runtime environment, the callback must be ignored and a corresponding warning should be logged.
Note that 'destruction' usually corresponds to destruction of the entire scope, not to the individual attribute having been explicitly removed by the application. If an attribute gets removed via this facade's
RequestAttributes.removeAttribute(String, int)method, any registered destruction callback should be disabled as well, assuming that the removed object will be reused or manually destroyed.NOTE: Callback objects should generally be serializable if they are being registered for a session scope. Otherwise the callback (or even the entire session) might not survive web app restarts.
- Parameters:
name- the name of the attribute to register the callback forcallback- the destruction callback to be executedscope- the scope identifier
-
resolveReference
Description copied from interface:RequestAttributesResolve the contextual reference for the given key, if any.At a minimum: the HttpServletRequest reference for key "request", and the HttpSession reference for key "session".
- Parameters:
key- the contextual key- Returns:
- the corresponding object, or
nullif none found
-
getSessionId
Description copied from interface:RequestAttributesReturn an id for the current underlying session.- Returns:
- the session id as String (never
null)
-
getSessionMutex
Description copied from interface:RequestAttributesExpose the best available mutex for the underlying session: that is, an object to synchronize on for the underlying session.- Returns:
- the session mutex to use (never
null)
-
updateAccessedSessionAttributes
protected void updateAccessedSessionAttributes()Update all accessed session attributes throughsession.setAttributecalls, explicitly indicating to the container that they might have been modified.- Specified by:
updateAccessedSessionAttributesin classAbstractRequestAttributes
-
isImmutableSessionAttribute
Determine whether the given value is to be considered as an immutable session attribute, that is, doesn't have to be re-set viasession.setAttributesince its value cannot meaningfully change internally.The default implementation returns
trueforString,Character,Booleanand standardNumbervalues.- Parameters:
name- the name of the attributevalue- the corresponding value to check- Returns:
trueif the value is to be considered as immutable for the purposes of session attribute management;falseotherwise- See Also:
-
registerSessionDestructionCallback
Register the given callback as to be executed after session termination.Note: The callback object should be serializable in order to survive web app restarts.
- Parameters:
name- the name of the attribute to register the callback forcallback- the callback to be executed for destruction
-
toString
-