codecamp

Spring MVC 控制器类名-处理器映射

ControllerClassNameHandlerMapping类是HandlerMapping接口的一个实现,它是通过一个约定来解析请求URL及处理该请求的@Controller控制器实例之间的映射关系。

请看下面一个简单的控制器实现。请注意留意该类的 名称

public class **ViewShoppingCartController** implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
        // 这个例子中方法的具体实现并不重要,故忽略。
    }

}

对应的Spring Web MVC配置文件如下所示:

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

<bean id="**viewShoppingCart**" class="x.y.z.ViewShoppingCartController">
    <!-- 注入需要的依赖 -->
</bean>

ControllerClassNameHandlerMapping会查找当前应用上下文中注册的所有处理器(也即控制器)bean,并去除类名的Controller后缀作为决定处理器映射的依据。因此,类名ViewShoppingCartController会被映射到匹配/viewshoppingcart*的请求URL上。

让我们多看几个例子,这样你对于核心的思想会马上熟悉起来(注意URL中路径是全小写,而Controller控制器类名符合驼峰命名法):

  • WelcomeController将映射到/welcome*请求URL
  • HomeController 将映射到/home*请求URL
  • IndexController 将映射到/index*请求URL
  • RegisterController 将映射到/register*请求URL

对于MultiActionController处理器类,映射规则要稍微复杂一些。请看下面的代码,假设这里的控制器都是MultiActionController的实现:

  • AdminController将映射到/admin/*请求URL
  • CatalogController将映射到/catalog/*请求URL

只要所有控制器Controller实现都遵循xxxController这样的命名规范,那么ControllerClassNameHandlerMapping能把你从定义维护一个 长长长 SimpleUrlHandlerMapping映射表的重复工作中拯救出来。

ControllerClassNameHandlerMapping类继承自 AbstractHandlerMapping基类。因此,你可以视它与其他HandlerMapping实现一样,定义你所需要的拦截器HandlerInterceptor实例及其他所有东西。


Spring MVC 关于Web安全
Spring MVC 模型ModelMap
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }