SpringMVC2

一、接口聲明的穩定性

?

- 接口聲明不能輕易變:接口是前后端、服務間通信的約定。要是接口的 URL、請求方法、參數、返回值變了,調用方(比如前端、其他服務)就得跟著改,容易出問題。所以設計接口要謹慎,別老變動。

?

二、SpringMVC 接口示例

?

- 請求 URL:?http://127.0.0.1:8080/request/6&sa=lyb_n_homepage?

- ?127.0.0.1? 是本地地址,?8080? 是 Tomcat 端口,?/request/6? 是 URL 路徑,?sa=lyb_n_homepage? 是查詢參數(?sa? 是參數名,?lyb_n_homepage? 是參數值)。

- Controller 代碼:

@RequestMapping("/rs")

public String rc(@RequestParam("sa") String resource) {

? ? return "接收到參數 resource: " + resource;

}

?

?

- ?@RequestMapping("/rs")?:把 ?/rs? 路徑映射到這個方法,支持 GET、POST 等請求。

- ?@RequestParam("sa")?:把請求中名為 ?sa? 的參數綁定到 ?resource? 變量。

- 必傳 vs 非必傳:默認 ?required = true?(必傳),如果改成 ?@RequestParam(value = "sa", required = false)?,就是非必傳,沒傳 ?sa? 參數也不會報錯。

- 返回值:方法返回字符串,會直接返回給客戶端(比如瀏覽器顯示“接收到參數 resource: lyb_n_homepage”)。

?

三、JSON 與 Java 對象轉換庫

?

- Jackson:SpringBoot 默認的 JSON 處理庫,能把 Java 對象轉成 JSON,也能把 JSON 轉成 Java 對象。

- Fastjson/Fastjson2:阿里巴巴出的庫,性能好,API 簡單,很多企業在用。

- Gson:Google 出的庫,功能全,也很好用。

?

四、網絡編程與 SpringMVC 注解

?

網絡編程三步驟

?

1.?客戶端和服務端建立連接:比如瀏覽器和 Tomcat 服務器通過 TCP 三次握手建立連接。

2.?客戶端發請求:瀏覽器發 HTTP 請求(包含 URL、請求方法、頭信息、參數等)。

3.?服務端收請求并響應:Tomcat 收請求,SpringMVC 處理,再返回響應(比如 HTML 頁面、JSON 數據)。

?

@RequestMapping 注解

?

- 作用:既可以標記類,也可以標記方法,用來映射 URL 路徑。

- 標記類:類上的 ?@RequestMapping? 是父路徑,方法上的是子路徑,組合起來就是完整的 URL。

- 標記方法:直接映射方法到 URL。

- 支持的請求方法:默認支持 GET、POST 等,也可以用 ?method? 屬性指定(比如 ?method = RequestMethod.GET? 只支持 GET)。

- 路徑不能重復:如果有兩個相同的 URL 映射,啟動時會報 ?Ambiguous mapping? 錯誤(比如兩個方法都映射到 ?/hello?)。

?

請求方法不支持的錯誤

?

- 錯誤信息:

- 日志:?Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]?

- 頁面:?Whitelabel Error Page?,狀態碼 405(Method Not Allowed)。

- 原因:比如接口只支持 GET,你用 POST 請求,就會報這錯。

?

@RequestMapping 的屬性

?

- value 屬性:指定 URL 路徑,是默認屬性。如果注解里只有 ?value?,可以省略 ?value =?,比如 ?@RequestMapping("/hello")?。

- method 屬性:指定支持的請求方法,比如 ?RequestMethod.GET?、?RequestMethod.POST?。

- 示例:

- ?@RequestMapping(value = "/v1", method = RequestMethod.GET)?:只支持 GET 請求,路徑是 ?/v1?。

- ?@RequestMapping(value = "/v2", method = {RequestMethod.GET, RequestMethod.POST})?:同時支持 GET 和 POST 請求。

?

五、參數綁定問題

?

- 類型轉換錯誤:比如方法參數是 ?int age?,但請求沒傳 ?age?,或者傳了非數字,會報 ?NumberFormatException? 或 ?MethodArgumentTypeMismatchException?。

