簡(jiǎn)介:
@RequestMapping
RequestMapping是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解形用,可用于類或方法上就轧。用于類上,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑尾序。
RequestMapping注解有六個(gè)屬性钓丰,下面我們把她分成三類進(jìn)行說(shuō)明。
1每币、 value携丁, method;
value: 指定請(qǐng)求的實(shí)際地址兰怠,指定的地址可以是URI Template 模式(后面將會(huì)說(shuō)明)梦鉴;
method: 指定請(qǐng)求的method類型, GET揭保、POST肥橙、PUT、DELETE等秸侣;
2存筏、 params,headers味榛;
params: 指定request中必須包含某些參數(shù)值是椭坚,才讓該方法處理。
headers: 指定request中必須包含某些指定的header值搏色,才能讓該方法處理請(qǐng)求善茎。
3、Ant路徑寫法
1频轿、@RequestMapping處理請(qǐng)求地址映射value屬性)
value: 指定請(qǐng)求的實(shí)際地址
在我們的Spring MVC中垂涯,我們會(huì)定義地址到我們Controller層的每一個(gè)方法,用于各種請(qǐng)求航邢。比如在下圖中的對(duì)比
點(diǎn)擊Hello World!
根目錄后面的helloWorld即是我們@RequestMapping("/helloWorld")注解起來(lái)的方法耕赘,具體代碼看下面
/*
* 1、@RequestMapping除了可以修飾方法還可以修飾類
* 2膳殷、類定義處相對(duì)于根目錄操骡,方法定義處相對(duì)于類
* */
@RequestMapping(value = "/helloWorld")
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
注解里面的名字與方法名無(wú)關(guān),當(dāng)然我們也可以用來(lái)修飾類秽之,起表現(xiàn)形式如下
@Controller
@RequestMapping(value = "hello")
public class HelloWorldController {
/*
* 1、@RequestMapping除了可以修飾方法還可以修飾類
* 2吃既、類定義處相對(duì)于根目錄考榨,方法定義處相對(duì)于類
* */
@RequestMapping(value = "/helloWorld")
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
}
注意到我們@Controller下面注解@RequestMapping("hello"),我們可以看到如下圖的訪問(wèn)地址變化
2鹦倚、@RequestMapping處理請(qǐng)求地址映射method屬性)
method: 指定請(qǐng)求的method類型
我們的請(qǐng)求一般會(huì)有4中方式GET河质、PUT、POST、DELETE掀鹅,我們可以通過(guò)method屬性來(lái)指定請(qǐng)求散休,否則請(qǐng)求不成功。我們看如下代碼
@RequestMapping(value = "/helloWorld",method = RequestMethod.GET)
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
在代碼中我們可以看到指定的請(qǐng)求是GET方法乐尊,只有網(wǎng)頁(yè)過(guò)來(lái)的地址正確且為GET請(qǐng)求才會(huì)正確返回戚丸。
3、@RequestMapping處理請(qǐng)求地址映射params和headers屬性)
params: 指定request中必須包含某些參數(shù)值是扔嵌,才讓該方法處理限府。
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請(qǐng)求痢缎。
@RequestMapping(value = "/helloWorld",method = RequestMethod.GET,params = {"name","age != 10"},headers = {"User-Agent=123"}))
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
4胁勺、@RequestMapping Ant路徑寫法
@RequestMapping(value = "/helloWorld/*",method = RequestMethod.GET,params = {"name","age != 10"},headers = {"User-Agent=123"}))
public String helloWorld(){
System.out.println("helloWorld");
return "success";
}
注意helloWorld后面*號(hào),這里指的是路徑在/helloWorld/后面加任何都可以訪問(wèn)独旷。