【springmvc 的请求流程二】:(springmvc 的三大组件之一)处理器映射器的配置和通过处理器映射器返回请求链的源码流程
总结
策略模式,每一种映射器方案都提供了对url 的解析的方案都是不同的
DispatcherServlet 拿着执行链去寻找对应的处理器适配器(HandlerAdapter)为什么要引入适配器?因为处理器(Handler)有很多种,DispatcherServlet没办法统一管理,所以出现了适配器。让适配器统一处理Handler,而DispatcherServlet统一处理适配器。根据请求去找对应的handler
映射器的结构图
总结:多个映射器可以共存。相互不影响。
测试策略:不同的映射器有不同的映射策略,三个映射器全部存在于配置文件中,使用映射器的不同访问方式,全部可以访问成功。
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方法。我们查看其关键代码。