- 解決:把參數類型改成包裝類(比如 ?Integer age?),這樣沒傳參數時 ?age? 是 ?null?,不會報錯。

- 參數順序無關,名稱要一致:方法參數名要和請求參數名一致,順序沒關系。比如方法 ?public String test(String name, String password)?,請求參數 ?name=zhangsan&password=123? 能正確綁定,改成 ?password=123&name=zhangsan? 也能綁定。

?

六、總結

?本節從接口設計、SpringMVC 注解、JSON 轉換到網絡編程基礎、參數綁定,把 Web 開發的核心知識點串了起來。理解這些內容,能幫你搞定接口開發、前后端聯調、錯誤排查等問題,在實際項目中少踩坑。

?

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

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

相關文章

LVS集群實踐

一、LVS概念VS: Virtual Sever (調度器)RS: Real Sever (資源主機)CIP: Client IP (用戶IP)VIP: Virtual sever IP (VS外網的IP,客戶訪問的IP)DIP: Director IP &#xf…

使用Django框架構建Python Web應用

前言Django個高級Python Web框架,遵循MTV(Model-Template-View)設計模式:模型(Model):數據層,定義數據結構模板(Template):表現層,處理用戶界面視圖(View):業務邏輯層&am…

[AI-video] 數據模型與架構 | LLM集成

第五章:數據模型與架構 歡迎來到第五章! 在前幾章中,我們學習了網頁用戶界面(UI)(控制面板)、應用配置(系統參數設置)、任務編排(視頻生成流程的總調度&…

HTTP 性能優化實戰:突破高并發瓶頸的工業級方案

在互聯網高并發場景中,HTTP 性能表現直接決定系統生死。當每秒請求量突破十萬級甚至百萬級時,哪怕 100 毫秒的延遲都會引發用戶流失、交易失敗等連鎖反應。本文基于五大行業實戰案例,拆解 HTTP 性能瓶頸的底層邏輯,輸出可直接落地…

Xsens人形機器人擬人動作AI訓練,提升機器人工作精度與效率

隨著人工智能與機器人技術的深度融合,人形機器人正從實驗室走向工業制造、醫療護理、公共服務等真實場景。然而,要讓機器人真正"像人類一樣工作",其動作的流暢性、精準度與環境適應性仍是技術突破的關鍵。Xsens動作捕捉系統通過創新…

IIS網站間歇性打不開暴力解決方法

背景 網站使用 Asp.NET 框架開發,使用 SQL Server 2012 IIS 8.5 運行。開發上線以后,經常出現網站間歇性打不開,但是重啟 IIS 就可以正常訪問。 問題排查過程 打開日志記錄 觀察 CPU,內存,帶寬流量等占用正常&#xf…

JavaScript 動態訪問嵌套對象屬性問題記錄

問題描述不能解析 2 層 只能解析一層在 Vue 項目中,嘗試通過動態路徑(如 otherInfo.businessPlacePhotoUrlLabel)訪問或修改嵌套對象屬性時,發現 this[a.b.c] 無法正確解析,導致返回 undefined。錯誤示例removeImg(val…

7.17 滑動窗口 | assign

lc3015.法1&#xff1a;暴力bfs&#xff0c;數據范圍only 100&#xff0c;可以過法2&#xff1a;加入了x,y&#xff0c;可以思考加入的x,y影響了什么呢? 通過數學找規律class Solution { public:vector<int> countOfPairs(int n, int x, int y) {vector<int> ret(…

預訓練模型:大規模數據預學習范式——定義、原理與演進邏輯

本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; 以下基于權威教材、學術論文及行業技術報告&#xff0c;對“預訓練模型…

【kubernetes】--安全認證機制

文章目錄安全認證1. **身份認證&#xff08;Authentication&#xff09;**2. **授權&#xff08;Authorization&#xff09;**3. **準入控制&#xff08;Admission Control&#xff09;**4. **機密信息管理**5. **其他安全實踐**安全認證 Kubernetes 的安全機制覆蓋了從身份驗…

扣子工作流詳解

《扣子開發AI Agent智能體應用&#xff08;人工智能技術叢書&#xff09;》(宋立桓&#xff0c;王東健&#xff0c;陳銘毅&#xff0c;程東升)【摘要 書評 試讀】- 京東圖書 《扣子開發AI Agent智能體應用》案例重現 開發agent智能體的書籍-CSDN博客 工作流是指一系列相互關聯…

【一文解決】塊級元素,行內元素,行內塊元素

塊級元素&#xff0c;行內元素&#xff0c;行內塊元素&#xff01;盒模型1.標準盒模型&#xff08;box-sizing: content-box&#xff09;2.IE 盒模型&#xff08;box-sizing: border-box&#xff09;&#xff01;margin & padding1.margin、padding是什么2. 應用一、塊級元…

在 Spring Boot 中使用 MyBatis 的 XML 文件編寫 SQL 語句詳解

前言 在現代 Java Web 開發中&#xff0c;Spring Boot 和 MyBatis 是兩個非常流行的技術框架。它們的結合使得數據庫操作變得更加簡潔和高效。本文將詳細介紹如何在 Spring Boot 項目中使用 MyBatis 的 XML 文件來編寫 SQL 語句&#xff0c;包括配置、代碼結構、SQL 編寫技巧以…

字段級權限控制場景中,RBAC與ABAC的性能差異

RBAC(基于角色訪問控制)與ABAC(基于屬性訪問控制)的性能差異主要體現在??計算復雜度、策略靈活性、擴展性??和??資源消耗??等方面。以下是具體對比分析: ??一、性能對比維度?? ??維度????RBAC????ABAC????計算復雜度??低(預計算角色權限映射…

Reddit Karma是什么?Post Karma和Comment Karma的提升指南

在Reddit這一用戶活躍度高的社區里&#xff0c;想要獲得更好的曝光&#xff0c;我們就需要提升我們的Karma值&#xff0c;什么是Reddit Karma&#xff1f;怎么樣才能提升以獲得更大的影響力&#xff1f;本文將為你提高一套切實可行的提升方案。一、什么是Reddit Karma&#xff…

基于Canal實現MySQL數據庫數據同步

一、基礎概念與原理 1. Canal是什么&#xff1f; 阿里巴巴開源的MySQL binlog增量訂閱與消費組件&#xff0c;通過偽裝為MySQL Slave監聽Master的binlog變更&#xff0c;實現實時數據同步。 Canal 官方網站&#xff1a;https://github.com/alibaba/canal Canal Demo&#x…

算法第23天|貪心算法:基礎理論、分發餅干、擺動序列、最大子序和

今日總結&#xff1a; 擺動序列的三種特殊情況需要著重思考&#xff0c;感覺是沒有思考清楚 基礎理論 1、貪心的本質&#xff1a; 貪心的本質是選擇每一階段的局部最優&#xff0c;從而達到全局最優。 例如&#xff1a;一堆鈔票&#xff0c;只能拿走10張&#xff0c;如何拿走最…

Q-chunking——帶有動作分塊的強化學習:基于人類演示,進行一定的連貫探索(且可做到無偏的n步價值回溯)

前言 我在之前的文章中提到過多次&#xff0c;長沙具身團隊是我司建設的第二支具身團隊&#xff0c;通過5月份的全力招聘&#xff0c;為了沖刺6月底和7月初來長沙辦公室考察的第一批客戶&#xff0c;過去一個多月來&#xff0c;長沙分部(一開始就5人&#xff0c;另外5人 實習…

NW956NW961美光固態閃存NW964NW968

美光固態閃存深度解析&#xff1a;NW956、NW961、NW964與NW968的全方位評測一、產品概述與市場定位在當今數據爆炸的時代&#xff0c;固態硬盤&#xff08;SSD&#xff09;作為存儲領域的佼佼者&#xff0c;其性能與穩定性成為了用戶關注的焦點。美光&#xff08;Micron&#x…

C++修煉:IO流

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《C修煉之路》、《Linux修煉&#xff1a;終端之內 洞悉真理…