http://blog.chinaunix.net/uid-20415521-id-1949916.html
SpingMVC中的HandlerMapping (2007-05-22 11:33)
分类: Spring
DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean——这个Bean的名字为“HandlerMapping”。
HandlerMapping是把一个URL指定到一个Controller上,(就像应用系统的web.xml文件使用
Spring带有三种HandlerMapping,(SpringMVC中的所有HandlerMapping都实现了接口org.springframework.web.servlet. HandlerMapping)。
1、BeanNameUrlHandlerMapping
这是Dispatcher Servlet的默认的HandlerMapping,所以在应用上下文配置文件中简单地用“Url样式”来定义一个控制器Bean的名字,就可以告诉Dispatcher Servlet什么样式的请求应该由哪个控制器去处理,而不用显式地定义一个HandlerMapping。(私下说一句,这样做虽然简单,但这样用URL样式定义出来的ControllerBean,其名字显得古怪,因为这个名字同时也是Controller Bean的实例名)
例:若控制器ListCoursesController的URL样式是“listCourses.go”,则
class="com.w3cs.vlar.ListCoursesController">
当然,也可以在定义这个控制器Bean之前,显式地声明你所用的HandlerMapping,显式定义如下:
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> 2、SimpleUrlHandlerMapping 这种方式不同于BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping不需定义Controller Bean的名字,而是直接把URL映射到控制器。 由于SimpleUrlHandlerMapping不是Dispatcher Servlet默认的HandlerMapping,所以这个HandlerMapping必须得显式定义。 下面定义了一个ID为“SimpleUrl”的HandlerMapping Bean:
解释:
1)、SimpleUrlHandlerMapping中,用
2)、
3、CommonsPathMapHandlerMapping
这个处理器使用控制器代码中的元数据将控制器映射到URL。但具体俺不会用。谁知道了可以告诉俺!!!