SpringMVC handleMapping 處理器映射器 屬性清單
映射器的屬性清單
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 處理器映射器 屬性清單