【springmvc 的請求流程二】:(springmvc 的三大元件之一)處理器對映器的配置和通過處理器對映器返回請求鏈的原始碼流程
阿新 • • 發佈:2019-01-27
總結
策略模式,每一種對映器方案都提供了對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方法。我們檢視其關鍵程式碼。