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地址栏请求。

(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)普通参数:

 

//    普通参数
//    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("名称")注解进行配对)

//  普通参数,请求参数名与形参不同
//    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)

实体类:

控制层类: 

//    当实体类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)数组传参:

//     数组传参
//    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)集合传参:

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

 3、Json类型参数(三种)

Maven导入坐标:

<!--json数据传递参数-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.2</version>
        </dependency>
    </dependencies>

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

 

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

 

 (1)集合参数Json格式

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

(2)Pojo参数:json格式

值类型:

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

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

值类型:

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

补充:

 

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

 

5、类型转换器

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值