spring MVC handler


原文例子: http://www.mkyong.com/tutorials/spring-mvc-tutorials/


 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值具有更高的优先级。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值