1. 程式人生 > >Springmvc HandleMapping和HandleAdapter

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。