1. 程式人生 > 實用技巧 >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

現在FirstController.java還只是一個普通的Java類,只需要一步就能讓其變成一個控制器,參與到整個Spring應用的運轉中去

在類名上寫上@RestControllerr,使用IDEA的同學會看此時類會有高亮顯示,左邊出現一個小圖示

定義路由方法

隨後在控制器內寫上一個方法,分配一個網址給它, 比如/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全棧技術雜談,不定期分享各類原創乾貨技術文章