为前端提供接口,需要对传参方式有所熟悉,以下有几种常用的传参方式和常见的相关注解,请指正。
传参方式
后台对应的实体类应包含属性:
@Data
public class User{
private String id;
private String name;
}
QueryString传参
请求的url样例:http://localhost:8080/test?id=1&name=zhangsan
接收方式:
@RequestMapper("/test")
public void test(String id,String name){
......
}
或
@RequestMapper("/test")
public void test(User user){
......
}
访问路径传参
请求的url样例:http://localhost:8080/test/1/zhangsan
接收方式:
@RequestMapper("/test/{id}/{name}")
public void test(@PathVariable("id")String id,@PathVariable("name")String name){
......
}
form表单传参
请求form表单样例(提交字符串):
<form action="http://localhost:8080/test">
id:<input type="text" name="id" /><br>
name:<input type="text" name="name" /><br>
<input type="submit" value="提交按钮">
</form>
接收方式:
@RequestMapper("/test")
public void test(String id,String name){
......
}
或
@RequestMapper("/test")
public void test(User user){
......
}
请求form表单样例(提交文件):
一般是post请求,因为get请求方式大小有限制,文件大小不确定且必须写enctype = "multipart/form-data"
<form action="http://localhost:8080/test" method= "post" enctype = "multipart/form-data">
文件:<input type="file" name="photo" /><br>
<input type="submit" value="提交按钮">
</form>
接收方式:
@RequestMapper("/test",method = RequestMethod.POST)
public void test(MultipartFile file){
......
}
ajax方式进行JSON传参
请求样例:
$.ajax({
// 请求方式
type:"post",
// contentType
contentType:"application/json",
// dataType
dataType:"json",
// url
url:"http://localhost:8080/test",
// 把JS的对象或数组序列化一个json 字符串
data:{'id':1,'name':'张三'},
// result 为请求的返回结果对象
success:function (result) {
if (200 == result.code){
alert("成功");
}else{
alert("失败");
}
}
});
接收方式:
@RequestMapping("/test",method = RequestMethod.POST)
public void test(@RequestBody User user){
......
}
常用注解
@RequestBody
主要用来接收前端传递给后端的json字符串中的数据,一般都用POST方式进行提交。一个请求@RequestBody最多只能有一个,如果参数放在请求体中,application/json传入后台的话,那么后台要用@RequestBody才能接收到。
示例:
@RequestMapper("/test")
public void test(@RequestBody String jsonString){
......
}
或
//如果前端传来的不是实体类数据,则会自动封装
@RequestMapper("/test")
public void test(@RequestBody User user){
......
}
@RequestParam
springmvc中接收普通参数的注解,一个请求,可以有多个RequestParam。
请求url样例:localhost:8080/test/?id=1&name=zhangsan
使用方式:
@RequestMapper("/test")
public void test(@RequestParam("id") String id,@RequestParam String name){
......
}