BeanNameUrlHandlerMapping:
默认的handler 作用如同名字 根据request请求的URL与每一个ControllerBean的名字进行匹配
配置文件:
<beans ...>
<bean
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/welcome.htm"
class="com.mkyong.common.controller.WelcomeController" />
<bean name="/streetName.htm"
class="com.mkyong.common.controller.StreetNameController" />
<bean name="/process*.htm"
class="com.mkyong.common.controller.ProcessController" />
</beans>
匹配的request的URL路径
/welcome.htm is requested, DispatcherServlet will forward the request to the “WelcomeController“.
/streetName.htm is requested, DispatcherServlet will forward the request to the “StreetNameController“.
/processCreditCard.htm or /process{any thing}.htm is requested, DispatcherServlet will forward the request to the “ProcessController“.
注意:因为BeanNameUrlHandlerMapping为默认的handler 所以配置文件中的<bean class="org.springframework.web.servelt.handler.BeanNameUrlHandlerMapping" />可以不写。
ControllerClassNameHandlerMapping:
根据每个controller的类的类型进行路径匹配
配置文件
<beans ...>
<bean
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
<bean class="com.mkyong.common.controller.WelcomeController" />
<bean class="com.mkyong.common.controller.HelloGuestController" />
</beans>
匹配路径:
WelcomeController -> /welcome*
HelloGuestController -> /helloguest*
/welcome.htm –> WelcomeController.
/welcomeHome.htm –> WelcomeController.
/helloguest.htm –> HelloGuestController.
/helloguest12345.htm –> HelloGuestController.
/helloGuest.htm, failed to map /helloguest*, the “g” case is not match
注意:ControllerClassNameHandlerMapping可以设置路径是否区分大小写,以及设置路径的上级路径
配置文件:
<beans ...>
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
<property name="caseSensitive" value="true" />
<property name="pathPrefix" value="/customer" />
</bean>
<bean class="com.mkyong.common.controller.WelcomeController" />
<bean class="com.mkyong.common.controller.HelloGuestController" />
</beans>
匹配路径:
WelcomeController -> /customer/welcome*
HelloGuestController -> /customer/helloGuest*
/customer/welcome.htm –> WelcomeController.
/customer/helloGuest.htm –> HelloGuestController.
/welcome.htm, failed.
/helloGuest.htm, failed.
SimpleUrlHandlerMapping :
Request的路径和指定的Controller进行匹配,两种配置模式
配置文件1:
<beans ...>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/welcome.htm">welcomeController</prop>
<prop key="/*/welcome.htm">welcomeController</prop>
<prop key="/helloGuest.htm">helloGuestController</prop>
</props>
</property>
</bean>
<bean id="welcomeController"
class="com.mkyong.common.controller.WelcomeController" />
<bean id="helloGuestController"
class="com.mkyong.common.controller.HelloGuestController" />
</beans>
配置文件2:
<beans ...>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/welcome.htm=welcomeController
/*/welcome.htm=welcomeController
/helloGuest.htm=helloGuestController
</value>
</property>
</bean>
<bean id="welcomeController"
class="com.mkyong.common.controller.WelcomeController" />
<bean id="helloGuestController"
class="com.mkyong.common.controller.HelloGuestController" />
</beans>
匹配的路径:
/welcome.htm –> welcomeController.
/{anything}/welcome.htm –> welcomeController.
/helloGuest.htm –> helloGuestController.
通常可能会用到几种handler混合使用的模式。例如,使用ControllerClassNameHandlerMapping映射所有的约定处理程序映射,并明确 SimpleUrlHandlerMapping以映射其他特殊处理程序映射。
配置文件:
<beans ...>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/index.htm=welcomeController
/welcome.htm=welcomeController
/main.htm=welcomeController
/home.htm=welcomeController
</value>
</property>
<property name="order" value="0" />
</bean>
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
<property name="caseSensitive" value="true" />
<property name="order" value="1" />
</bean>
<bean id="welcomeController"
class="com.mkyong.common.controller.WelcomeController" />
<bean class="com.mkyong.common.controller.HelloGuestController" />
</beans>
在上述的配置文件中,指定的处理程序映射优来避免冲突(重要)。您可以通过配置“order”的来设定优先级,其中较低的order值具有更高的优先级。