类 ServletRequestAttributes
- java.lang.Object
- org.springframework.web.context.request.AbstractRequestAttributes
- org.springframework.web.context.request.ServletRequestAttributes
- 所有已实现的接口:
RequestAttributes
- 直接已知子类:
ServletWebRequest
public class ServletRequestAttributes extends AbstractRequestAttributes
Servlet-based implementation of theRequestAttributes
interface.Accesses objects from servlet request and HTTP session scope, with no distinction between "session" and "global session".
- 从以下版本开始:
- 2.0
- 作者:
- Juergen Hoeller
- 另请参阅:
ServletRequest.getAttribute(java.lang.String)
,HttpSession.getAttribute(java.lang.String)
字段概要
字段 修饰符和类型 字段 说明 static String
DESTRUCTION_CALLBACK_NAME_PREFIX
Constant identifying theString
prefixed to the name of a destruction callback when it is stored in aHttpSession
.protected static Set<Class<?>>
immutableValueTypes
从类继承的字段 org.springframework.web.context.request.AbstractRequestAttributes
requestDestructionCallbacks
从接口继承的字段 org.springframework.web.context.request.RequestAttributes
REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION
构造器概要
构造器 构造器 说明 ServletRequestAttributes(HttpServletRequest request)
Create a new ServletRequestAttributes instance for the given request.ServletRequestAttributes(HttpServletRequest request, HttpServletResponse response)
Create a new ServletRequestAttributes instance for the given request.
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 Object
getAttribute(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.HttpServletRequest
getRequest()
Exposes the nativeHttpServletRequest
that we're wrapping.HttpServletResponse
getResponse()
Exposes the nativeHttpServletResponse
that we're wrapping (if any).protected HttpSession
getSession(boolean allowCreate)
Exposes theHttpSession
that we're wrapping.String
getSessionId()
Return an id for the current underlying session.Object
getSessionMutex()
Expose the best available mutex for the underlying session: that is, an object to synchronize on for the underlying session.protected boolean
isImmutableSessionAttribute(String name, 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.setAttribute
since its value cannot meaningfully change internally.void
registerDestructionCallback(String name, Runnable callback, int scope)
Register a callback to be executed on destruction of the specified attribute in the given scope.protected void
registerSessionDestructionCallback(String name, Runnable callback)
Register the given callback as to be executed after session termination.void
removeAttribute(String name, int scope)
Remove the scoped attribute of the given name, if it exists.Object
resolveReference(String key)
Resolve the contextual reference for the given key, if any.void
setAttribute(String name, Object value, int scope)
Set the value for the scoped attribute of the given name, replacing an existing value (if any).String
toString()
protected void
updateAccessedSessionAttributes()
Update all accessed session attributes throughsession.setAttribute
calls, explicitly indicating to the container that they might have been modified.从类继承的方法 org.springframework.web.context.request.AbstractRequestAttributes
isRequestActive, registerRequestDestructionCallback, removeRequestDestructionCallback, requestCompleted
字段详细资料
DESTRUCTION_CALLBACK_NAME_PREFIX
public static final String DESTRUCTION_CALLBACK_NAME_PREFIX
Constant identifying theString
prefixed to the name of a destruction callback when it is stored in aHttpSession
.
immutableValueTypes
protected static final Set<Class<?>> immutableValueTypes
构造器详细资料
ServletRequestAttributes
public ServletRequestAttributes(HttpServletRequest request)
Create a new ServletRequestAttributes instance for the given request.- 参数:
request
- current HTTP request
ServletRequestAttributes
public ServletRequestAttributes(HttpServletRequest request, HttpServletResponse response)
Create a new ServletRequestAttributes instance for the given request.- 参数:
request
- current HTTP requestresponse
- current HTTP response (for optional exposure)
方法详细资料
getRequest
public final HttpServletRequest getRequest()
Exposes the nativeHttpServletRequest
that we're wrapping.
getResponse
public final HttpServletResponse getResponse()
Exposes the nativeHttpServletResponse
that we're wrapping (if any).
getSession
protected final HttpSession getSession(boolean allowCreate)
Exposes theHttpSession
that we're wrapping.- 参数:
allowCreate
- whether to allow creation of a new session if none exists yet
getAttribute
public Object getAttribute(String name, int scope)
从接口复制的说明:RequestAttributes
Return the value for the scoped attribute of the given name, if any.- 参数:
name
- the name of the attributescope
- the scope identifier- 返回:
- the current attribute value, or
null
if not found
setAttribute
public void setAttribute(String name, Object value, int scope)
从接口复制的说明:RequestAttributes
Set the value for the scoped attribute of the given name, replacing an existing value (if any).- 参数:
name
- the name of the attributevalue
- the value for the attributescope
- the scope identifier
removeAttribute
public void removeAttribute(String name, int scope)
从接口复制的说明:RequestAttributes
Remove 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).
- 参数:
name
- the name of the attributescope
- the scope identifier
getAttributeNames
public String[] getAttributeNames(int scope)
从接口复制的说明:RequestAttributes
Retrieve the names of all attributes in the scope.- 参数:
scope
- the scope identifier- 返回:
- the attribute names as String array
registerDestructionCallback
public void registerDestructionCallback(String name, Runnable callback, int scope)
从接口复制的说明:RequestAttributes
Register 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.
- 参数:
name
- the name of the attribute to register the callback forcallback
- the destruction callback to be executedscope
- the scope identifier
resolveReference
public Object resolveReference(String key)
从接口复制的说明:RequestAttributes
Resolve the contextual reference for the given key, if any.At a minimum: the HttpServletRequest/PortletRequest reference for key "request", and the HttpSession/PortletSession reference for key "session".
- 参数:
key
- the contextual key- 返回:
- the corresponding object, or
null
if none found
getSessionId
public String getSessionId()
从接口复制的说明:RequestAttributes
Return an id for the current underlying session.- 返回:
- the session id as String (never
null
)
getSessionMutex
public Object getSessionMutex()
从接口复制的说明:RequestAttributes
Expose the best available mutex for the underlying session: that is, an object to synchronize on for the underlying session.- 返回:
- the session mutex to use (never
null
)
updateAccessedSessionAttributes
protected void updateAccessedSessionAttributes()
Update all accessed session attributes throughsession.setAttribute
calls, explicitly indicating to the container that they might have been modified.
isImmutableSessionAttribute
protected boolean isImmutableSessionAttribute(String name, 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.setAttribute
since its value cannot meaningfully change internally.The default implementation returns
true
forString
,Character
,Boolean
and standardNumber
values.- 参数:
name
- the name of the attributevalue
- the corresponding value to check- 返回:
true
if the value is to be considered as immutable for the purposes of session attribute management;false
otherwise- 另请参阅:
updateAccessedSessionAttributes()
registerSessionDestructionCallback
protected void registerSessionDestructionCallback(String name, Runnable callback)
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.
- 参数:
name
- the name of the attribute to register the callback forcallback
- the callback to be executed for destruction