18.13.1Controller ControllerClassNameHandlerMapping
ControllerClassNameHandlerMapping类是HandlerMapping实现,它使用约定来确定请求URL和处理这些请求的Controller实例之间的映射。
考虑以下简单的Controller实现。 请特别注意class的名称。
public class ViewShoppingCartController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
        // the implementation is not hugely important for this example...
    }
}
这里是相应的Spring Web MVC配置文件的一个片段:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean id="viewShoppingCart" class="x.y.z.ViewShoppingCartController">
    <!-- 根据需要注入依赖关系... -->
</bean>
ControllerClassNameHandlerMapping查找在其应用程序上下文中定义的所有各种处理程序(或Controller)Bean,并从名称中除去Controller以定义其处理程序映射。 因此,ViewShoppingCartController映射到/viewshoppingcart *请求URL。
让我们来看一些更多的例子,让中心思想变得非常熟悉。 (请注意URL中的所有小写字母,而不是骆驼式的Controller类名称。)
WelcomeController映射到/welcome*请求URLHomeController映射到/home*请求URLIndexController映射到/index*请求URLRegisterController映射到/register*请求URL
在MultiActionController处理程序类的情况下,生成的映射稍微复杂一些。 以下示例中的Controller名称假定为MultiActionController实现:
AdminController映射到/admin/*请求URLCatalogController映射到/catalog/*请求URL
如果按照惯例将Controller实现命名为xxxController,那么ControllerClassNameHandlerMapping将为您节省定义和维护SimpleUrlHandlerMapping(或类似的)的繁琐工作。
ControllerClassNameHandlerMapping类扩展了AbstractHandlerMapping基类,因此您可以像处理许多其他HandlerMapping实现一样定义HandlerInterceptor实例和其他所有内容。