我使用this鏈接來研究Spring MVC。如前所述,dispatcher-servlet處理所有傳入請求。哪一個是Controller,哪一個是Spring MVC中的HandlerMapping?
它還描述了有一個HandlerMapping和一個控制器。但是,在源代碼中,僅使用了控制器。那麼HandlerMapping是什麼?是不是一個單獨的文件?
或者是否存在於其他複雜的場景中?
我使用this鏈接來研究Spring MVC。如前所述,dispatcher-servlet處理所有傳入請求。哪一個是Controller,哪一個是Spring MVC中的HandlerMapping?
它還描述了有一個HandlerMapping和一個控制器。但是,在源代碼中,僅使用了控制器。那麼HandlerMapping是什麼?是不是一個單獨的文件?
或者是否存在於其他複雜的場景中?
如果在配置中未明確指定處理程序映射,則BeanNameUrlHandlerMapping
默認情況下會創建並使用。
從你鏈接的文章:。
「默認情況下,DispatcherServlet
使用BeanNameUrlHandlerMapping
映射傳入請求的BeanNameUrlHandlerMapping
使用bean名稱作爲URL模式由於BeanNameUrlHandlerMapping
默認情況下使用,無需執行任何單獨的配置。「
Controller和HandlerMapping
是Spring MVC中的兩個不同的東西。 控制器是用於處理請求的實際Java類。我們在類定義的頂部聲明@Controller
。 HandlerMapping
是在Spring框架的類中構建的。 Spring框架中有許多hanlder映射,如BeanNameUrlHandlerMapping
,ControllerClassNameHandlerMapping
等。默認情況下,BeanNameUrlHandlerMapping
用於映射請求。該類在所有控制器中進行搜索,將該特定請求映射到該方法。
處理程序映射作爲分派器servlet的幫助器。它有助於確定適用於Dispatcher servlet的控制器bean。缺省處理程序映射Bean是DefaultUrlHandlerMapping
。
它通過url標識控制器bean。它將URL中的名稱與控制器bean相匹配。如果匹配,它將返回到DispatcherServlet
,最後servlet執行控制器的業務方法並將ModelAndView對象返回給調度程序servlet。
DispatcherServlet
查詢HandlerMapping並調用與該請求相關聯的Controller。Controller
通過調用相應的服務方法來處理請求,並將一個ModeAndView對象返回給DispatcherServlet。Controller
是特定類型的處理程序,即Controller
基於用戶輸入返回不同的視圖。但所有處理程序都不是Controllers
。HandlerMapping
:HandlerMapping
策略用於地圖對某些處理程序控制器(或控制器)和/或方法的HTTP客戶端請求。這是基於請求URL和HTTP方法完成的,但也可能包含請求參數,請求標頭或其他自定義因素。例如,SimpleUrlHandlerMapping
或BeanNameUrlHandlerMapping
。
如果兩個問題有相同的答案,他們極有可能是重複的。不要加倍發佈答案。投票結束重複的問題。 –