处理器映射器 HandlerMapping
HandlerMapping 接口负责根据request请求找到对应的Handler处理器及Interceptor拦截器,
并将它们封装在HandlerExecutionChain 对象中,返回给中央调度器
其常用的实现类有两种:
1.BeanNameUrlHandlerMapping(默认)
2.SimpleUrlHandlerMapping
BeanNameUrlHandlerMapping
1.根据请求的url与 与id 属性相匹配时,访问 class 属性对应的处理器
<bean id="/hello.do" class="com.springmvc.handlers.MyController"/>
2.id属性的 值 必须 以 “/” 开头(可依查看源码确定)
3.但是一个处理器Bean只能绑定一个请求url,如果出现多个url请求同一个处理器的情况,
就需要在Spring容器中配置多个该处理器类的<bean/>,
SimpleUrlHandlerMapping
将 url 与处理器的定义分离,还可以对url进行统一映射管理
1 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 2 <!-- 可以使用这两种方式(设置 mappings 属性 和 urlMap 属性) 将 一个处理器和 多个 url 绑定 --> 3 <!-- <property name="mappings"> 4 <props> 5 <prop key="/hello.do">myController</prop> 6 <prop key="/helloworld.do">myController</prop> 7 <prop key="/world.do">myController</prop> 8 </props> 9 </property>--> 10 11 <property name="urlMap"> 12 <map> 13 <entry key="/hello.do" value-ref="myController"/> 14 <entry key="/helloworld.do" value-ref="myController"/> 15 <entry key="/world.do" value-ref="myController"/> 16 </map> 17 </property> 18 19 </bean>
1 <bean id="myController" class="com.springmvc.handlers.MyController"/> 2 <!-- 如果 一个处理器 要绑定 多个url ,则需要创建多个 MyController ,这是一种浪费 ,所以可以使用SimpleUrlHandlerMapping-->
这样,当我们访问多个不同的url,时,这些url可能指向同一个 处理器