【Spring Boot接收前端数据】Spring Boot接收从前端传过来的数据常用8种方式,带你轻松搞定前后端数据联调_哔哩哔哩_bilibili
SpringBoot接收前端传来的json数据 - StarZhai - 博客园 (cnblogs.com)
1.Map
Map<String,Object>,值的类型建议设置为Object,这样可以使Map能接收各种类型的数据,如字符串、数字、数组和对象等。
灵活性更强,易扩展,耦合度低。Map中所拥有的参数个数、类型、每个参数代表的含义对外不透明,团队开发及后期维护难度大
2. Pojo
创建PO与数据库字段对应,用于对数据库的操作;代码量增多,大量时间去封装用到的表对象。可能会影响开发效率。
3. VO
创建VO用于封装和前端打交道的数据,使用VO可以避免使用Map
package com.tw.controller;
import com.tw.pojo.User;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@RestController
@RequestMapping("/users")
public class UserController {
//非JSON---方法一:直接通过控制层的方法参数名和请求参数名保持一致来进行接收
@RequestMapping("/add1")
public String add1(int id,String name,String pwd){
System.out.println("id="+id);
System.out.println("name="+name);
System.out.println("pwd="+pwd);
return "ok";
}
//方法二:若前端数据量很多,可以使用pojo实体类类型作为参数列表
@RequestMapping("/add2")
public String add2(User user){
System.out.println(user);
return "success";
}
//方法三:使用RestFull风格数据提交(RestFull风格只关注数据,不关注参数)---数据量不大
@RequestMapping("/add3/{id}/{username}/{password}")
public String add3(@PathVariable int id,@PathVariable("username") String name, @PathVariable("password") String pwd){//如果url中的参数和形式参数名一致,就只写@PathVariable即可,会自动匹配
System.out.println("id="+id);
System.out.println("name="+name);
System.out.println("pwd="+pwd);
return "ok";
}
@RequestMapping("/add4")
//方法四:不管数据量大小,数据保存在request对象中--借助request对象接收
public String add4(HttpServletRequest request){
//request对象中的数据是以key-value的键值对的形式存储的。key是前端传过来的变量名
String id = request.getParameter("id");
String name = request.getParameter("name");//name是key
String pwd = request.getParameter("pwd");
System.out.println("id="+id);
System.out.println("name="+name);
System.out.println("pwd="+pwd);
return "ok";
}
//JSON形式的数据传输:都要放在注解里面
//方法一:将前端传递过来的JSON数据直接存储在pojo对象中。获取数据的时候需要注解@RequestBody来进行标记,要不然获取不到数据
@RequestMapping("/add5")
public User add5(@RequestBody User user){
System.out.println(user);
return user;
}
//方法二:实体类引用另一个实体类;在ApiPost中提交数据时,另一个实体类型的变量也要用{}传参。代码中不要忘记注解
@RequestMapping("/add6")
public User add6(@RequestBody User user){
System.out.println(user);
return user;
}
//方法三:用到List<>时;Apipost要写[{},{}]形式
@RequestMapping("/add7")
public User add7(@RequestBody User user){
System.out.println(user);
return user;
}
//ApiPost数值提交时是key-value形式。在Java中采用Map集合:也是key-value形式;代替pojo类
@RequestMapping("/add8")
public String add8(@RequestBody Map<String,String> map){//key:String。value:String类型
String name = map.get("name");
String pwd = map.get("pwd");
System.out.println("name="+name);
System.out.println("pwd="+pwd);
return "ok";
}
}