----------------------siwuxie095
@RequestMapping 使用須知
使用 @RequestMapping 注解映射請求路徑
即
你可以使用 @RequestMapping 注解來將請求 URL 映射到整個類上
或 某個特定的方法上,即 @RequestMapping 既可以定義在類上,
也可以定義方法上
一般來說,類級別的注解負責將一個特定(或符合某種模式)的請求
路徑映射到一個控制器上,同時通過方法級別的注解來細化映射,即
根據特定的 HTTP 請求方法(GET、POST 方法等)、HTTP請求中是
否攜帶特定參數等條件,將請求映射到匹配的方法上
具體配置方法:
(1)映射單個 URL
@RequestMapping("") 或 @RequestMapping(value="")
(2)映射多個 URL
@RequestMapping({"",""}) 或 @RequestMapping(value={"",""})
路徑開頭是否加斜杠 / 均可,建議加上,如:@RequestMapping("/hello")
@RequestMapping 一共有五種映射方式:
1、標准 URL 映射
標准 URL 映射是最簡單的一種映射,例如:
@RequestMapping("/hello")
或
@RequestMapping({"/hello","/world"})
2、Ant 風格的 URL 映射
Ant 通配符有三種:
通配符 |
說明 |
? |
匹配任何單字符 |
* |
匹配任意數量的字符(含 0 個) |
** |
匹配任意數量的目錄(含 0 個) |
例如:
(1)@RequestMapping("/?/hello/")
(2)@RequestMapping("/*/hello")
(3)@RequestMapping("/**/hello")
3、占位符 URL 映射
URL 中可以通過一個或多個 {} 占位符映射
例如:@RequestMapping("/user/{userId}/show")
可以通過 @PathVariable("") 注解將占位符中的值綁定到方法參數上
/** * 如果 URL 中的 userId 是純數字,那么使用 @PathVariable * 做綁定時,可以根據自己的需求將方法參數類型設置為 Long、 * Integer、String */ @RequestMapping("/user/{userId}/show") public ModelAndView show(@PathVariable("userId") Long userId) { // 創建 ModelAndView 對象,並設置視圖名稱 ModelAndView mv = new ModelAndView("show"); // 添加模型數據 mv.addObject("msg", "User ID:" + userId); return mv; } |
注意:@PathVariable("") 不能簡寫為 @PathVariable。因為在
正常編譯時,Java 類反射對象不包含方法的參數名稱。如果在編
譯時將 Debug 打開(javac -debug=no),方法的參數名稱才
會記錄到類中,此時才能簡寫,但不建議簡寫。
編譯時,打開 Debug 的方法:
打開 Eclipse,Project->Properties->Java Compiler,勾選上
Add variable attributes to generated class files … 即可
4、限制請求方法的 URL 映射
在 HTTP 請求中最常用的請求方法是 GET、POST,還有其他的
一些方法,如:DELET、PUT、HEAD 等
限制請求方法,例如:
@RequestMapping(value="/hello", method=RequestMethod.POST)
如需限制多個請求方法,以大括號包圍,逗號隔開即可,例如:
method={RequestMethod.GET,RequestMethod.POST}
5、限制請求參數的 URL 映射
限制請求參數來映射 URL,例如:
@RequestMapping(value="/user/show", params="userId")
即 請求中必須帶有 userId 參數
參數的限制規則如下:
(1)params="userId" 請求參數中必須包含 userId
(2)params="!userId" 請求參數中不能包含 userId
(3)params="userId!=1" 請求參數中必須包含 userId,但不能為 1
(4)params={"userId","userName"} 必須包含 userId 和 userName 參數
可以通過 @RequestParam("") 注解將請求參數綁定到方法參數上
@RequestMapping(value="/user/show",params="userId") public ModelAndView show(@RequestParam("userId") Long userId) { // 創建 ModelAndView 對象,並設置視圖名稱 ModelAndView mv = new ModelAndView("show"); // 添加模型數據 mv.addObject("msg", "User ID:" + userId); return mv; } |
要注意 @PathVariable("") 和 @RequestParam("") 的不同:
@PathVariable("") 是將 URL 中占位符處的值綁定到方法參數上
@RequestParam("") 是將 URL 后的請求參數綁定到方法參數上
附:
推薦一個模擬發送請求的 Chrome 插件 Advanced REST Client,非常好用!
https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
【made by siwuxie095】