Springmvc HandleMapping和HandleAdapter
一、HandleMapping:處理器對映
1.作用:找到請求和處理函式之間的對映關係
2.幾種HandleMapping介紹:
1.非註解 的HandleMapping
Spring2.5之前不支援註解處理器,所有處理器均實現介面重寫方法,這一階段使用如下三種HandleMapping,均實現org.springframework.web.servlet.HandleMapping介面:
1.BeanNameUrlHandleMapping:
DispatcherServlet預設的HandleMapping;會交給與url名字相同的控制器bean去處理該請求;
2.SimpleUrlHandleMapping:
直接將URL對映到控制器,必須顯示定義該HandleMapping:
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handle.SimpleUrlHandlerMapping">
<property name="mappings">
/*props中定義對映關係*/
<props>
/*prop key屬性寫url 標籤間寫對映的控制器bean*/
<prop key="/listCourses.go">listCoursesController</prop>
<prop key="/login.go">loginController</prop>
</props>
</property>
</bean>
3.ControllerClassNameMapping:
通過控制器的類名進行對映,訪問時類名首字母需要小寫。需要加入.do 如請求為Skr.do 則交給類名為Skr的控制器控制;
2.基於註解的HandleMapping
spring2.5之後,支援使用註解控制器,在配置檔案中使用註解驅動標籤:<mvc:annotation-drivern>標籤可自動註冊註解對映器和註解介面卡:
二、HandleAdapter:處理器適配
1.作用:Spring MVC 通過HandlerAdapter來實際呼叫處理函式。
舉例:
AnnotationMethodHandlerAdapter:DispatcherServlet中根據handlermapping找到對應的handler method後,首先檢查當前工程中註冊的所有可用的handlerAdapter,根據handlerAdapter中的supports方法找到可以使用的handlerAdapter。通過呼叫handlerAdapter中的handle方法來處理及準備handler method中的引數及annotation(這就是spring mvc如何將reqeust中的引數變成handle method中的輸入引數的地方),最終呼叫實際的handle method。