Spring MVC之HandlerMapping
spring的HandlerMapping,说白了就是根据URL找到访问哪个对象哪个方法,将这些放到Handler对象中,然后Handler和拦截器一起放到HandlerExecutionChain对象中。
HandlerMapping的使用主要分为两步:注册和查找
注册是根据配置文件中的配置将一个字符串和一个Controller类以<key,value>的形式存入到Map中,这个key就是对应的url中的某个字段。
查找就是HandlerMapping根据url中的的某个字段,在Map中以这个字段为key值对应的Controller类,并将Controller类封装成一个HandlerExecutionChain对象,HandlerExecutionChain中除了有Controller对象外,还有一组拦截器。
HandlerMapping返回的是一个HandlerExecutionChain对象,其中包含:
1. Handler(其中包含bean)
2. bean需要的一组拦截器
HandlerMapping接口的实现 :
BeanNameUrlHandlerMapping :通过对比url和bean的name找到对应的对象
SimpleUrlHandlerMapping :也是直接配置url和对应bean,比BeanNameUrlHandlerMapping功能更多
DefaultAnnotationHandlerMapping : 主要是针对注解配置@RequestMapping的,已过时
RequestMappingHandlerMapping :取代了上面一个
总结
handlerMapping的作用
handlerMapping根据用户请求找到执行该请求的controller。
handlerMapping的找到controller过程
1. 根据配置文件对url到controller的映射进行注册
2. 根据具体的url请求找到执行该请求的controller