1. 程式人生 > >【springmvc 的請求流程二】:(springmvc 的三大元件之一)處理器對映器的配置和通過處理器對映器返回請求鏈的原始碼流程

【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方法。我們檢視其關鍵程式碼。