1. @RequestParam
value:指定参数名,可以省略;
required:是否必须,true or false;
defaultValue:默认值
方法:public void AA(@RequestParam Map<String Object> map){ };
参数结构:jsonData=json字符串
结果:map = "jsonData"->"json字符串"(json字符串不会被解析,直接当做字符串处理)
2. @RequestBody(前端需要设置contentType="application/json;charset=utf-8")
通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,也可以将其分别绑定到对应的字符串上。
处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。
GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。
POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。
@RequestBody用于post请求,不能用于get请求
方法:public void AA(@RequestParam Map<String Object> map){ };
参数结构:json字符串
结果:map = json字符串会被处理成key-value的形式,接收类型如果是bean,json也会直接被封装成bean
3. @ModelAttribute
将参数绑定到Model对象
当前台界面使用GET或POST方式提交数据时,数据编码格式由请求头的ContentType指定。分为以下几种情况:
1. application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。
2. multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)
3. application/json、application/xml等格式的数据,必须使用@RequestBody来处理。
4. @PathVariable
映射 URL 绑定的占位符
@RequestMapping("test/{ }")
public ApiResult test1(@PathVariable("userId") String userId){
return ApiResult.SUCCESS(JsonUtil.toJsonString(userId));
}
网友评论