Spring MVC ControllerClassNameHandlerMapping example

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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容