【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

总结

策略模式,每一种映射器方案都提供了对url 的解析的方案都是不同的

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

DispatcherServlet 拿着执行链去寻找对应的处理器适配器(HandlerAdapter)为什么要引入适配器?因为处理器(Handler)有很多种,DispatcherServlet没办法统一管理,所以出现了适配器。让适配器统一处理Handler,而DispatcherServlet统一处理适配器。根据请求去找对应的handler 

映射器的结构图

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

总结:多个映射器可以共存。相互不影响。

测试策略:不同的映射器有不同的映射策略,三个映射器全部存在于配置文件中,使用映射器的不同访问方式,全部可以访问成功。

 

 HandlerMapping请求流程总结:

DispatcherServlet

--->doDispatcher()

---->getHandler(request):

---->HandlerExecutionChain

------> hm.getHandler(request)-----》方法体中

----->ExecutionChain executionChain = getHandlerExecutionChain(handler, request);

----->new HandlerExecutionChain(handler)

----->chain.addInterceptor(interceptor);

我们知道Servlet的service方法是被Servlet容器调用的,这个时机是发生的有客户端向servlet请求服务时调用的,而这些都将其委托给DispatcherServlet的doDispatch方法。我们查看其关键代码。

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

 

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

 

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

 

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

 

 

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程

 

【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程