學習一種知識,我喜歡看看源碼是怎么進行它們類之間的關(guān)系以及方法的調(diào)用,是怎么實現(xiàn)的。這樣我才感覺踏實。

既然現(xiàn)在談到HandlerMapping,我們先知道HandlerMapping的作用:HandlerMapping的作用就是解析請求鏈接,然后根據(jù)請求鏈接找到執(zhí)行這個請求的類(HandlerMapping所說的handler,也就是我們寫的Controller或是Action)。

現(xiàn)在我們來了解HandlerMapping的繼承體系圖:

至于我們在配置文件中配置的BeanNameUrlHandlerMapping或者是SimpleUrlHandlerMapping,他們的目的是一樣的,只是通過請求鏈接來找handler的方式不一樣。

我們再來看看更詳細的繼承關(guān)系:

HandlerMapping的使用主要分為兩步:注冊和查找。

注冊是根據(jù)配置文件中的配置將一個字符串和一個Controller類以<key,value>的形式存入到Map中,這個key就是對應的url中的某個字段。

        查找就是HandlerMapping根據(jù)url中的的某個字段,在Map中以這個字段為key值對應的Controller類,并將Controller類封裝成一個HandlerExecutionChain對象,HandlerExecutionChain中除了有Controller對象外,還有一組攔截器。

現(xiàn)在我簡單以SimpleUrlHandlerMapping為例子來分析HandlerMapping是如何根據(jù)請求鏈接找到Controller類的。

1.注冊