|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.springframework.context.support.ApplicationObjectSupport
org.springframework.web.context.support.WebApplicationObjectSupport
org.springframework.web.servlet.handler.AbstractHandlerMapping
org.springframework.web.servlet.handler.AbstractUrlHandlerMapping
public abstract class AbstractUrlHandlerMapping
Abstract base class for URL-mapped HandlerMapping
implementations. Provides infrastructure for mapping handlers to URLs and configurable
URL lookup. For information on the latter, see "alwaysUseFullPath" property.
Supports direct matches, e.g. a registered "/test" matches "/test", and
various Ant-style pattern matches, e.g. a registered "/t*" pattern matches
both "/test" and "/team", "/test/*" matches all paths in the "/test" directory,
"/test/**" matches all paths below "/test". For details, see the
AntPathMatcher
javadoc.
Will search all path patterns to find the most exact match for the current request path. The most exact match is defined as the longest path pattern that matches the current request path.
Nested Class Summary | |
---|---|
private class |
AbstractUrlHandlerMapping.PathExposingHandlerInterceptor
Special interceptor for exposing the HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE attribute. |
private class |
AbstractUrlHandlerMapping.UriTemplateVariablesHandlerInterceptor
Special interceptor for exposing the HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE attribute. |
Field Summary | |
---|---|
private java.util.Map<java.lang.String,java.lang.Object> |
handlerMap
|
private boolean |
lazyInitHandlers
|
private java.lang.Object |
rootHandler
|
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
logger |
Fields inherited from interface org.springframework.web.servlet.HandlerMapping |
---|
BEST_MATCHING_PATTERN_ATTRIBUTE, INTROSPECT_TYPE_LEVEL_MAPPING, PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE, URI_TEMPLATE_VARIABLES_ATTRIBUTE |
Fields inherited from interface org.springframework.core.Ordered |
---|
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE |
Constructor Summary | |
---|---|
AbstractUrlHandlerMapping()
|
Method Summary | |
---|---|
protected java.lang.Object |
buildPathExposingHandler(java.lang.Object rawHandler,
java.lang.String bestMatchingPattern,
java.lang.String pathWithinMapping,
java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables)
Build a handler object for the given raw handler, exposing the actual handler, the HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE , as well as
the HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE before executing the handler. |
protected void |
exposePathWithinMapping(java.lang.String bestMatchingPattern,
java.lang.String pathWithinMapping,
HttpServletRequest request)
Expose the path within the current mapping as request attribute. |
protected void |
exposeUriTemplateVariables(java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables,
HttpServletRequest request)
Expose the URI templates variables as request attribute. |
private java.lang.String |
getHandlerDescription(java.lang.Object handler)
|
protected java.lang.Object |
getHandlerInternal(HttpServletRequest request)
Look up a handler for the URL path of the given request. |
java.util.Map<java.lang.String,java.lang.Object> |
getHandlerMap()
Return the registered handlers as an unmodifiable Map, with the registered path as key and the handler object (or handler bean name in case of a lazy-init handler) as value. |
java.lang.Object |
getRootHandler()
Return the root handler for this handler mapping (registered for "/"), or null if none. |
protected java.lang.Object |
lookupHandler(java.lang.String urlPath,
HttpServletRequest request)
Look up a handler instance for the given URL path. |
protected void |
registerHandler(java.lang.String[] urlPaths,
java.lang.String beanName)
Register the specified handler for the given URL paths. |
protected void |
registerHandler(java.lang.String urlPath,
java.lang.Object handler)
Register the specified handler for the given URL path. |
void |
setLazyInitHandlers(boolean lazyInitHandlers)
Set whether to lazily initialize handlers. |
void |
setRootHandler(java.lang.Object rootHandler)
Set the root handler for this handler mapping, that is, the handler to be registered for the root path ("/"). |
protected boolean |
supportsTypeLevelMappings()
Indicates whether this handler mapping support type-level mappings. |
protected void |
validateHandler(java.lang.Object handler,
HttpServletRequest request)
Validate the given handler against the current request. |
Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerMapping |
---|
adaptInterceptor, detectMappedInterceptors, extendInterceptors, getAdaptedInterceptors, getDefaultHandler, getHandler, getHandlerExecutionChain, getMappedInterceptors, getOrder, getPathMatcher, getUrlPathHelper, initApplicationContext, initInterceptors, setAlwaysUseFullPath, setDefaultHandler, setInterceptors, setOrder, setPathMatcher, setUrlDecode, setUrlPathHelper |
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, requiredContextClass, setApplicationContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private java.lang.Object rootHandler
private boolean lazyInitHandlers
private final java.util.Map<java.lang.String,java.lang.Object> handlerMap
Constructor Detail |
---|
public AbstractUrlHandlerMapping()
Method Detail |
---|
public void setRootHandler(java.lang.Object rootHandler)
Default is null
, indicating no root handler.
public java.lang.Object getRootHandler()
null
if none.
public void setLazyInitHandlers(boolean lazyInitHandlers)
If you want to allow your controllers to be lazily initialized, make them "lazy-init" and set this flag to true. Just making them "lazy-init" will not work, as they are initialized through the references from the handler mapping in this case.
protected java.lang.Object getHandlerInternal(HttpServletRequest request) throws java.lang.Exception
getHandlerInternal
in class AbstractHandlerMapping
request
- current HTTP request
null
if none found
java.lang.Exception
- if there is an internal errorprotected java.lang.Object lookupHandler(java.lang.String urlPath, HttpServletRequest request) throws java.lang.Exception
Supports direct matches, e.g. a registered "/test" matches "/test", and various Ant-style pattern matches, e.g. a registered "/t*" matches both "/test" and "/team". For details, see the AntPathMatcher class.
Looks for the most exact pattern, where most exact is defined as the longest path pattern.
urlPath
- URL the bean is mapped torequest
- current HTTP request (to expose the path within the mapping to)
null
if not found
java.lang.Exception
exposePathWithinMapping(java.lang.String, java.lang.String, HttpServletRequest)
,
AntPathMatcher
protected void validateHandler(java.lang.Object handler, HttpServletRequest request) throws java.lang.Exception
The default implementation is empty. Can be overridden in subclasses, for example to enforce specific preconditions expressed in URL mappings.
handler
- the handler object to validaterequest
- current HTTP request
java.lang.Exception
- if validation failedprotected java.lang.Object buildPathExposingHandler(java.lang.Object rawHandler, java.lang.String bestMatchingPattern, java.lang.String pathWithinMapping, java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables)
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
, as well as
the HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE
before executing the handler.
The default implementation builds a HandlerExecutionChain
with a special interceptor that exposes the path attribute and uri template variables
rawHandler
- the raw handler to exposepathWithinMapping
- the path to expose before executing the handleruriTemplateVariables
- the URI template variables, can be null
if no variables found
protected void exposePathWithinMapping(java.lang.String bestMatchingPattern, java.lang.String pathWithinMapping, HttpServletRequest request)
pathWithinMapping
- the path within the current mappingrequest
- the request to expose the path toHandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
protected void exposeUriTemplateVariables(java.util.Map<java.lang.String,java.lang.String> uriTemplateVariables, HttpServletRequest request)
uriTemplateVariables
- the URI template variablesrequest
- the request to expose the path toHandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
protected void registerHandler(java.lang.String[] urlPaths, java.lang.String beanName) throws BeansException, java.lang.IllegalStateException
urlPaths
- the URLs that the bean should be mapped tobeanName
- the name of the handler bean
BeansException
- if the handler couldn't be registered
java.lang.IllegalStateException
- if there is a conflicting handler registeredprotected void registerHandler(java.lang.String urlPath, java.lang.Object handler) throws BeansException, java.lang.IllegalStateException
urlPath
- the URL the bean should be mapped tohandler
- the handler instance or handler bean name String
(a bean name will automatically be resolved into the corresponding handler bean)
BeansException
- if the handler couldn't be registered
java.lang.IllegalStateException
- if there is a conflicting handler registeredprivate java.lang.String getHandlerDescription(java.lang.Object handler)
public final java.util.Map<java.lang.String,java.lang.Object> getHandlerMap()
AbstractHandlerMapping.getDefaultHandler()
protected boolean supportsTypeLevelMappings()
false
.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |