使用springboot来请求参数

@RestController的简述

这个注解是@Controller@ResponseBody两个注解的组合,它使得类中的每个方法默认都会返回数据而不是视图(如JSP页面)。

return可以在界面中返回数据,如图
在这里插入图片描述

获取简单参数

简单参数的获取get和post方法都是一样的

get方法

可以利用postman来输入参数作为测试
在这里插入图片描述
注意参数名要和形参的变量名相同

package com.example.springboot_start.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//springboot方式接收参数
@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(String name, Integer age){
        System.out.println(name + ":" + age);
        return "ok";
    }
}

然后在postman里输入参数:
在这里插入图片描述
就能获得:
在这里插入图片描述
然后这个方法还return了"ok"
所以就可以在浏览器看到ok

post方法

在这里插入图片描述
浏览器输出
在这里插入图片描述
控制台输出:
在这里插入图片描述

形参和请求参数不一致时:

如果方法形参名称和请求参数名称不一致的时候,可以使用@RequestParam映射
如下

package com.example.springboot_start.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

//springboot方式接收参数
@RestController
public class RequestController {
    @RequestMapping("/simpleParam")
    public String simpleParam(@RequestParam(name="name")String username, Integer age){
        System.out.println(username + ":" + age);
        return "ok";
    }
}

注意这个
在@RequestParam(name=“name”)注解中,name属性的作用是指定要绑定到方法参数的HTTP请求参数的名称
在以上代码中,就是可以把请求参数的name的值赋到username上面
这样即便请求参数和形参不一致也没问题了

实体参数

简单实体对象

刚才说了两个参数的情况,那如果要是一大堆参数咋办呢?
一大堆参数传参就费劲了
所以可以整个实体对象
我们先搞个pojo包(Plain Old Java Object)
再在里面弄个User类用于定义User对象
在这里插入图片描述
User类:

package com.example.springboot_start.pojo;

public class User {
        private String name;
        private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
   @RequestMapping("/simplePojo")
    public String simplePojo(User user){
        System.out.println(user.getName() + ":" + user.getAge());
        return "ok";
    }

在postman里就正常传参即可
在这里插入图片描述
输出:
在这里插入图片描述

在这里插入图片描述
别忘记请求参数名要和形参对象属性名相同
在这里插入图片描述

复杂实体对象

如果说有如下情况的实体对象呢?
在这里插入图片描述
name, age还是和之前一样封装
重点是这个address怎么封装

封装方式如下图
就是以以“类.属性”的方式传进去
在这里插入图片描述

咱把控制器类改成能显示address的样子

    @RequestMapping("/simplePojo")
    public String simplePojo(User user){
        System.out.println(user.getName() + ":" + user.getAge() + "  And the address is :"+
                user.getAddress().getProvince() + "," + user.getAddress().getCity()
                );
        return "ok";
    }

然后get一下看看效果
在这里插入图片描述
效果如下
在这里插入图片描述

数组集合参数

方法一: 用数组封装

使用场景:

比如说前端如下图所示

在这里插入图片描述

一下子要传一坨参数
这个时候就可以用数据集合参数了

控制器类:

    @RequestMapping("/arrayParam")
    public String arrayParam(String[] hobby){
        //这就是要传递进去一个数组 然后里面是一坨hobby
        System.out.println("我的爱好有:");
        for(String i:hobby){
            System.out.println(i + " ");
        }
        return "ok";
    }

postman:
注意key都是一样的,都是array的名字
在这里插入图片描述

结果:

在这里插入图片描述

方法二: 用list封装

控制器类:

   @RequestMapping("/listParam")
    public String listParam(@RequestParam List<String> hobby){
        //这就是要传递进去一个数组 然后里面是一坨hobby
        System.out.println(hobby);
        return "ok";
    }

注意,因为多个值默认会封装到数组当中
所以要用@RequestParam List<String> hobby
来绑定到数组当中

在这里插入图片描述
输出:
在这里插入图片描述

日期参数

控制器类:

    @RequestMapping("/timeParam")
    public String timeParam(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time){
        //这就是要传递进去一个数组 然后里面是一坨hobby
        System.out.println(time);
        return "ok";
    }

在这里插入图片描述

关键点:
@DateTimeFormat注解有几个属性,其中最常用的是pattern
pattern属性:pattern属性允许你指定一个日期时间的格式模式。这个模式是一个字符串,定义了日期和时间的格式。模式中的每个字符都有特定的含义,例如:

yyyy:四位数的年份
MM:两位数的月份
dd:两位数的日期
HH:24小时制的小时
mm:分钟
ss:秒

别忘记补0,除了年意外都是两位

JSON参数

这个就必须用post请求了
因为json必须在请求体中携带
以下红框为注意事项
在这里插入图片描述

其中,@RequestBody 这个注释的作用:

Spring MVC会尝试将传入的HTTP请求体(通常是JSONXML格式)自动转换为注解所标注参数类型的实例
所以在这个里面就是把我们在请求体所发送的JSON数据自动转换成User的数据类

别忘记JSON的数据键名形参对象属性名相同

路径参数

一个参数

请求体代码如下

    @RequestMapping("/path/{id}")
    public String pathParam(@PathVariable String id){
        System.out.println(id);
        return "okk";
    }

postman:
在这里插入图片描述

然后我们再回头讲解下请求体代码:
在这里插入图片描述
其中,@PathVariable注解用于将请求URI中的模板变量(即路径变量)绑定到功能处理方法的参数上

最终打印出:
在这里插入图片描述

两个参数(多个参数

和一个参数同理,就有一丢丢地方不一样捏
请求体:

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

postman:
在这里插入图片描述
打印:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值