【SpringMVC】 參數傳遞

一.項目目錄

SpringBoot項目創建之后會生成很多目錄

刪除不需要的這四個文件/目錄

目錄

二.Spring MVC 和 MVC?

Spring MVC(Spring Web MVC)

Spring Web MVC 是?個 Web 框架

MVC : Model View Controller

它是一種思想 , 它把一個項目分成了三個部分.?

View視圖層

界面顯示 , 人機交互

Controller 控制器

選擇處理模型 ,選擇視圖

Model模型層

處理業務邏輯 , 處理數據 .

總結:

MVC是一種思想, 而Spring實現了這種思想, 稱為Spring MVC.

請求會直接到Controller.

SpringBoot是創建SpringMVC項目的一種方式 .? 還有其他方式.

現狀:

由于現在的項目都實現了前后端分離,后端開發人員不必編寫前端頁面,所以也就沒有了view視圖層.

因此,view又有了新的解釋,之前返回的是試圖,現在返回的是視圖所需要的數據.

三.Spring MVC

學習Spring MVC,主要學習這幾個方面 .?

1.建立連接 (客戶端和服務器)

2.請求

3.響應

@RequestMapping 路由映射

1.可以修飾方法

方法名和注解value沒有關系,建議一致.

瀏覽器127.0.0.1:8080/sayhi訪問

2.也可以修飾類

訪問路徑:類的路徑+方法路徑

瀏覽器?127.0.0.1:8080/hello/sayhi?訪問

開發中建議加上類路徑 : 避免重復/方便查找代碼

注意:

  • 注解里的斜杠可以寫多層(第一個斜杠可以省略,但是不建議 )

  • 注解不寫屬性名,默認是value

  • 默認情況下 get 和 post 請求都是支持的 ; 也可以用method屬性限制請求方式

參數的傳遞

1.傳遞單個參數

發送請求:

要求參數的名字一致

底層邏輯:從請求的參數中獲取參數名為name的值,并給name賦值

2.傳遞多個參數

發送請求:


3.傳遞對象

開發中,接口的參數通常定義為對象

4.后端參數重命名

如果進行了重命名,必須使用重命名之后的名字name的傳遞傳參 .

  • 使用了重命名注解之后,就是一個必傳的參數,否則會報錯. 但是也可以設置required為false來設置該參數為非必傳.

5.傳遞數組

傳遞數組有兩種方式.

  • 用同一個參數名

當請求中同一個參數有多個時,瀏覽器就會幫我們把這個參數封裝成一個數組 .

  • 使用逗號,分割傳遞

6.傳遞集合

需要添加注解我為非必傳

7.傳遞JSON

JavaScript Object Notation (JS對象說明)?, 是一種輕量級的數據交互格式 , 本質是一個對象字符串.

@RequestBody

添加注解@RequestBody將請求中的JSON轉化為Person對象

(JSON數據在body中添加)

通過Fiddler抓包,查看發送的請求的確是jason數據.

8.獲取URL中的參數

@PathVariable

添加@PathVariable注解

9.上傳文件

@RequestPart

?

注意:

  • 傳參時參數的名字需要一致.
  • 如果使用基本數據類型,必須要傳值,否則會報錯.

  • 如果使用包裝類,如果未傳參,會使用默認值null

  • 5開頭的錯誤通常是服務端錯誤? ? --- 查看日志

????????4開頭的錯誤通常是客戶端錯誤

  • 狀態碼

http狀態碼???

不是后端定義的.

2xx:成功? ? ? ? ? ? ? ?3xx:重定向???

4xx:客戶端錯誤??? 5xx服務端錯誤

業務狀態嗎

http響應成功的情況下,業務的響應分為不同的狀態.

四.Cookie 和 Session

兩者是會話機制.

cookie是客戶端機制

問題:可以偽造

session是服務端機制

問題:分布式(部署在多個機器上)

4.1獲取cookie

1.servlet方式

參數是請求里的內置對象.每個請求都有內置對象,如果需要就可以寫,不需要就可以不寫 .

2.注解方式 @CookieValue

