|
當客戶的請求來到時,DispatcherServlet根據一個Handler mapping的實例了解到,如何將請求轉發至對應的Controller,對於Web應用程式來說,通常就是以URL路徑對應至Controller。 DispatcherServlet預設的Handler mapping是 org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,所以即使您在 Bean定義檔中沒有明確的宣告BeanNameUrlHandlerMapping,也會使用BeanNameUrlHandlerMapping依每 個Bean定義的 "name"屬性上之URL來決定該使用哪一個Controller,例如: ...
<bean id="viewResolver" class="org.springframework.web.servlet. → view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <bean name="/hello.do" class="onlyfun.caterpillar.HelloController"> <property name="viewPage"> <value>hello</value> </property> </bean> ... 在上面的設定中,使用者對/hello.do路徑的請求,DispatchServlet都會交由HelloController的實例來處理。 BeanNameUrlHandlerMapping是個簡單的Handler mapping,方便但僅適用於小型的應用程式,因為這讓您的URL與Controller的類別名稱直接建立關係,在Spring的Handler mapping中最常使用的是 org.springframework.web.servlet.handler.SimpleUrlHandlerMapping,一個使用的例子如 下所示: ...
<bean id="urlHandlerMapping" class="org.springframework.web.servlet. → handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello.do"> helloController </prop> <prop key="/welcome.do"> welcomeController </prop> </props> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet. → view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <bean id="helloController" class="onlyfun.caterpillar.HelloController"> <property name="viewPage"> <value>hello</value> </property> </bean> <bean id="welcomeController" class="onlyfun.caterpillar.WelcomeController"> ... </bean> ... 在"mappings"屬性的設置中,<prop>的"key"設置的是請求的URL,而<prop>與< /prop>間設定的值是實際上要處理請求的Controller之Bean名稱,<prop>的"key"設置還可以使用 Wildcard,例如: ...
<bean id="urlHandlerMapping" class="org.springframework.web.servlet. → handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/hello*.do"> helloController </prop> <prop key="/welcome.do"> welcomeController </prop> </props> </property> </bean> .... 在上面的設置中,以hello開頭及.do結尾的URL請求,都會交給Bean定義檔中的helloController來處理。 |