在Spring MVC中, ControllerClassNameHandlerMapping使用约定将请求的URL映射到Controller(通过配置进行约定)。 它使用类名,删除“ Controller”后缀(如果存在),并返回其余的文本,小写并以“ /”开头。
请参见以下几个示例,以演示此ControllerClassNameHandlerMapping
类的用法。
1.之前和之后
默认情况下,Spring MVC使用BeanNameUrlHandlerMapping
处理程序映射。
<beans ...>
<bean name="/welcome.htm"
class="com.mkyong.common.controller.WelcomeController" />
<bean name="/helloGuest.htm"
class="com.mkyong.common.controller.HelloGuestController" />
</beans>
要启用ControllerClassNameHandlerMapping ,请在bean配置文件中对其进行声明,现在不再需要该控制器的bean名称 。
<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>
现在,Spring MVC通过以下约定映射请求的URL:
WelcomeController -> /welcome*
HelloGuestController -> /helloguest*
- /welcome.htm –> WelcomeController。
- /welcomeHome.htm –> WelcomeController。
- /helloguest.htm –> HelloGuestController。
- /helloguest12345.htm –> HelloGuestController。
- /helloGuest.htm,无法映射/ helloguest * ,“ g”大小写不匹配。
2.区分大小写
要解决上述区分大小写的问题,请声明“ caseSensitive ”属性并将其设置为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>
现在,Spring MVC通过以下约定映射请求的URL:
WelcomeController -> /welcome*
HelloGuestController -> /helloGuest*
- /helloGuest.htm –> HelloGuestController。
- /helloguest.htm,无法映射“ / helloGuest *”,“ G”大小写不匹配。
3. pathPrefix
另外,您可以指定一个前缀来映射所请求的URL,并声明为“ pathPrefix ”属性。
<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>
现在,Spring MVC通过以下约定映射请求的URL:
WelcomeController -> /customer/welcome*
HelloGuestController -> /customer/helloGuest*
- /customer/welcome.htm –> WelcomeController。
- /customer/helloGuest.htm –> HelloGuestController。
- /welcome.htm,失败。
- /helloGuest.htm,失败。
下载源代码
下载它– SpringMVC-ControllerClassNameHandlerMapping-Example.zip (7KB)
参考
翻译自: https://mkyong.com/spring-mvc/spring-mvc-controllerclassnamehandlermapping-example/