handlerMapping的工作就是為每個(gè)請求找到合適的處理器handler.
最常用的兩個(gè)handlerMapping:
BeanNameUrlHandlerMapping: 查找spring容器中和請求的url同名的bean.這個(gè)映射器不需要配置,因為spring在找不到handlerMapping的情況下會(huì )使用BeanNameUrlHandlerMapping.如果一定要配置,像下面這樣就行了:
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
比如有一個(gè)請求/index.htm, 則就會(huì )找到一個(gè)名叫/index.htm的bean來(lái)處理這個(gè)請求; 這種做法讓我們可以做出虛擬目錄的效果:
<bean name="/user/index.htm" class="controller.TestController" />
<bean name="/admin/index.htm" class="controller.TestController" />
SimpleUrlHandlerMapping: 這個(gè)handlerMapping可以配置請求的url和handler的映射關(guān)系.
- <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="mappings">
- <props>
- <prop key="/project.htm">projectController</prop>
- <prop key="/manage.htm">managementController</prop>
- <prop key="/user.htm">userController</prop>
- <prop key="/upload.htm">fileUploadController</prop>
- </props>
- </property>
- </bean>
前面提到了DiapatcherServlet查詢(xún)handlerMapping獲得handler,handlerMapping事實(shí)上返回的是HandlerExecutionChain,HandlerExecutionChain里面的interceptor正是在handlerMapping中配置的:
- <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="interceptors">
- <list>
- <ref bean="localeChangeInterceptor"/>
- <ref bean="someOtherCheckInterceptor"/>
- </list>
- </property>
- <property name="mappings">
- <props>
- <prop key="/project.htm">projectController</prop>
- <prop key="/manage.htm">managementController</prop>
- <prop key="/user.htm">userController</prop>
- <prop key="/upload.htm">fileUploadController</prop>
- </props>
- </property>
- </bean>
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。