您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页Springboot接收参数详解

Springboot接收参数详解

来源:华佗养生网

原始方式(使用httpservletrequest)

//原始方式获取请求参数
    @RequestMapping("/getP")
    public String getParam(HttpServletRequest request){
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        int Lage=Integer.parseInt(age);
        System.out.println("name:"+name+"age:"+age);
        return  "ok";
    }

原始方式比较麻烦,还需要进行类型转化,不推荐使用

Springboot方式

    //基于Springboot方式接收
    @RequestMapping("/SGetParam")
    public String SGetParam(String name,Integer age){
        System.out.println("name:"+name+"age:"+age);
        return "ok";
    }

这种方式需要前端传的请求参数名字和参数列表中接收参数的名字一致

使用@requestParam解决参数名字不一致问题,进行映射

//解决参数名不一样的方法
    @RequestMapping("/SGetParam")
    public String SGetParam2(@RequestParam(name = "name" ,required = false)String username,Integer age){
        System.out.println("name:"+username+"age:"+age);
        return "ok";
    }

required = false代表这个参数是不必需要传的,如果改为true或者默认的话,必须传递这个参数

简单实体参数

只需要保证传递的参数名和实体中定义的成员变量名一致

    //接收实体参数
    @RequestMapping("/SimplePojo")
    public  String SimplePojo(User user){
        System.out.println(user);
        return "ok";
    }
public class User {
    String name;
    Integer age;
}

复杂实体参数

传递的参数形式应该是....&address.province=河南&address.city=洛阳

public class Address {
    private String province;
    private String city;
}
public class User {
  private   String name;
  private   Integer age;
private  Address address;
}
    //接收实体参数
    @RequestMapping("/SimplePojo")
    public  String SimplePojo(User user){
        System.out.println(user);
        return "ok";
    }

数组集合参数

如果前端传递过来的是一个多选项,也就是一个数组的话,前端的传递形式是..hobby=java&hobby=html&hobby=js,有两种接收方式,第一种是数组接收,第二种是集合接收

数组接收

直接在参数列表中定义一个数组,数组名和前端参数名一致

    @RequestMapping("/ArrayParam")
    public  String ArrayParam(String[] hobby){
        System.out.println(Arrays.toString(hobby));
        return "ok";
    }

列表接收

因为默认是用数组接收,所以如果想使用列表接收的话需要前面加个注解

@RequestParam 
    @RequestMapping("/ListParam")
    public String ListParam(@RequestParam List<String> hobby){
        System.out.println(hobby);
        return "ok";
    }

日期参数

因为前端传递过来的日期格式可能不一样,所以需要指定日期的格式,例如使用

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss"),使用LocalDateTime这个类接收日期
    //日期参数
    @RequestMapping("/dateParam")
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime updateTime){
        System.out.println(updateTime);
        return "ok";
    }

JSON参数

Json数据的键名与形参对象属性名相同,定义POJO类型参数即可接收参数,需要使用@requestbody标识,而且发送json只能使用post方法,封装在请求体中

    @PostMapping("/jsonParam")java
    public String jsonParam(@RequestBody User user){
        System.out.println(user);
        return "ok";
    }

 路径参数

通过请求url直接传递参数,在mapping中的路径中使用{..}来标识该路径参数,需要使用@pathvaribale获取路径参数,如果多个参数,在路径中再加/即可

    @RequestMapping("/path/{id}/{name}")
    public String path(@PathVariable Integer id,@PathVariable String name){
        System.out.println(id);
        System.out.println(name);
        return "ok";
    }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务