SpringMVC系列(三)(請求處理的十個實驗(上))

0 引言

作者正在學習SpringMVC相關內容,學到了一些知識,希望分享給需要短時間想要了解SpringMVC的讀者朋友們,想用通俗的語言講述其中的知識,希望與諸位共勉,共同進步!

本系列會持續更新!!可以放心食用!

1 本篇內容的十個請求處理實驗

主要通過以上10個實驗來充分掌握請求參數的處理!!

2 十個請求處理實驗中的前五個

2.1 實驗一 使用普通變量,請求參數

做這10個實驗之前,需要有一個發送請求參數的前端網頁,這個網頁已經準備好了,文件可以在此連接中下載:
? ??前端請求文件?

然后將它放進當前項目工中的src--resources--static目錄下,當項目啟動時,在網頁中輸入localhost:8080(如果在配置文件中修改過端口的,請使用修改后的端口)即可訪問下面這個頁面:

當我們輸入用戶名/密碼/電話號碼以及是否同意用戶協議后,點擊注冊:

會發現網址上的請求地址為:

因為鍵值對都是寫在請求地址中,所以我們可以確定前端是以Get類請發送給的并且訪問的地址為/handle01,所以我們需要在后端編寫:

    @RequestMapping(value = "/handle01")public String handle01(String username, String password, String cellphone, boolean  agreement){System.out.println("username:"+username);System.out.println("password:"+password);System.out.println("cellphone:"+cellphone);System.out.println("agreement:"+agreement);return "ok!!!";

當發送過來的時候是普通的參數時,我們可以直接在方法的變量中接下前端送過來的數值,運行成功后,網頁端:

后端:

需要注意的是:方法中的變量名稱需要和前端發來請求所帶的關鍵詞一一對應!!!!,如果我想隨心所欲地給變量取名字,那應該怎么辦呢?使用實驗二的方法!

2.2?實驗二?@RequestParam 明確參數使用

變量名可以隨便取名稱,但代價就是要在變量名前使用@RequestParam注解標注出這個變量對應的關鍵詞是什么,代碼是這樣寫的:

    @RequestMapping(value = "/handle02")public String handle02(@RequestParam("username") String un,@RequestParam("password") String pwd,@RequestParam("cellphone") String cp,@RequestParam("agreement") boolean  ok){System.out.println("username:"+un);System.out.println("password:"+pwd);System.out.println("cellphone:"+cp);System.out.println("agreement:"+ok);return "ok!!!";

這樣的話當實驗二點擊注冊后:

網頁端:

后端:

2.3?實驗三?使用POJO匹配封裝所有的參數

有沒有發現,如果使用上面來兩種實驗的話,有太多屬性值需要一個一個傳輸,非常麻煩,所以實驗三給出了一種很方便的寫法。

進入實驗三:

然后先發送個注冊請求,點擊F12打開網頁中的請求配置發現是以POST的方式發送的,內容應該被保存在請求體中:

所以可以在后端java編寫代碼:

首先先編寫一個Bean對象,并一一封裝了相對應的屬性值:

import lombok.Data;@Data
public class person {private String username;private String password;private String cellphone;private boolean agreement;
}

隨后在Comtroller中編寫:

    @RequestMapping(value = "/handle03")public String handle03(Person  person){System.out.println(person);return "ok!!!";}

網頁端:

后端:

為什么可以這樣?因為SpringBoot可以自動把請求參數與POJO中的輸性進行一一對應!!

2.4?實驗四?使用@RequstHeader注解獲得請求頭中的內容

進入實驗四:

然后先發送個請求,點擊F12打開網頁中的請求配置中請求標頭:

就希望獲得其中某些鍵值對,我應該如何編寫程序呢?比如我想獲得請求頭中的Host:

    @RequestMapping(value = "/handle04")public String handle04(@RequestHeader("Host") String host){System.out.println(host);return "ok!!!";}

網頁端:

后端:

打印出了Host關鍵詞中的數值:

2.5?實驗五?獲取CookieValue的值

如果有不知道Cookie是什么的同學可以看看:

阿里二面:你說說Cookie、Session、Token的區別?傻傻分不清。。。_嗶哩嗶哩_bilibili

我們可以在這里創建一個Cookie的鍵值對作為測試:

當我加上去之后,只要網站上不關閉,每次發送請求都可以在請求頭中看見Cookie的數值:

程序:

    @RequestMapping(value = "/handle05")public String handle05(@CookieValue("hehe") String hehe){System.out.println(hehe);return "ok!!!";}

網頁端:

后端:

?3?十個實驗的測試代碼

如果大家也不想敲代碼的話,那就可以直接在我的gitee地址里面下載十個實驗的測試代碼:

lin/請求測試十個實驗https://gitee.com/lin2002wei/Request_code

參考:

P91-P95

095.請求處理 - 實驗5:@CookieValue - 獲取cookie的值_嗶哩嗶哩_bilibili

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86290.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86290.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86290.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python案例練習:函數專題

用函數重新設計文章單詞出現次數程序 composition This is my family. We have a father, a mother and two brothers. My father is a doctor. He works in a hospital. My mother is a teacher. She teaches English in a school. My older brother is a student. He stu…

數據驅動 AI 時代:數據庫行業的技術躍遷與生態重構

在數據驅動的 AI 戰場,真正的決勝武器不是復雜精妙的算法模型,而是深埋在企業核心系統中的高維數據網絡(圖)。 時至今日,市場對AI的風向正從“狂飆突進”轉向“精耕細作”,就在上周(米國時間6月…

碼分復用通俗理解

一、碼分復用(CDMA)的通俗理解 碼分復用(Code Division Multiple Access,CDMA)是一種讓多個用戶在同一時間、同一頻段上同時傳輸數據的技術。它的核心思想是:給每個用戶分配一個唯一的“編碼鑰匙”&#x…

MAC、IP地址、TCP、UDP、SSL、OSI模型

目錄 一 概要 二 MAC和IP地址 (1)什么是 MAC 地址? (2)什么是 IP 地址? (3)MAC 地址 vs IP 地址對比表 (4)總結一下 二 TCP、UDP、SSL詳細介紹 &#…

弱口令介紹及破解方式筆記

一、弱口令的定義與危害 弱口令是指容易被猜測或破解的密碼,通常包含簡單數字組合(如“123456”)、鍵盤連續字符(如“qwerty”)、個人信息(如生日、姓名)或常見詞匯(如“password”…

Kotlin 中ArrayList、listOf、arrayListOf 和 mutableListOf區別

在 Kotlin 中&#xff0c;ArrayList、listOf、arrayListOf 和 mutableListOf 是常用的集合創建方式&#xff0c;但它們在類型、可變性和使用場景上有明顯區別。以下是核心對比&#xff1a; 一、基本定義與類型 創建方式類型可變性底層實現ArrayList<T>()ArrayList<T…

C盤清理技巧分享:釋放寶貴空間,提升電腦性能

Hi&#xff0c;我是布蘭妮甜 &#xff01;隨著電腦使用時間的增長&#xff0c;C盤空間逐漸被各種文件占據&#xff0c;導致系統運行緩慢、程序響應遲鈍。對于許多用戶來說&#xff0c;C盤空間不足是一個常見且令人頭疼的問題。本文將分享一系列實用的C盤清理技巧&#xff0c;幫…

【 感知集群】大規模分布式基礎設施的AI賦能藍圖

第一部分&#xff1a;AIOps基礎——從被動響應到預測性運維 在本報告的初始部分&#xff0c;我們將為管理一個復雜的大規模集群建立關鍵的基線。我們認為&#xff0c;在追求高級優化或未來主義架構之前&#xff0c;一個強大、由人工智能驅動的運維基礎是不可或缺的。本部分將詳…

《R循環:深度解析與高效使用技巧》

《R循環:深度解析與高效使用技巧》 引言 R語言作為一種功能強大的統計計算和圖形顯示語言,被廣泛應用于科研、數據分析、金融等領域。R循環是R語言中的核心概念之一,對于提高編程效率、處理復雜數據至關重要。本文將深度解析R循環,并介紹高效使用技巧,幫助讀者更好地掌握…

Windows WSL安裝Emscripten?/emsdk(失敗)

前面說過&#xff0c;在CMD、PS下&#xff0c;根本安裝不了。那只能試試在WSL安裝了。 安裝ubuntu 管理員運行PowerShell wsl --install ubuntu自帶python3&#xff0c;不需要安裝。 安裝 我就奇怪了&#xff0c;都說得頭頭是道&#xff0c;實際上一操作就出問題&#xff…

SpringBoot + EMQX 通過MQTT協議和下位機建立通訊并獲取下位機的監測數據-->測試

一、說明 在上一個博客中&#xff0c;我們部署了 EMQX 服務器&#xff0c;實現了 SpringBoot EMQX 通過MQTT協議和下位機建立通訊并獲取下位機的監測數據的編碼。現在我們對編碼進行進一步的測試。 二、編碼測試 2.1 在 EMQX 服務器開啟客戶端認證 這里的客戶端認證&#xf…

#17 修改開源模型以適配新任務

在Kaggle的評論區看到有選手想用Swin Transformer來做回歸任務,從這個片段可以窺見修改模型的一些思路,于是記錄下來學習一下 基于 torchvision Swin_B 模型的特征提取 from torchvision.models.swin_transformer import swin_b, Swin_B_Weights, swin_v2_b, Swin_V2_B_Weig…

變電站自動化系統有哪些設備?

變電站自動化系統是由多類設備協同工作的復雜系統&#xff0c;其設備按功能層級可分為過程層設備?&#xff08;直接連接一次設備&#xff09;、間隔層設備?&#xff08;實現保護控制&#xff09;和站控層設備?&#xff08;數據匯總與監控&#xff09;&#xff0c;同時還包括…

樹莓派超全系列教程文檔--(66)rpicam-apps可用選項介紹之視頻選項

這里寫目錄標題 視頻選項qualitybitrateintraprofilelevelcodecsave-ptskeypresssignalinitialsplitsegmentcircularinlinelistenframesframerate 文章來源&#xff1a; http://raspberry.dns8844.cn/documentation 原文網址 視頻選項 本節中指定的命令行選項僅適用于視頻輸…

C++98和C++11的for循環使用對比

1、C98 中的 傳統for 循環 語法結構&#xff1a;這種形式的 for 循環由三個部分組成&#xff1a;初始化語句&#xff08;int i 0&#xff09;、循環條件&#xff08;i < 10&#xff09;和迭代語句&#xff08;i&#xff09;。通常用于遍歷一個已知大小的循環范圍。使用場景…

ubutun 操作

1.防火墻 Ubuntu 默認使用 ufw&#xff08;Uncomplicated Firewall&#xff09;作為其防火墻管理工具。ufw提供了一個用戶友好的界面來配置和管理iptables防火墻。下面是一些基礎的ufw命令&#xff0c;幫助你管理Ubuntu的防火墻。 1. 檢查UFW狀態 sudo ufw status 2. 啟用UFW s…

麒麟V10操作系統離線安裝Docker、Docker compose和1Panel

安裝Docker 下載docker離線安裝包&#xff0c;并上傳到服務器 下載地址&#xff1a;https://download.docker.com/linux/static/stable/x86_64/ 解壓壓縮包&#xff0c;并復制到指定目錄 tar -xvf xxx.tgzcp docker/* /usr/bin/配置Docker服務&#xff0c;并賦予文件執行權限…

Java 與 MySQL 性能優化:MySQL性能指標解讀與監控方法

文章目錄 引言一、關鍵性能指標解讀1. QPS&#xff08;Queries Per Second&#xff09;&#xff1a;每秒查詢數2. TPS&#xff08;Transactions Per Second&#xff09;&#xff1a;每秒事務數3. 緩存命中率 二、性能監控工具介紹與使用1. SHOW STATUS2. Prometheus Grafana&a…

香橙派3B學習筆記13:deb 打包調用系統庫與.so動態鏈接庫的程序(部分失敗)

之前接觸到了snap打包自己的應用程序與依賴&#xff0c;但它的默認沙盒隔離的機制導致其訪問系統庫有局限性&#xff0c;它在訪問硬件資源的時候沒有的那些權限需要額外聲明&#xff0c;不符合應用發布的便攜性要求。 本文學習下如何用deb打包的方式打包自己需要調用系統庫的程…

第二十屆“開源中國開源世界”大會:openKylin AI創新實踐與成果分享

2025年6月13日&#xff0c;第二十屆“開源中國開源世界“大會在北京萬壽賓館隆重召開。本屆大會由開源軟件推進聯盟&#xff08;COPU&#xff09;主辦&#xff0c;以“共建人工智能時代的開源生態”為主題&#xff0c;匯聚來自全球開源與AI領域的專家學者、技術領袖與前沿企業&…