4.2獲取session

1.servlet原始方式

2.注解@SessionAttribute

該注解為必傳參數,如果此時沒有session,就會直接報錯.

3.HttpSession 作為參數

紅框部分等同于HttpSession session = request.getSession( false ) ;

4.3.獲取header

1.servlet原始

2.注解 @RequestHeader


?

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

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

相關文章

python+pytest接口自動化:token關聯登錄這樣做,阿里p8都直呼牛逼!!!

在PC端登錄公司的后臺管理系統或在手機上登錄某個APP時,經常會發現登錄成功后,返回參數中會包含token,它的值為一段較長的字符串,而后續去請求的請求頭中都需要帶上這個token作為參數,否則就提示需要先登錄。 這其實就…

如何在Linux系統上檢測GPU顯存和使用情況?

如何在Linux系統上檢測GPU顯存和使用情況? 在Linux系統上,你可以使用一些命令行工具來檢測GPU顯存和使用情況。以下是一些常用的方法: 1. 使用nvidia-smi(僅適用于NVIDIA GPU) 如果你使用的是NVIDIA的顯卡&#xff0…

【前端】vue3+ts+vite,el-table表格渲染記錄重復情況

給自己一個目標,然后堅持一段時間,總會有收獲和感悟! 在使用vue的過程中,總會遇到一些有疑問的地方,總結就能夠加深印象,下次再出現的時候也有個參考的地方。 目錄 一、常見屬性二、重復原因三、高階用法3.…

Claude 發布2.1 版本,重大升級更新來看看有什么新功能?

11 月 23 日消息,OpenAI 競爭對手 Anthropic 日前推出了 Claude 2.1 聊天機器人及對應同名 AI 模型Claude 2.1,本文將總結Claude 2.1的主要功能。 增強的處理能力 上下文處理量大幅提升:Claude 2.1 現在能處理高達 200K上下文標記&#xff…

2、單片機及開發板介紹

單片機介紹 單片機,英文Micro Controller Unit,簡稱:MCU 內部集成:CPU、RAM(隨機存儲器)、ROM(只讀存儲器)、定時器、中斷系統、通訊接口等 作用:信息采集(傳感器)、處理&#xff0…

uniapp 適配部分IPhone手機底部安全距離

部分 IOS 機型,比如 Iphone X 的屏幕底部有一條“小黑線”區域,uniapp 項目中我們可以使用CSS的 env(safe-area-inset-bottom) 語句來自適配 IOS 的底部安全區域高度,這個語句會返回該機型的底部安全區域高度(單位 px)…

ffmpeg播放器實戰(播放器流程)

