@RequestMapping
- 可以創(chuàng)建數(shù)量不限的控制器咒林,分別處理不同的業(yè)務(wù)請(qǐng)求
- 每個(gè)控制器可以有多個(gè)處理請(qǐng)求的方法键畴,每個(gè)方法負(fù)責(zé)不同的請(qǐng)求操作
如果把請(qǐng)求映射到控制器的對(duì)應(yīng)的方法?
@RequestMapping
類定義和方法定義都可以使用
- 類定義處抓艳,提供初步請(qǐng)求映射信息
- 方法處洪橘,提供詳細(xì)映射信息
@RequestMapping包含四個(gè)方面過(guò)濾條件(URL,Param荠割,Method妹卿,Header)
- URL (此URL相對(duì)與Web應(yīng)用的部署路徑)
- 常規(guī)URL
@RequestMapping(value = "/login.html")
public String loginPage() {
return "login";
}
-
Ant風(fēng)格URL
- /user/*/login:匹配/user/xxx/login、/user/yyy/login
- /user/**/login: 匹配/user/login蔑鹦、/user/aaa/login
- /user/login??: 匹配/user/loginaa夺克、/user/loginbb
- /user/{userId}: 匹配 /user/123、/user/456
- /user/**/{userId} : 匹配 /user/aaa/bbb/123嚎朽、/user/xxx/345
其中{userId}占位符可以通過(guò)@PathVariable("userId") 綁定到操作方法的參數(shù)中
@RequestMapping(value = "/user/{userId}")
public String loginPage(@PathVariable String userId, String otherParam) {
...
}
2. 請(qǐng)求參數(shù)
* 請(qǐng)求必須要包含一個(gè)名為param1的參數(shù), 例如http://localhost:8080/example/login.html?param1=xxx 铺纽,否則404
@RequestMapping(value = "/login.html" params = "param1")
public String loginPage() {
return "login";
}
* 請(qǐng)求中不能包含一個(gè)名為param1的參數(shù),例如http://localhost:8080/example/login.html?param1=xxx 火鼻,會(huì)404
@RequestMapping(value = "/login.html" params = "!param1")
public String loginPage() {
return "login";
}
* 請(qǐng)求中包含一個(gè)名為param1的參數(shù)室囊,但其值不能為value1, 并將其傳入方法
@RequestMapping(value = "/login.html" params = "param1!=value1")
public String loginPage(@RequestParam("param1") String param1) {
return "login";
}
* 請(qǐng)求中包含名為param1和param2的參數(shù)雕崩,但其值必須為param1必須等于value1
@RequestMapping(value = "/login.html" params = {"param1=value1", "param2"})
public String loginPage() {
return "login";
}
3. 請(qǐng)求方法
* 請(qǐng)求中包含名為param1和param2的參數(shù),但其值必須為param1必須等于value1,必須是POST請(qǐng)求
@RequestMapping(value = "/login.html", params = {"param1=value1", "param2"}, method = RequestMethod.POST)
public String loginPage() {
return "login";
}
4. 請(qǐng)求頭
* 請(qǐng)求中包含名為param1和param2的參數(shù)融撞,但其值必須為param1必須等于value1,必須是POST請(qǐng)求, content-type必須是text/*(類似參數(shù)的處理規(guī)則)
@RequestMapping(value = "/login.html", params = {"param1=value1", "param2"}, method = RequestMethod.POST, headers = "content-type=text/*")
public String loginPage() {
return "login";
}