SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别

  1、区分Get请求和Post请求发送参数:

(1)Get请求:

GET请求一般用去请求获取数据,GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的。

GET请求刷新浏览器或回退时没有影响。

GET 请求可被缓存。

GET 请求保留在浏览器历史记录中。

GET请求只能进行url编码(application/x-www-form-urlencoded)。

GET请求比较常见的方式是通过url地址栏请求。

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第1张图片

(2)Post请求:

POST一般作为发送数据到后台时使用,POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制。

POST回退时会重新提交数据请求。

POST 请求不会被缓存。

POST 请求不会保留在浏览器历史记录中。

 POST支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。)。

POST最常见是通过form表单发送数据请求。

2、SpringMvc-5种类型参数的传递:

(1)普通参数:

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第2张图片

 

//    普通参数
//    Tomcat开启 Get请求传参
//    http://localhost:8080/User/commonParam?name=黄先生
    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name) {
        System.out.println("普通参数传递:name:" + name);
        return "{'module':'commom param'}";
    }

(2)普通参数,请求参数名与形参不同(要用@RequestParam("名称")注解进行配对)

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第3张图片

//  普通参数,请求参数名与形参不同
//    Tomcat开启 Get请求传参
//    http://localhost:8080/User/commonParamDifferentName?username=黄先生
    @RequestMapping("/commonParamDifferentName")
    @ResponseBody
    public String commonParamDifferentName(@RequestParam("username") String name) {
        System.out.println("普通参数传递:name:" + name);
        return "{'module':'commom param'}";
    }

 (3)实体类Pojo参数:(前提要有实体类Pojo)

实体类:

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第4张图片

控制层类: 

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第5张图片

//    当实体类Pojo的参数名与传参的参数名一致时,可进行传递
//    Tomcat开启 Get请求传参
//    http://localhost:8080/User/PojoParam?uid=a003&uname=廖xt&password=1122&gender=女&Flag=北京
    @RequestMapping("/PojoParam")
    @ResponseBody
    public String PojoParam(User user) {
        System.out.println("pojo参数传递:user:" + user);
        return "{'module':'Pojo param'}";
    }
若pojo参数User嵌套pojo参数address作为传参,则可用User中的name,age和嵌套中的address.city,address.province来进行传参。

(4)数组传参:

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第6张图片

//     数组传参
//    Tomcat开启 Get请求传参
//      http://localhost:8080/User/ArrayParam?likes=game&likes=music&likes=travel
    @RequestMapping("/ArrayParam")
    @ResponseBody
    public String ArrayParam(String[] likes) {
        System.out.println("Array参数传递:likes:" + Arrays.toString(likes));
        return "{'module':'Array param'}";
    }

 (5)集合传参:

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第7张图片

//    集合参数
//    Tomcat开启 Get请求传参
//    http://localhost:8080/User/ListParam?likes=game&likes=music&likes=travel
//    要在方法的参数加注解@RequestParam才可跳转传参成功 才可识别List集合
    @RequestMapping("/ListParam")
    @ResponseBody
    public String ListParam(@RequestParam List likes) {
        System.out.println("List参数传递:likes:" + likes);
        return "{'module':'list param'}";
    }

 3、Json类型参数(三种)

Maven导入坐标:


        
            com.fasterxml.jackson.core
            jackson-databind
            2.12.2
        
    

json格式参数传递时要在方法形参前加上@RequestBody注解才能将其识别数据类型,

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第8张图片

 

同时在SpringMvcConfig配置类中要加上@EnableWebMvc,开启由json数据转换为对象的功能才能进行传参成功。

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第9张图片

 

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第10张图片

 (1)集合参数Json格式

值类型:{"a","b","c"}  json格式

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第11张图片

(2)Pojo参数:json格式

值类型:

//Pojo参数嵌套Pojo参数
//    {
//    ”name“:”itcast“,
//    ”age“:”15“,
//    "address":{
//        "city":"北京",
//        "province":""beijing
//    }
//    }

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第12张图片

(3)Pojo集合参数:json格式

值类型:

//    {
//      {"name":"itcast","age":15},
//      {"name":"lingnan","age":12}
//    }

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第13张图片

补充:

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第14张图片 

4、日期类型参数 

//  http://localhost:8080/User/dataParam?date=2088/08/08
//  日期型参数可以直接由字符串格式传递
//  date=2088/08/08 标签格式,直接传递
//  date=2088-08-08 需要在方法的参数前加注解@DateTimeFormat(pattern = "yyyy-MM-dd")才可以传递
//  date=2088/08/08 8:08:08  需要在方法的参数前加注解@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")才可以传递

//  日期参数
//  http://localhost:8080/User/dataParam?date=2088-08-08
    @RequestMapping("/dataParam")
    @ResponseBody
    public String dataParam(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date){
        System.out.println("参数传递:date:" + date);
        return "{'module':'date param'}";
    }

SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第15张图片

 SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第16张图片

5、类型转换器

 SpringMVC参数传递(5种类型参数、Json类型参数、日期类型参数),Get请求和Post请求的区别_第17张图片

 

你可能感兴趣的:(restful,后端,spring)