springboot整合springmvc之接收前端参数常用方法

1.@PathVariable 用于获取rest请求路径中的参数,并封装到方法的入参中。

 1.1  将请路径中的{id}位置的参数风中到getMsg方法的入参id中。
 @GetMapping("/get/{id}")
    public Object getMsg(@PathVariable String id){
        return id+"的内容";
    }
  1.2  如果请求路径中的参数名和方法入参的参数名不一致,需要指定映射关系,如下面将id的值映射到ids中。
 @GetMapping("/get/{id}/")
    public Object getMsg(@PathVariable("id") String ids){
        return id+"的内容";
    }

 @GetMapping("/get/{id}/{org_id}")
    public Object getMsg2(@PathVariable String id,@PathVariable("org_id")String orgId){
        System.out.println("id="+id+",orgId="+orgId);
        return id+","+orgId+"的内容";
    }

2.@RequestBody 前端将请求参数封装成一个对象给后台方法,这个对象可以是json字符串,也可以是pojo对象,如果是pojo对象接受参数,则@RequestBody注解会将参数自动封装到pojo的对象属性中。前端发送请求时要求content-type为application/json。

                              使用json字符串接受参数
 @PostMapping("/post2")
    public Object submit2(@RequestBody String json){
        JSONObject jsonObj = JSON.parseObject(json);
        String name = jsonObj.getString("name");
        String age = jsonObj.getString("age");
        return "name="+name+",age="+age;
    }
                            使用pojo对象接受参数
    @PostMapping("/post3")
    public Object submit3(@RequestBody Person person){
        String age = person.getAge();
        String name = person.getName();
        return "name="+name+",age="+age;
    }

3.@RequestParam 将前端发送的请求参数映射到后台对应的字段上,前端发送参数到后台,是多个键值对形式,而非一个大json格式,content-type需要设置为:application/x-www-form-urlencoded

 @PostMapping("/post")
    public Object submit(@RequestParam String name,@RequestParam String age){
        return "name="+name+",age="+age;
    }

对比@RequestParam 和 @RequestBody:
相同点:都是用来将前端的请求参数封装到后台方法的入参中。
不同点:
1、@RequestBody是将前端所有请求参数封装成一个大对象到后台,即一个json String对象,或者一个pojo对象,如果后台接受参数是一个pojo对象,则@RequestBody会自动将前端参数映射到pojo对象对应的属性上,content-type为application/json。此注解不可省略,否则参数无法封装到对应入参上。
2、@RequestParam,将前端的请求参数以key1=value1,key2=value2…的形式将请求参数封装到后台对应的参数上,content-type需要设置为:application/x-www-form-urlencoded,如果前端的参数和后台方法入参名称一致,则该注解可以省略不写。

4、@RequestHeader 获取RequestHeader中的信息,如登陆的token等。
这里的String id由于未加任何注解,所以等同于@RequestParam String id,即从body中获取数据,而非header中获取id。

 @PostMapping("/getToken")
    public Object getHeader(@RequestHeader("access_token") String token,String id){
        System.out.println("token="+token+",id="+id);
        return "";
    }
    
    打印结果:
    token=s2fs2sdf23r309fko9f2334,id=2

在这里插入图片描述
5.使用HttpServletRequest接收参数
如果直接使用HttpServletRequest接收前端参数,那么前端请求参数要是key1=value1&key2=value2…形式,且contentType必须为:x-www-form-urlencoded,否则后端将接收不到参数,即HttpServletRequest对象getParameter时参数为null。

  @GetMapping("/get_r")
    public Object getReq(HttpServletRequest request){
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        return "id="+id+",age="+name;
    }

    @PostMapping("/post_r")
    public Object postReq(HttpServletRequest request){
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        return "id="+id+",age="+name;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值