在SpringMVC中,关于HandlerMapping的使用,主要包括两个部分:注册和查找。
在HandlerMapping的实现中,持有一个handlerMap这样一个HashMap,其中key是http请求的path信息,value可以是一个字符串,或者是一个处理请求的HandlerExecutionChain,如果是String类型,则会将其视为Spring的bean名称。在HandlerMapping对象的创建中,IoC容器执行了一个容器回调方法setApplicationContext,在这个方法中调用方法进行初始化,各个子类可以根据需求的不同覆写这个方法。
关于handlerMap信息的注册就是在方法中被执行的。
在基于SpringMVC的Web应用程序中,我们可以为DispatcherServlet提供多个Handler-Mapping供其使用。DispatcherServlet在选用HandlerMapping的过程中,将根据我们所指定的一系列HandlerMapping的优先级进行排序,然后优先使用优先级在前的HandlerMapping。如果当前的HandlerMapping能够返回可用的Handler,DispatcherServlet则使用当前返回的Handler进行Web请求的处理,而不再继续询问其他的HandlerMapping。否则,DispatcherServlet将继续按照各个HandlerMapping的优先级进行询问,直到获取一个可用的Handler为止。
HandlerMapping的优先级规定遵循Spring框架内一贯的Ordered接口所规定的语义。SpringMVC中可用的HandlerMapping实现全都实现了Ordered接口。假设我们优先使用SimpleUrl-HandlerMapping进行Handler的映射管理,其次使用,那么就可以在DispatcherServlet特定的WebApplicationContext中增加如代码清单24-3所示的配置内容。
代码清单24-3HandlerMapping指定优先级配置代码示例
<beanid="handlerMapping"class="org.
springframework.Web.servlet.handler.?
">
<propertyname="order"value="1"/>
<propertyname="mappings">
<value>
</value>
</property>
</bean>
<beanid="defaultHandlerMapping"?
class="org.springframework.Web.servlet.
handler.">
</bean>
如果不为HandlerMapping明确指定order,那么默认值为Integer.MAX_VALUE,对应最低优先级。所以,拥有order值为1的较之优先被调用。
HandlerMapping的意思是处理程序映射。
一、读音
英[ˈhændlə(r)ˈmæpɪŋ],美[ˈhændlərˈmæpɪŋ]。
二、Handler释义
处理器,句柄,处理程序
三、Mapping
映成,映射。
四、示例
Missing/handlermapping,Theservercannothandlethedirectory.
缺少/处理程序映射,服务器无法处理该目录。
扩展资料
HandlerMapping的相关词语—AddModuleMapping:
一、释义
添加模块映射。
二、读音
英[ædˈmɒdjuːlˈmæpɪŋ],美[ædˈmɑːdʒuːlˈmæpɪŋ]。
三、示例
Inthehandlermappingscreenclickon"addModuleMapping"andconfigureyourdesiredGatewaymodule.
在处理程序映射屏幕中,单击添加模块映射并配置想要的网关模块。