標籤:
- @RequestMapping 映射約束請求
2.1、映射請求URL
Spring MVC 使用 @RequestMapping 註解為控制器指定可以處理哪些 URL 請求,在控制器的類定義及方法定義處都可標註。
- 類定義處:提供初步的請求映射資訊。相對於 WEB 應用的根目錄
- 方法處:提供進一步的細分映射資訊。相對於類定義處的 URL。若類定義處未標註 @RequestMapping,則方法處標記的 URL 相對於WEB 應用的根目錄
DispatcherServlet 截獲請求後,就通過控制器上 @RequestMapping 提供的映射資訊確定請求所對應的處理方法。簡單樣本如下:
2.2、映射要求方法、要求標頭、請求參數
@RequestMapping 除了可以使用請求 URL 對應請求外,還可以使用要求方法、請求參數及要求標頭映射請求。
@RequestMapping 的 value、method、params 及 heads分別表示請求 URL、要求方法、請求參數及要求標頭的映射條件,他們之間是與的關係,聯合使用多個條件可讓請求映射更加精確化。
params 和 headers支援簡單的運算式:
- param1: 表示請求必須包含名為 param1 的請求參數
- !param1: 表示請求不能包含名為 param1 的請求參數
- param1 != value1: 表示請求包含名為 param1 的請求參數,但其值不能為 value1
- {"param1=value1", "param2"}: 請求必須包含名為 param1 和param2 的兩個請求參數,且 param1 參數的值必須為 value1
2.3、支援Ant風格的URL匹配
Ant 風格資源地址支援 3 種匹配符:
- ?:匹配檔案名稱中的一個字元
- *:匹配檔案名稱中的任一字元
- **:** 匹配多層路徑
@RequestMapping 還支援 Ant 風格的 URL,樣本:
/user/*/createUser: 匹配
/user/aaa/createUser、/user/bbb/createUser 等 URL
/user/**/createUser: 匹配
/user/createUser、/user/aaa/bbb/createUser 等 URL
/user/createUser??: 匹配
/user/createUseraa、/user/createUserbb 等 URL
@RequestMapping的本質是對http請求url、頭、參數、方法等做約束。
【SpringMVC】SpringMVC系列2之@RequestMapping 映射約束請求