前台传后台
第一种:直接从HttpServletRequest中获取
第二种:通过参数获取
要求前台请求参数名称和后台函数形参名称一样
第三种:通过对象获取
要求前台请求参数名称和后台对象的属性名一样
第四种:通过@RequestParam获取
形式如:@RequestParam(value="username") String userName
以上的4种方式实质上都是一样的。GET和POST请求传的参数会自动转换赋值到@RequestParam 所注解的变量上。@RequestParam用来处理Content-Type=application/x-www-form-urlencoded编码的内容,提交方式为get或post,其实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。
第五种:通过@RequestBody注解获取
主要用来接收前端传递给后端的json数据(后台函数形参可以String,也可以是类);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。@RequestBody一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。
第六种:获取上传的文件
形式如:
public void uploadExcel(@RequestParam("file") MultipartFile file, @RequestParam("id") String id){...}
当前台界面使用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来处理。
参考文章: