Spring Boot 实战系列:02 获取请求参数

Spring Boot 实战系列:02 获取请求参数


概述 Overview

上一期中是使用根路径/访问的,我们经常会看互联网上的网址都是多种多样的,其中除了前面一部分固定不变,也成为 域名 Domain,其它后面的部分会携带各种各样个性化的参数,最常见的就是/xxx/xxx以及/xxx?id=xxx,这些都是随着前端使用者的操作上下文变化的参数,前者称为路径参数,后者则叫查询参数,下文会介绍如何设置并获取这样的参数,以此来为访问者提供不同的内容。

什么是控制器

开始之前要先介绍控制器 Controller 的概念,一个控制器可以理解为应用的一个入口,就好比一个家宾馆有几十个房间,我们想要找到某一个房间则手拿指定的房卡就能进入到指定的房间去,当用户访问/page/1,就为其提供1号页面,以此类推提供指定的页面,编写控制器则是定义这个方法只为这个网址服务

定义一个控制器

创建与HelloWorldApplication同级的目录(package)controller,其中创建新的java文件FirstController,使用IDEA的话只要点击右键> New Java Class

Spring Boot 实战系列:02 获取请求参数

现在FirstController.java还只是一个普通的Java类,只需要一步就能让其变成一个控制器,参与到整个Spring应用的运转中去

在类名上写上@RestControllerr,使用IDEA的同学会看此时类会有高亮显示,左边出现一个小图标

Spring Boot 实战系列:02 获取请求参数

定义路由方法

随后在控制器内写上一个方法,分配一个网址给它, 比如/say_hello

package com.springboot.helloworld.controller;

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

@RestController
public class FirstController {
    
    @GetMapping("/say_hello")
    public String sayHello() {
        return "hello";
    }
}

启动应用,访问网址localhost:8080/say_hello就能看到方法最后放回的字符串hello

我们要实现的效果是访问localhost:8080/say_hello/<名字>就能返回定制的内容,例如/say_hello/张三, 页面显示 hello, 张三

package com.springboot.helloworld.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class FirstController {

    @GetMapping("/say_hello/{name}")
    public String sayHello(@PathVariable("name") String name) {
        return "hello," + name;
    }
}

可以尝试在浏览器中最后的路径后面加上随便什么内容,观察页面返回的内容

效果实现了,我们可以解析一下方法中做了什么

代码解析

第10行 @GetMapping上一节中写过,这是指定当前的方法接受GET方法请求,这是HTTP请求中的其中一种,可能也是互联网世界中使用最多的请求方式,参数是指定的网址,前部分肯定很好理解,后部分花括号包裹的就是定义一个变量,告诉方法此处内容不限定

第11行 @PathVariable("name") String name 获取了路径中名字为name的不限定内容,同时用它的值生成了一个String类型的变量name,方便方法体中可以使用

第12行 因为在方法签名中获取了name变量,于是在最后返回的时候就可以直接使用


感谢阅读!

关注公众号 Java全栈技术杂谈,不定期分享各类原创干货技术文章

Spring Boot 实战系列:02 获取请求参数

上一篇:AOP的姿势之 简化 MemoryCache 使用方式


下一篇:一日一技:实现函数调用结果的 LRU 缓存