1. @RequestParam
value:指定參數(shù)名,可以省略;
required:是否必須,true or false;
defaultValue:默認(rèn)值
方法:public? void AA(@RequestParam Map<String Object> map){ };
參數(shù)結(jié)構(gòu):jsonData=json字符串
結(jié)果:map = "jsonData"->"json字符串"(json字符串不會(huì)被解析,直接當(dāng)做字符串處理)
2. @RequestBody(前端需要設(shè)置contentType="application/json;charset=utf-8")
通過(guò)@requestBody可以將請(qǐng)求體中的JSON字符串綁定到相應(yīng)的bean上,也可以將其分別綁定到對(duì)應(yīng)的字符串上。
處理HttpEntity傳遞過(guò)來(lái)的數(shù)據(jù),一般用來(lái)處理非Content-Type: application/x-www-form-urlencoded編碼格式的數(shù)據(jù)。
GET請(qǐng)求中,因?yàn)闆](méi)有HttpEntity,所以@RequestBody并不適用。
POST請(qǐng)求中,通過(guò)HttpEntity傳遞的參數(shù),必須要在請(qǐng)求頭中聲明數(shù)據(jù)的類(lèi)型Content-Type,SpringMVC通過(guò)使用HandlerAdapter 配置的HttpMessageConverters來(lái)解析HttpEntity中的數(shù)據(jù),然后綁定到相應(yīng)的bean上。
@RequestBody用于post請(qǐng)求,不能用于get請(qǐng)求
方法:public? void AA(@RequestParam Map<String Object> map){ };
參數(shù)結(jié)構(gòu):json字符串
結(jié)果:map = json字符串會(huì)被處理成key-value的形式,接收類(lèi)型如果是bean,json也會(huì)直接被封裝成bean
3. @ModelAttribute
將參數(shù)綁定到Model對(duì)象
當(dāng)前臺(tái)界面使用GET或POST方式提交數(shù)據(jù)時(shí),數(shù)據(jù)編碼格式由請(qǐng)求頭的ContentType指定。分為以下幾種情況:
1. application/x-www-form-urlencoded,這種情況的數(shù)據(jù)@RequestParam、@ModelAttribute可以處理,@RequestBody也可以處理。
2. multipart/form-data,@RequestBody不能處理這種格式的數(shù)據(jù)。(form表單里面有文件上傳時(shí),必須要指定enctype屬性值為multipart/form-data,意思是以二進(jìn)制流的形式傳輸文件。)
3. application/json、application/xml等格式的數(shù)據(jù),必須使用@RequestBody來(lái)處理。
4. @PathVariable
映射 URL 綁定的占位符
@RequestMapping("test/{ }")
public ApiResult test1(@PathVariable("userId") String userId){
return ApiResult.SUCCESS(JsonUtil.toJsonString(userId));
}