一、springMVC自动封装
1、传递参数
(1)、GET请求方式传递 参数
后端代码:test(String paramName,String paramName1)
前端代码:$.get(basePath + "/api/params/test?paramName=111¶mName1=222"
(2)、POST请求方式传递 参数
后台代码:test(String paramName,String paramName1)
前端代码:$.post(basePath + "/api/params/test?paramName=111¶mName1=222"
2、传递实体类
(1)、GET请求方式传递 实体类
后端代码:test(ParamsEntity paramsEntity)
前端代码:$.get(basePath + "/api/params/test", data
(2)、POST请求方式传递 实体类
后端代码:test(ParamsEntity paramsEntity)
前端代码:$.post(basePath + "/api/params/testPost4", data
总结:
- 默认的ContentType的值为:application/x-www-form-urlencoded; charset=UTF-8 此格式为表单提交格式。
- 不加任何注解的情况下可以接收Get请求和Post请求以x-www-form-urlencoded提交的数据,如果遇到对象类型或者数组类型的参数,可以在前端将参数转成JSON格式的字符串,后端用String类型来接收,再进行转换。
- 不加任何注解的情况下就不能接收(Post请求)以appilaciton/json方式提交的数据。
二、springMVC使用注解
1、@RequestParam
(1)、GET请求方式传递 参数
后端代码:test(@RequestParam("paramName") String paramName)
前端代码:$.get(basePath + "/api/params/test?paramName=111
(2)、POST请求方式传递 参数
后端代码:test(@RequestParam("paramName") String paramName)
前端代码:$.post(basePath + "/api/params/test", data
总结:
- @RequestParam只能处理参数(某一属性)不能处理实体类,但使用@RequestParam 接受JSON的字符串 然后后端再处理。
- @RequestParam只能接收Get请求和Post请求以application/x-www-form-urlencoded编码方式传来的数据。
- 但是不能接收(Post请求)以appilaciton/json方式传来的数据。
2、@Requestbody
(1)、POST请求方式传递 实体类
后端代码:test(@Requestbody("paramsEntity") ParamsEntity paramsEntity)
前端代码:$.ajax({url:'', type: "POST", data: data, async: false, dataType:"json"
总结:
- @Requestbody只能接收Post请求以application/json编码方式提交的数据,而且可以接收对象数组。
- @Requestbody不支持Get请求接收数据
- @Requestbody不支持接收以x-www-form-urlencoded编码方式提交的数据。
3、@PathVariable
(1)、GET请求方式传递 参数
后端代码:@GetMapping("/testGet2/{paramName}") test(@PathVariable String paramName)
前端代码:$.get(basePath + "/api/params/testGet2/111112333"
(2)、POST请求方式传递 参数
后端代码:@PostMapping("/testPost2/{paramName}") test(@PathVariable String paramName)
前端代码:$.post(basePath + "/api/params/testPost2/111112333"
总结:
- @PathVariable可以接收Get请求和Post请求方式传来的数据。
- @PathVariable对ContentType内容没要求,且可以一次传多个参数。
最后总结
ContentType | Get | Post | 参数 | 实体类 | |
自动封装 | application/x-www-form-urlencoded | √ | √ | √ | √ |
@RequestParam | application/x-www-form-urlencoded | √ | √ | √ | |
@Requestbody | application/json | √ | √ | ||
@PathVariable | application/x-www-form-urlencoded application/json | √ | √ | √ |
工作中使用到,一直看别人写的不是很全面,就自己简单总结了下,有什么不对的地方大佬们可以指出来,我再改正,谢谢大家~