其他網址
另見:《跟我學SpringMVC》=> 6.5 請求映射
@RequestMapping簡介
@RequestMapping(value="/testRequestMapping",
method={RequestMethod.POST},
params = {"username=jack"},
headers = {"Accept"})
value和path的作用都是指定請求路徑,當有註解後面只有一個參數的時候可以直接寫路徑
params指定請求參數中必須包含username的屬性,且值必須爲jack
headers用於指定請求的信息中必須包含的請求頭信息
RequestMapping註解可以用在類上或者方法上。
url映射配置方法
(1)映射單個URL
@RequestMapping("") 或 @RequestMapping(value="")
(2)映射多個URL
@RequestMapping({"",""}) 或 @RequestMapping(value={"",""})
路徑開頭是否加斜槓/均可,建議加上,如:@RequestMapping("/hello")
特殊配置
@RequestMapping("")與@RequestMapping("/")效果一樣,都是根路徑。
五種映射方式
參考網址:@RequestMapping使用須知_Java_zalan01408980的博客-CSDN博客
@RequestMapping 一共有五種映射方式
映射方式 |
說明 |
示例 |
標準映射 |
標準URL 映射是最簡單的一種映射 |
@RequestMapping("/hello") @RequestMapping({"/hello","/world/test"}) |
Ant風格 |
Ant 通配符有三種: ?:匹配任何單字符 *:匹配任意數量的字符(含 0 個) **:匹配任意數量的目錄(含 0 個) |
(1)@RequestMapping("/?/hello/") (2)@RequestMapping("/*/hello") (3)@RequestMapping("/**/hello") |
佔位符 |
可以通過一個或多個 {} 佔位符映射。 若 URL 中的 userId 是純數字,那麼使用 @PathVariable 做綁定時,可以根據自己的需求將方法參數類型設置爲 Long、 Integer、String等。 @PathVariable("") 不能簡寫爲 @PathVariable
|
@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; } |
限制請求方法 |
HTTP 請求中最常用的請求方法是 GET、POST,還有其他的一些方法,如:DELET、PUT、HEAD 等 |
@RequestMapping(value="/hello", method=RequestMethod.POST) 如需限制多個請求方法,以大括號包圍,逗號隔開即可,例如: method={RequestMethod.GET,RequestMethod.POST} |
限制請求參數 |
請求中必須帶有userId 參數 參數的限制規則如下: (1)params="userId" 請求參數中必須包含 userId (2)params="!userId" 請求參數中不能包含 userId (3)params="userId!=1" 請求參數中必須包含 userId,但不能爲 1 (4)params={"userId","userName"} 必須包含 userId 和 userName 參數 (5)params={"userId=1","userName!=2"}必須包含 userId 和 userName 參數,且userId值必須爲1,userName值必須不爲2。 |
@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; } |
參數的依賴注入
@RequestMapping註解的方法的參數會自動注入,示例如下。
<a href="param/testParam?username=hehe&password=123"></a>
public class User {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
//請求參數綁定
@RequestMapping("/testParam")
public String testParam(String username,String password, User user){
System.out.println("執行了...");
System.out.println("用戶名:"+username);
System.out.println("密碼:"+password);
User.name = username;
User.password = password;
System.out.println("User");
System.out.println(" " + User.name);
System.out.println(" " + User.password);
return "success";
}
運行結果
執行了...
用戶名:hehe
密碼:123
User
hehe
123