1.流程圖 1.main窗口創建程序窗口 程序窗口構造函數執行下面內容 2.開啟播放 3.開啟解碼 4.開啟渲染 5.反饋給ui 本文福利, 免費領取C音視頻學習資料包學習路線大綱、技術視頻/代碼,內容包括(音視頻開發,面試題,FFmpeg…

Linux C++ 服務器端這條線怎么走?一年半能做出什么?

Linux C 服務器端這條線怎么走?一年半能做出什么? 既然你是在校學生,而且編程語言和數據結構的基礎還不錯,我認為應該在《操作系統》和《計算機體系結構》這兩門課上下功夫,然后才去讀編程方面的 APUE、UNP 等書。 最…

【深度學習】如何選擇神經網絡的超參數

1. 神經網絡的超參數分類 神經網路中的超參數主要包括: 1. 學習率 η 2. 正則化參數 λ 3. 神經網絡的層數 L 4. 每一個隱層中神經元的個數 j 5. 學習的回合數Epoch 6. 小批量數據 minibatch 的大小 7. 輸出神經元的編碼方式 8. 代價函數的選擇 9. 權重初始化的方法 …

C語言哈希查找

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXKEY 1000 typedef struct Info_s {int num;char name[30];int age;char addr[30]; }Info_t, *pInfo_t; //哈希函數 int hash(char *key) {int h 0…

軟件測試之安全測試

軟件安全測試是指對軟件的安全性能和安全缺陷進行檢測和評估的過程&#xff0c;目的是保證軟件的安全性和穩定性&#xff0c;防止軟件受到惡意攻擊或者泄露敏感信息。 軟件安全測試要怎么測&#xff0c;主要取決于軟件的安全需求、風險和威脅。 在這我準備了一份軟件測試視頻…

C語言--給定一個數組,把第一項的值減去第二項的值,第二項的值減去第三項的值,第三項的值減去第四項的值,依次類推。放到一個新的數組中,并打印新的數組

一.題目描述&#xff1a; 給定一個數組&#xff0c;把第一項的值減去第二項的值&#xff0c;第二項的值減去第三項的值&#xff0c;第三項的值減去第四項的值&#xff0c;依次類推。放到一個新的數組中&#xff0c;并打印新的數組。 比如&#xff1a;輸入一個數組是5&#xff…

SA實戰 ·《SpringCloud Alibaba實戰》第14章-服務網關加餐:SpringCloud Gateway核心技術

大家好,我是冰河~~ 一不小心《SpringCloud Alibaba實戰》專欄都更新到第14章了,再不上車就跟不上了,小伙伴們快跟上啊! 在《SpringCloud Alibaba實戰》專欄前面的文章中,我們實現了用戶微服務、商品微服務和訂單微服務之間的遠程調用,并且實現了服務調用的負載均衡。也基…

Nginx結合cpolar實現內網穿透多個Windows Web站點端口

文章目錄 1. 下載windows版Nginx2. 配置Nginx3. 測試局域網訪問4. cpolar內網穿透5. 測試公網訪問6. 配置固定二級子域名7. 測試訪問公網固定二級子域名 1. 下載windows版Nginx 進入官方網站(http://nginx.org/en/download.html)下載windows版的nginx 下載好后解壓進入nginx目…

[autojs]利用console實現懸浮窗日志輸出

"ui"; ui.layout(<vertical><button id"autoFloatWindow" text"開啟懸浮窗" textSize"15sp" /><button id"autoService" text"開啟無障礙服務" textSize"15sp" /><button id"…

vue中怎么根據選擇的名稱 生成印章圖片

項目中需要根據選擇的印章名稱&#xff0c;動態生成印章 &#xff0c;印章下方顯示當前的日期 代碼如下 <template><div><label for"name">選擇名稱&#xff1a;</label><select id"name" v-model"selectedName">…

技術面時,一定要掌握這3個關鍵點

前言 現在有這么多優秀的測試工程師&#xff0c;大家都知道技術面試是不可避免的一個環節&#xff0c;一般技術面試官都會通過自己的方式去考察你的技術功底與基礎理論知識。 如果你參加過一些大廠面試&#xff0c;肯定會遇到一些這樣的問題&#xff1a; 1、看你項目都用到了…

機器學習/sklearn 筆記:K-means,kmeans++,MiniBatchKMeans

1 K-means介紹 1.0 方法介紹 KMeans算法通過嘗試將樣本分成n個方差相等的組來聚類&#xff0c;該算法要求指定群集的數量。它適用于大量樣本&#xff0c;并已在許多不同領域的廣泛應用領域中使用。KMeans算法將一組樣本分成不相交的簇&#xff0c;每個簇由簇中樣本的平均值描…

為什么要寫測試用例,測試用例寫給誰看?

&#x1f4e2;專注于分享軟件測試干貨內容&#xff0c;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff01;&#x1f4e2;交流討論&#xff1a;歡迎加入我們一起學習&#xff01;&#x1f4e2;資源分享&#xff1a;耗時200小時精選的「軟件測試」資…

mysql查詢統計最近12個月的數據

項目場景&#xff1a; mysql查詢統計最近12個月的數據&#xff0c;按每個月縱向展示&#xff0c;效果圖 sql語句 注意&#xff1a;count( v.uuid ) 這里的是被統計那張表的id SELECT m.month,count( v.uuid ) AS total FROM (SELECT DATE_FORMAT(( CURDATE()), %Y-%m ) AS mon…