學(xué)習(xí)一種知識(shí),我喜歡看看源碼是怎么進(jìn)行它們類之間的關(guān)系以及方法的調(diào)用,是怎么實(shí)現(xiàn)的。這樣我才感覺(jué)踏實(shí)。
既然現(xiàn)在談到HandlerMapping,我們先知道HandlerMapping的作用:HandlerMapping的作用就是解析請(qǐng)求鏈接,然后根據(jù)請(qǐng)求鏈接找到執(zhí)行這個(gè)請(qǐng)求的類(HandlerMapping所說(shuō)的handler,也就是我們寫(xiě)的Controller或是Action)。
現(xiàn)在我們來(lái)了解HandlerMapping的繼承體系圖:
至于我們?cè)谂渲梦募信渲玫腂eanNameUrlHandlerMapping或者是SimpleUrlHandlerMapping,他們的目的是一樣的,只是通過(guò)請(qǐng)求鏈接來(lái)找handler的方式不一樣。
我們?cè)賮?lái)看看更詳細(xì)的繼承關(guān)系:
HandlerMapping的使用主要分為兩步:注冊(cè)和查找。
注冊(cè)是根據(jù)配置文件中的配置將一個(gè)字符串和一個(gè)Controller類以<key,value>的形式存入到Map中,這個(gè)key就是對(duì)應(yīng)的url中的某個(gè)字段。
查找就是HandlerMapping根據(jù)url中的的某個(gè)字段,在Map中以這個(gè)字段為key值對(duì)應(yīng)的Controller類,并將Controller類封裝成一個(gè)HandlerExecutionChain對(duì)象,HandlerExecutionChain中除了有Controller對(duì)象外,還有一組攔截器。
現(xiàn)在我簡(jiǎn)單以SimpleUrlHandlerMapping為例子來(lái)分析HandlerMapping是如何根據(jù)請(qǐng)求鏈接找到Controller類的。
1.注冊(cè)