1. 程式人生 > >SpringMVC handleMapping 處理器映射器 屬性清單

SpringMVC handleMapping 處理器映射器 屬性清單

inter 解碼 support sping 無需 尋找 pan int intercept

映射器的屬性清單

defaultHandler 在映射與所有處理器都不匹配的情況下,指定默認的處理器(處理器即你定義的Controller(action)類)

order Spring根據order的值對映射器進行排序,並使用第一個匹配的處理器,order值越小優先級越高(相當於鏈的索引位置,從0開始,0級最高)

interceptors 使用的攔截器列表

alwaysUseFullPath 是否使用servlet context中的全路徑匹配處理器,默認false

urlDecode    默認false,如果你希望映射器在尋找處理器之前對URL/URI進行解碼,那麽將此屬性設置為true.

lazyInitHandlers 默認false,可以對單例處理器進行延遲初始化

urlPathHelper   可以通過此屬性來檢查URL,一般無需修改其默認值

spingmvc的映射器有很多,但常用的就三種BeanNameUrlHandlerMapping(默認映射器),SimpleUrlHandlerMapping,ControllerClassNameHandlerMapping

說明:我的web.xml裏用的是<url-pattern>*.action</url-pattern>

1.BeanNameUrlHandlerMapping

顧名思義,是以Bean的name屬性作為url來訪問的時候進行映射,那麽這個bean指的是什麽?當然指的我們開發人員自己定義的Controller(action)

這裏我使用的是userController

地址欄:http://127.0.0.1:8080/項目/userController.action

具體配置文件見下面


2.SimpleUrlHandlerMapping

這個映射器通常用於處理多個請求對應一個Controller(action)的情況,當然也可以用別名的方式替代此映射器.具體配置文件見下面


3.ControllerClassNameHandlerMapping

使用Controller的類名(首字母小寫).action來訪問時進行映射

使用這個映射器要註意的是你的Controller類命名必須是xxxController,而不能是xxxAction這種

,否則會找不到

當然,你可以給它加個defaultHandler屬性,指定一個默認處理器(即你定義的Controller類),但這樣就沒有必要使用此映射器了


4.配置文件

 1  <!-- 使用BeanNameUrlHandlerMapping完成多個請求對應一個Action-->
 2       <bean name="/add.action,/delete.action,/update.action,/find.action" class="cn.tele.springmvc_003.UserAction"></bean>
 3         
 4       <!-- 註冊action時給與id屬性 -->
 5       <bean id="userAction" name="/userController.action" class="cn.tele.springmvc_003.UserController"></bean>
 6      
 7       <!-- 映射器(默認) -->
 8       <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
 9      
10       <!-- 使用SimpleUrlHandlerMapping完成多個請求對應一個Action -->
11       <!-- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
12           <property name="mappings">
13                   <props>
14                   <prop key="/add.action">userAction</prop>
15                   <prop key="/delete.action">userAction</prop>
16                   <prop key="/update.action">userAction</prop>
17                   <prop key="/find.action">userAction</prop>
18                   </props>
19           </property>
20       </bean>     -->
21     
22     <!-- 通過類名.action的形式來訪問,userController.action類名首字母小寫 -->
23     <!-- <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
24         <property name="defaultHandler" ref="userAction"></property>
25     </bean> -->

值得一提的是這些映射器可以共存,但同一時刻只能有一個映射器起作用,調用哪一個映射器取決於你的訪問方式和映射器的order值,多個不同的映射器組成了一條

鏈,order值越小,優先級越高,當優先級較高的映射器無法處理時會交給優先級低的處理,都無法匹配到處理器(即你定義的Controller)時Spring才會報錯

SpringMVC handleMapping 處理器映射器 屬性清單