SpringMVC中核心控制器DispatcherServlet接受请求后通过handlerMapping映射到一个HandlerExecutionChain 对象(包含一个 Handler 处理器对象、多个 HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新的映射策略。
处理器映射器有三种,三种可以共存,相互不影响,分别是BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping和ControllerClassNameHandlerMapping;
当多个HandlerMapping共存时,通过order属性来决定采用哪个处理映射。
比如下面的/hello请求,首先BeanNameUrlHandlerMapping优先执行
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> <property name="order" value="0"></property> </bean> <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="order" value="1"></property> <property name="mappings"> <props> <prop key="/hello">helloController</prop> </props> </property> </bean>