从前端接收数据的方式

【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";
    }

}

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值