@RequestParam
使用@RequestParam接收前段參數(shù)比較方便嘲叔,前端傳參的URL:
url = “${ctx}/main/mm/am/edit?Id=${Id}&name=${name}”
后端使用集合來接受參數(shù)奠支,靈活性較好晕讲,如果url中沒有對(duì)參數(shù)賦key值,后端在接收時(shí)负乡,會(huì)根據(jù)參數(shù)值的類型附牍白,賦一個(gè)初始key(String、long ……)
@RequestMapping("/edit")
public String edit(Model model, @RequestParam Map<String, Object> paramMap ) {
long id = Long.parseLong(paramMap.get("id").toString());
String name = paramMap.get("name").toString;
return page("edit");
}
@PathVariable
使用@PathVariable接收參數(shù)抖棘,參數(shù)值需要在url進(jìn)行占位茂腥,前端傳參的URL:
前臺(tái)實(shí)例:url = “${ctx}/main/mm/am/edit/${Id}/${name}”
服務(wù)端接受:
@RequestMapping("/edit/{id}/{name}")
public String edit(Model model, @PathVariable long id,@PathVariable String name) {
return page("edit");
}
前端傳參的URL于后端@RequestMapping的URL必須相同且參數(shù)位置一一對(duì)應(yīng),否則前端會(huì)找不到后端地址
一切省、@RequestParam
先介紹一下@RequestParam的使用場(chǎng)景:
注解@RequestParam接收的參數(shù)是來自requestHeader中最岗,即請(qǐng)求頭。通常用于GET請(qǐng)求朝捆,比如常見的url:http://localhost:8081/spring-boot-study/novel/findByAuthorAndType?author=唐家三少&type=已完結(jié)
般渡,其在Controller 層的寫法如下圖所示:
@RequestParam有三個(gè)配置參數(shù):
- required 表示是否必須,默認(rèn)為 true芙盘,必須驯用。
- defaultValue 可設(shè)置請(qǐng)求參數(shù)的默認(rèn)值。
- value 為接收url的參數(shù)名(相當(dāng)于key值)儒老。
@RequestParam用來處理 Content-Type 為 application/x-www-form-urlencoded 編碼的內(nèi)容蝴乔,Content-Type默認(rèn)為該屬性。
@RequestParam也可用于其它類型的請(qǐng)求驮樊,例如:POST薇正、DELETE等請(qǐng)求片酝。比如向表中插入單條數(shù)據(jù),但是這樣不支持批量插入數(shù)據(jù)啊挖腰,如果改用 json 字符串來傳值的話雕沿,類型設(shè)置為 application/json,點(diǎn)擊發(fā)送的話猴仑,會(huì)報(bào)錯(cuò)审轮,后臺(tái)接收不到值,為 null宁脊。
這時(shí)候断国,注解@RequestBody就派上用場(chǎng)了。
二榆苞、@RequestBody
先介紹一下@RequestBody的使用場(chǎng)景:
注解@RequestBody接收的參數(shù)是來自requestBody中,即請(qǐng)求體霞捡。一般用于處理非 Content-Type: application/x-www-form-urlencoded
編碼格式的數(shù)據(jù)坐漏,比如:application/json、application/xml
等類型的數(shù)據(jù)碧信。
就application/json類型的數(shù)據(jù)而言赊琳,使用注解@RequestBody可以將body里面所有的json數(shù)據(jù)傳到后端,后端再進(jìn)行解析砰碴。
舉個(gè)批量插入數(shù)據(jù)的例子躏筏,Controller層的寫法如下圖所示:
注意:前端使用$.ajax的話,一定要指定 contentType: "application/json;charset=utf-8;"呈枉,默認(rèn)為 application/x-www-form-urlencoded趁尼。