zoukankan      html  css  js  c++  java
  • Spring MVC ControllerClassNameHandlerMapping example

    handler mapping是把url跟控制器关联起来。

    In Spring MVC, ControllerClassNameHandlerMapping use convention to map requested URL to Controller (convention over configuration). It takes the Class name, remove the ‘Controller’ suffix if exists and return the remaining text, lower-cased and with a leading “/”.

    See following few examples to demonstrate the use of this ControllerClassNameHandlerMapping class.

    1. Before and After

    By default, Spring MVC is using the BeanNameUrlHandlerMapping handler mapping.

    <beans ...>
    
      <bean name="/welcome.htm" 
            class="com.mkyong.common.controller.WelcomeController" />
    	
      <bean name="/helloGuest.htm" 
            class="com.mkyong.common.controller.HelloGuestController" />
    
    </beans>
    

    To enable the ControllerClassNameHandlerMapping, declared it in the bean configuration file, and now the controller’s bean’s name is no longer required.

    <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>
    

    Now, Spring MVC is mapping the requested URL by following conventions :

    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.

    2. Case sensitive

    To solve the case sensitive issue stated above, declared the “caseSensitive” property and set it to true.

    <beans ...>
    
      <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
           <property name="caseSensitive" value="true" />
      </bean>
    	
      <bean class="com.mkyong.common.controller.WelcomeController" />
    	
      <bean class="com.mkyong.common.controller.HelloGuestController" />
    
    </beans>
    

    Now, Spring MVC is mapping the requested URL by the following conventions :

    WelcomeController -> /welcome*
    HelloGuestController -> /helloGuest*
    /helloGuest.htm –> HelloGuestController.
    

    /helloguest.htm, failed to map “/helloGuest*”, the “G” case is not match.

    3. pathPrefix

    Additionally, you can specify a prefix to maps the requested URL, declared a “pathPrefix” property.

    <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>
    

    Now, Spring MVC is mapping the requested URL by the following conventions :

    WelcomeController -> /customer/welcome*
    HelloGuestController -> /customer/helloGuest*
    

    /customer/welcome.htm –> WelcomeController.
    /customer/helloGuest.htm –> HelloGuestController.
    /welcome.htm, failed.
    /helloGuest.htm, failed.

  • 相关阅读:
    第一章:Android系统的编译和移植实例读书笔记
    第二章:Android系统与嵌入式开发读书笔记
    第三章:Android移植平台工具介绍读书笔记
    第十章 嵌入式Linux的调试技术
    第九章 硬件抽象层:HAL
    第八章 让开发板发出声音:蜂鸣器驱动
    第七章 LED将为我闪烁:控制发光二极管
    第六章 第一个Linux驱动程序:统计单词个数
    第五章 搭建S3C6410开发板的测试环境
    第四章 源代码的下载和编译
  • 原文地址:https://www.cnblogs.com/ghgyj/p/4755300.html
Copyright © 2011-2022 走看看