標籤:匹配 自己 upd 不同的 help 配置 pre 127.0.0.1 hand
映射器的屬性清單
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 處理器映射器 屬性清單