【Spring&Vue学习】二、Springboot控制器/映射/前端传参&APIPOST的应用


👉原文阅读


💡章前导言

本文为B站1天搞定SpringBoot+Vue全栈开发系列视频学习笔记,带时间戳的B站笔记(不含代码)已经施工完成,点击视频右下角的“笔记”按钮即可查看(不带B站时间戳的笔记专栏链接在这)。

有能力的朋友请多多支持up拿完整的课件代码!本笔记代码部分不全,纯手打(我手打是因为个人而言手打记忆才深刻)。

如果想要资料,老师的微信公众号有免费的课件和文档,关注“软件练习生”公众号回复“Java”获取课件资料(注意:关注回复关键字就可以,不会让你加群/微信的!)。

我自己整理的课件、代码等资料(不保证全),放在Github上了,需要的自取。
👉1天搞定SpringBoot+Vue全栈开发·个人整理资料



📘正文开始

对应视频内容👉SpringBoot Controller

Web入门

  1. Spring Web提供了启动器starter,主要包含了三个组件:mvc、json、tomcat。
  2. webmvc组件主要提供web开发的注解(类似于控制器的注解)是web开发的基础框架
  3. json组件主要提供了JSON数据的解析,使能够接收前端发送数据并返回
  4. Tomcat为自带的容器依赖

控制器

控制器介绍

  • mvc为后端开发的一种模式:m为Model,用于存储收发数据;c为Controller,用于协调控制;v为View(视图),是用来显示数据的。

  • mvc模式下,从数据库中加载的数据首先被封装在Model中,通过Controller绑定View上(视图可以理解为html的页面)。

  • 所以控制器负责接收将数据交给浏览器与接收用户请求。用户操作时,实际上是→对控制器发出请求→控制器取用数据→交给视图→最终响应给用户。

两种注解

  • @Controller(无法前后端分离):既有页面又有数据。
  • @RestController:只有数据。RestController(为了方便前端处理)会将返回的对象数据转换为JSON格式。

路由映射

控制器如何接收前端的请求

  • @RequestMapping(可以用在类或者方法上)

  • value参数:用于配置路径,支持普通字符串与正则表达式。可以规定前端用什么方法请求(比如get或post)

实际操作

  1. 使用@RequestMapping

  2. 加入value值:/hello

    使hello方法能够接收前端的请求,前端通过/hello路径能够访问到该方法。(在地址栏里面发送的请求都是get请求)

  3. 规定方法:加入method=RequestMethod.GET,规定只能通过get请求。(@RequestMapping(value="/hello",method=RequestMethod.GET)等价于@GetMapping("/hello"))

参数传递

  • @RequestParam可以将前端的数据绑定到控制器的方法上以获取前端传递的信息。当传参与参数名一致时可省略。

    此时只需要在方法里面加入一个参数:String nickname,就可自动将前端输入的昵称传入nickname中。

  • 传参与定义参数名不一致,可以在方法里加入@RequestParam(value = "nickname",required = false)String name

    (代表参数映射,加上这个注解,就代表这个参数是必须的,如果希望可选就加上required = false)

    (如果必须,没输入会报错,报错结果为status=400,400一般意味着是客户端,也就是浏览器出了问题)

全部代码如下

创建entity实体包,在entity下创建User类(按住alt+insert快捷加入get/set/to String方法)

public class User {
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    private String username;
    private String password;

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

Controller包下创建ParamsController控制器类(后面的POST方法用APIPOST可以调试)

@RestController
public class ParamsController {
    @RequestMapping(value = "/getTest1",method = RequestMethod.GET)
    public String getTest1(){
        return "Get请求";
    }

    @RequestMapping(value ="/getTest2",method = RequestMethod.GET)
    public String getTest2(String nickname,String phone){
        System.out.println("nickname"+nickname);
        System.out.println("phone"+phone);
        return "GET请求";
    }

    @RequestMapping(value = "/getTest3",method = RequestMethod.GET)
    public String getTest3(@RequestParam(value = "nickname",required = false)String name){
    //↑注解,代表参数映射,表示如果传参名字与参数不一致,就映射nickname
        System.out.println("nickname"+name);
        return "GET请求";
    }

    @RequestMapping(value = "/postTest1",method = RequestMethod.POST)
    public String postTest1(){
        return "POST请求";
    }

    @RequestMapping(value = "/postTest2",method = RequestMethod.POST)
    public String postTest2(String username,String password){
        System.out.println("username:"+username);
        System.out.println("password:"+password);
        return "POST请求";
    }

    @RequestMapping(value = "/postTest3",method = RequestMethod.POST)
    public String postTest3(User user){
        System.out.println(user);
        return "POST请求3";
    }

    @RequestMapping(value = "/postTest4",method = RequestMethod.POST)
    public String postTest4(@RequestBody User user){
        System.out.println(user);
        return "post请求";
    }

    @GetMapping("/test/**")
    public String test(){
        return "通配符请求";
    }
}

APIPOST

  • 可以模拟post请求

(本来需要通过专门的前端程序或者表单,这里可以通过APIPOST进行前端调试)

(在地址栏里面发送的是get请求,不能直接/postTest(post请求的方法),会有405(4开头一般是浏览器的问题))

  • JSON类型需要使用{}传递
  • 如果需要接收JSON类型的数据需要加一个单独的注解 @RequestBody
  • 需要注意类型与参数名都要对的上
  • 通配符(了解即可)/test/**,意味着/test/a/b/c都行。/test/*意味着只能/test/abcc。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值