|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.context.support.ApplicationObjectSupport org.springframework.web.context.support.WebApplicationObjectSupport org.springframework.web.servlet.support.WebContentGenerator org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
public class AnnotationMethodHandlerAdapter
Implementation of the HandlerAdapter
interface that maps handler methods based on HTTP paths, HTTP methods and
request parameters expressed through the RequestMapping
annotation.
Supports request parameter binding through the RequestParam
annotation.
Also supports the ModelAttribute
annotation for exposing model attribute
values to the view, as well as InitBinder
for binder initialization methods
and SessionAttributes
for automatic session management of specific attributes.
This adapter can be customized through various bean properties.
A common use case is to apply shared binder initialization logic through
a custom WebBindingInitializer
.
setPathMatcher(org.springframework.util.PathMatcher)
,
setMethodNameResolver(org.springframework.web.servlet.mvc.multiaction.MethodNameResolver)
,
setWebBindingInitializer(org.springframework.web.bind.support.WebBindingInitializer)
,
setSessionAttributeStore(org.springframework.web.bind.support.SessionAttributeStore)
Field Summary | |
---|---|
static String |
PAGE_NOT_FOUND_LOG_CATEGORY
Log category to use when no mapped handler is found for a request. |
protected static Log |
pageNotFoundLogger
Additional logger to use when no mapped handler is found for a request. |
Fields inherited from class org.springframework.web.servlet.support.WebContentGenerator |
---|
METHOD_GET, METHOD_HEAD, METHOD_POST |
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
logger |
Constructor Summary | |
---|---|
AnnotationMethodHandlerAdapter()
|
Method Summary | |
---|---|
protected ServletRequestDataBinder |
createBinder(HttpServletRequest request,
Object target,
String objectName)
Template method for creating a new ServletRequestDataBinder instance. |
long |
getLastModified(HttpServletRequest request,
Object handler)
Same contract as for HttpServlet's getLastModified method. |
ModelAndView |
handle(HttpServletRequest request,
HttpServletResponse response,
Object handler)
Use the given handler to handle this request. |
protected ModelAndView |
handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex,
HttpServletRequest request,
HttpServletResponse response)
Handle the case where no request handler method was found. |
protected ModelAndView |
invokeHandlerMethod(HttpServletRequest request,
HttpServletResponse response,
Object handler)
|
void |
setAlwaysUseFullPath(boolean alwaysUseFullPath)
Set if URL lookup should always use the full path within the current servlet context. |
void |
setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)
Cache content produced by @SessionAttributes annotated handlers
for the given number of seconds. |
void |
setCustomArgumentResolver(WebArgumentResolver argumentResolver)
Set a custom ArgumentResolvers to use for special method parameter types. |
void |
setCustomArgumentResolvers(WebArgumentResolver[] argumentResolvers)
Set one or more custom ArgumentResolvers to use for special method parameter types. |
void |
setMethodNameResolver(MethodNameResolver methodNameResolver)
Set the MethodNameResolver to use for resolving default handler methods (carrying an empty @RequestMapping annotation). |
void |
setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)
Set the ParameterNameDiscoverer to use for resolving method parameter names if needed (e.g. for default attribute names). |
void |
setPathMatcher(PathMatcher pathMatcher)
Set the PathMatcher implementation to use for matching URL paths against registered URL patterns. |
void |
setSessionAttributeStore(SessionAttributeStore sessionAttributeStore)
Specify the strategy to store session attributes with. |
void |
setSynchronizeOnSession(boolean synchronizeOnSession)
Set if controller execution should be synchronized on the session, to serialize parallel invocations from the same client. |
void |
setUrlDecode(boolean urlDecode)
Set if context path and request URI should be URL-decoded. |
void |
setUrlPathHelper(UrlPathHelper urlPathHelper)
Set the UrlPathHelper to use for resolution of lookup paths. |
void |
setWebBindingInitializer(WebBindingInitializer webBindingInitializer)
Specify a WebBindingInitializer which will apply pre-configured configuration to every DataBinder that this controller uses. |
boolean |
supports(Object handler)
Given a handler instance, return whether or not this HandlerAdapter can support it. |
Methods inherited from class org.springframework.web.servlet.support.WebContentGenerator |
---|
applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, getCacheSeconds, getSupportedMethods, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, preventCaching, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader |
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport |
---|
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext |
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String PAGE_NOT_FOUND_LOG_CATEGORY
pageNotFoundLogger
,
Constant Field Valuesprotected static final Log pageNotFoundLogger
PAGE_NOT_FOUND_LOG_CATEGORY
Constructor Detail |
---|
public AnnotationMethodHandlerAdapter()
Method Detail |
---|
public void setAlwaysUseFullPath(boolean alwaysUseFullPath)
Default is "false".
UrlPathHelper.setAlwaysUseFullPath(boolean)
public void setUrlDecode(boolean urlDecode)
Uses either the request encoding or the default encoding according to the Servlet spec (ISO-8859-1).
UrlPathHelper.setUrlDecode(boolean)
public void setUrlPathHelper(UrlPathHelper urlPathHelper)
Use this to override the default UrlPathHelper with a custom subclass, or to share common UrlPathHelper settings across multiple HandlerMappings and HandlerAdapters.
public void setPathMatcher(PathMatcher pathMatcher)
AntPathMatcher
public void setMethodNameResolver(MethodNameResolver methodNameResolver)
@RequestMapping
annotation).
Will only kick in when the handler method cannot be resolved uniquely through the annotation metadata already.
public void setWebBindingInitializer(WebBindingInitializer webBindingInitializer)
public void setSessionAttributeStore(SessionAttributeStore sessionAttributeStore)
Default is DefaultSessionAttributeStore
,
storing session attributes in the HttpSession, using the same
attribute name as in the model.
public void setCacheSecondsForSessionAttributeHandlers(int cacheSecondsForSessionAttributeHandlers)
@SessionAttributes
annotated handlers
for the given number of seconds. Default is 0, preventing caching completely.
In contrast to the "cacheSeconds" property which will apply to all general
handlers (but not to @SessionAttributes
annotated handlers), this
setting will apply to @SessionAttributes
annotated handlers only.
WebContentGenerator.setCacheSeconds(int)
,
SessionAttributes
public void setSynchronizeOnSession(boolean synchronizeOnSession)
More specifically, the execution of each handler method will get synchronized if this flag is "true". The best available session mutex will be used for the synchronization; ideally, this will be a mutex exposed by HttpSessionMutexListener.
The session mutex is guaranteed to be the same object during
the entire lifetime of the session, available under the key defined
by the SESSION_MUTEX_ATTRIBUTE
constant. It serves as a
safe reference to synchronize on for locking on the current session.
In many cases, the HttpSession reference itself is a safe mutex as well, since it will always be the same object reference for the same active logical session. However, this is not guaranteed across different servlet containers; the only 100% safe way is a session mutex.
HttpSessionMutexListener
,
WebUtils.getSessionMutex(javax.servlet.http.HttpSession)
public void setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer)
Default is a LocalVariableTableParameterNameDiscoverer
.
public void setCustomArgumentResolver(WebArgumentResolver argumentResolver)
public void setCustomArgumentResolvers(WebArgumentResolver[] argumentResolvers)
public boolean supports(Object handler)
HandlerAdapter
A typical implementation:
return (handler instanceof MyHandler);
supports
in interface HandlerAdapter
handler
- handler object to check
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
HandlerAdapter
handle
in interface HandlerAdapter
request
- current HTTP requestresponse
- current HTTP responsehandler
- handler to use. This object must have previously been passed
to the supports
method of this interface, which must have
returned true
.
null
if the request has been handled directly
Exception
- in case of errorsprotected ModelAndView invokeHandlerMethod(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
Exception
public long getLastModified(HttpServletRequest request, Object handler)
HandlerAdapter
getLastModified
method.
Can simply return -1 if there's no support in the handler class.
getLastModified
in interface HandlerAdapter
request
- current HTTP requesthandler
- handler to use
HttpServlet.getLastModified(javax.servlet.http.HttpServletRequest)
,
LastModified.getLastModified(javax.servlet.http.HttpServletRequest)
protected ModelAndView handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex, HttpServletRequest request, HttpServletResponse response) throws Exception
The default implementation logs a warning and sends an HTTP 404 error. Alternatively, a fallback view could be chosen, or the NoSuchRequestHandlingMethodException could be rethrown as-is.
ex
- the NoSuchRequestHandlingMethodException to be handledrequest
- current HTTP requestresponse
- current HTTP response
null
if handled directly
Exception
- an Exception that should be thrown as result of the servlet requestprotected ServletRequestDataBinder createBinder(HttpServletRequest request, Object target, String objectName) throws Exception
The default implementation creates a standard ServletRequestDataBinder. This can be overridden for custom ServletRequestDataBinder subclasses.
request
- current HTTP requesttarget
- the target object to bind onto (or null
if the binder is just used to convert a plain parameter value)objectName
- the objectName of the target object
Exception
- in case of invalid state or argumentsServletRequestDataBinder.bind(javax.servlet.ServletRequest)
,
DataBinder.convertIfNecessary(Object, Class, MethodParameter)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |