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>

发表评论