Spring MVC數據傳遞全攻略

Spring MVC數據傳遞

  • 一、前端到后端的數據傳遞
    • 1. 使用 @RequestParam 傳遞簡單參數
    • 2. 使用 @PathVariable傳遞路徑參數
    • 3. 使用@RequestBody傳遞 JSON 數據
  • 二、后端到前端的數據傳遞
    • 1. 使用Model或 ModelAndView傳遞數據到前端
    • 2. 使用HttpServletResponse直接寫回數據
    • 3.使用@ResponseBody將后端數據用JSON格式發送前端
  • 注意事項

一、前端到后端的數據傳遞

1. 使用 @RequestParam 傳遞簡單參數

應用于處理頁面標簽名稱和方法參數名稱不一致,可以使用此注解實現對應關系

適用于獲取 URL 或表單中的簡單參數(如 ?name=value)。
后端代碼示例:

 //將帶來的數據msg作為參數傳入方法,并在方法中使用@RequestMapping("/show1")public String show1(@RequestParam("msg") String msg1){System.out.println("=====接受到用戶發送數據為:"+msg1+"=======");return "success";//跳轉至成功頁面}

前端調用方式:

  • URL 直接傳遞:/show1?msg=25
  • 表單提交時拼接參數。

@RequestParam的defaultValue 屬性:設置默認值

//接收到uname的值則傳遞 未接收到值返回默認值“暫無用戶”@RequestMapping("/show2")public String show2(@RequestParam(name = "uname",defaultValue = "暫無用戶") String name){System.out.println("=====接受到用戶發送數據為:"+name+"=======");return "success";//跳轉至成功頁面}

前端調用方式:

  • URL 直接傳遞:/show2?uname=xxy
  • 如果直接訪問/show2 則返回 “暫無用戶”

2. 使用 @PathVariable傳遞路徑參數

用于綁定 url 中的占位符。
從 URL 路徑中獲取動態參數(RESTful 風格)。
后端代碼示例:

//命名不一致時要在注解內帶名稱值@RequestMapping("/show3/{uname}/{pwd}")public String show3(@PathVariable("uname") String msg1, @PathVariable("pwd") String msg2){System.out.println("=====接受到用戶發送數據為:"+msg1+"   "+msg2+"=======");return "success";//跳轉至成功頁面}

前端調用方式:

  • 直接訪問:/show3/xxy/1234567

//命名一致時@PathVariable內不用帶名稱值@PostMapping("/show4/{uname}/{pwd}")public String show4(@PathVariable String uname, @PathVariable String pwd){System.out.println(uname);System.out.println(pwd);return "success";}

前端調用方式:

  • 直接訪問:/show4/xxy/1234567

3. 使用@RequestBody傳遞 JSON 數據

               JSON=====>Java對象

接收前端傳遞的 JSON 格式數據,并自動轉換為 Java 對象。
后端代碼示例:

    //@RequestBody傳入一個對象信息(在body中用json傳遞)//    {"eid":123,//    "ename":"xxy",//    "esex":"女"}@RequestMapping("/show5")public String show5(@RequestBody Emp emp){System.out.println("=====接受到用戶發送數據為:"+emp+"=======");return "success";//跳轉至成功頁面}

前端調用方式(在body體中用json字符串傳值):
要用除GET請求以外的請求方式(GET請求無body體)

 {"eid":123,"ename":"xxy","esex":"女"}

二、后端到前端的數據傳遞

1. 使用Model或 ModelAndView傳遞數據到前端

適用于服務端渲染(如 Thymeleaf、JSP)。
后端代碼示例:

@GetMapping("/profile")
public String profile(Model model) {model.addAttribute("username", "John");return "profile"; // 返回視圖名稱
}

前端頁面(Thymeleaf 示例):

<p th:text="'Username: ' + ${username}"></p>

2. 使用HttpServletResponse直接寫回數據

手動通過響應對象返回數據。
后端代碼示例:

@GetMapping("/message")
public void getMessage(HttpServletResponse response) throws IOException {response.getWriter().write("Hello from server");
}

3.使用@ResponseBody將后端數據用JSON格式發送前端

               Java對象=====>JSON

后端代碼示例:

 	@RequestMapping("/show01")@ResponseBodypublic List<Emp> show01(){Emp emp1=new Emp(1,"XXY","女");Emp emp2=new Emp(2,"xhn","男");Emp emp3=new Emp(3,"xxx","女");List<Emp> list=new ArrayList<>();list.add(emp1);list.add(emp2);list.add(emp3);return list;}

前端顯示(json格式輸出對象信息):

[{"eid": 1,"ename": "XXY","esex": "女"},{"eid": 2,"ename": "xhn","esex": "男"},{"eid": 3,"ename": "xxx","esex": "女"}
]

注意事項

  • Content-Type 匹配@RequestBody 需前端設置 application/json,而 @RequestParam 默認支持 x-www-form-urlencoded
  • 參數校驗:結合 @Valid 注解對傳遞的數據進行校驗(如 Bean Validation)。
  • 跨域問題:若前后端分離開發,需配置 @CrossOrigin 或全局 CORS 規則。

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

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

相關文章

倉庫管理系統-12-前端之頭部區域Header基于嵌套路由訪問個人中心

文章目錄 1 個人中心 1.1 DateUtils.vue(子組件) 1.2 Home.vue(父組件) 1.3 router/index.js(嵌套路由) 1.4 index.vue(路由占位符) 2 Header.vue 2.1 頁面布局 2.2 toUser方法 2.3 初始加載 2.4 Header.vue 頭部區域Header中有一個個人中心下拉菜單,點擊個人中心選項,通過嵌…

【智能協同云圖庫】第七期:基于AI調用阿里云百煉大模型,實現AI圖片編輯功能

摘要&#xff1a;AI 高速發展賦能傳統業務&#xff0c;圖庫網站亦有諸多 AI 應用空間。以 AI 擴圖功?能為例&#xff0c;讓我們來學習如何在項目?中快速接入 AI 繪圖大模型。?用戶可以選擇一張已上傳的圖片&#xff0c;?通過 AI 擴圖得到新的圖片&#xff0c;希望可以幫到大…

Notepad++插件安裝

方式一&#xff1a;自動安裝&#xff08;有些notepad并不好用&#xff0c;推薦方式二&#xff09;工具欄-》插件-》插件管理如下點擊安裝后會提示&#xff0c;后端安裝&#xff0c;安裝成功后自動啟動&#xff0c;本人使用的v8.6.4的版本&#xff0c;插件基本都無法自動安裝&am…

git pull和git fetch的區別

git pull和git fetch是git版本控制系統中的兩個基本命令&#xff0c;它們都用于從遠程倉庫更新本地倉庫的信息&#xff0c;但執行的具體操作不同。git fetch:git fetch下載遠程倉庫最新的內容到你的本地倉庫&#xff0c;但它并不自動合并或修改你當前的工作。它取回了遠程倉庫的…

Item35:考慮virtual函數以外的其他選擇

在C++中,虛函數是實現多態的傳統方式,但并非唯一選擇。過度依賴虛函數可能導致派生類與基類的強耦合,或難以在運行時靈活切換行為。《Effective C++》Item35指出:應根據場景選擇更合適的替代方案,包括NVI模式、函數指針、策略模式等。本文解析這些方案的原理、適用場景及實…

Vue3 狀態管理新選擇:Pinia 從入門到實戰

一、什么是pinia? 在 Vue3 生態中&#xff0c;狀態管理一直是開發者關注的核心話題。隨著 Vuex 的逐步淡出&#xff0c;Pinia 作為官方推薦的狀態管理庫&#xff0c;憑借其簡潔的 API、強大的功能和對 Vue3 特性的完美適配&#xff0c;成為了新時代的不二之選。今天我們就來深…

Unity相機控制

相機的控制無非移動和旋轉&#xff0c;每種操作各3個軸6個方向&#xff0c;一共12種方式。在某些需要快速驗證的項目或Demo里常常需要絲滑的控制相機調試效果。相機控制雖然不是什么高深的技術&#xff0c;但是要寫的好用還是很磨人的。 鎖定Z軸的旋轉 一個自由的相機可以繞 …

vue2 使用liveplayer加載視頻

vue2 使用liveplayer加載視頻 官網: https://www.liveqing.com/docs/manuals/LivePlayer.html支持WebRTC/MP4播放;支持m3u8/HLS播放;支持HTTP-FLV/WS-FLV/RTMP播放;支持直播和點播播放;支持播放器快照截圖;支持點播多清晰度播放;支持全屏或比例顯示;自動檢測IE瀏覽器兼容播放;支…

JavaScript語法樹簡介:AST/CST/詞法/語法分析/ESTree/生成工具

AST簡介 在平時的開發中&#xff0c;經常會遇到對JavaScript代碼進行檢查或改動的工具&#xff0c;例如ESLint會檢查代碼中的語法錯誤&#xff1b;Prettier會修改代碼的格式&#xff1b;打包工具會將不同文件中的代碼打包在一起等等。這些工具都對JavaScript代碼本身進行了解析…

Java函數式編程之【基本數據類型流】

一、基本數據類型與基本數據的包裝類 在Java編程語言中&#xff0c;int、long和double等基本數據類型都各有它們的包裝類型Integer、Long和Double。 基本數據類型是Java程序語言內置的數據類型&#xff0c;可直接使用。 而包裝類型則歸屬于普通的Java類&#xff0c;是對基本數據…

.NET Core部署服務器

1、以.NET Core5.0為例&#xff0c;在官網下載 下載 .NET 5.0 (Linux、macOS 和 Windows) | .NET 根據自己需求選擇x64還是x86&#xff0c;記住關鍵下載完成還需要下載 Hosting Bundel &#xff0c;否則不成功 2、部署https將ssl證書放在服務器上&#xff0c;雙擊導入&#…

YOLO---04YOLOv3

YOLOV3 論文地址&#xff1a;&#xff1a;【https://arxiv.org/pdf/1804.02767】 YOLOV3 論文中文翻譯地址&#xff1a;&#xff1a;【YOLO3論文中文版_yolo v3論文 中文版-CSDN博客】 YOLOv3 在實時性和精確性在當時都是做的比較好的&#xff0c;并在工業界得到了廣泛應用 …

Qt知識點3『自定義屬性的樣式表失敗問題』

問題1&#xff1a;自定義類中的自定義屬性&#xff0c;如何通過樣式表來賦值除了QT自帶的屬性&#xff0c;我們自定義的類中如果有自定義的靜態屬性&#xff0c;也可以支持樣式表&#xff0c;如下 &#xff1a; Q_PROPERTY(QColor myBorderColor READ getMyBorderColor WRITE s…

RDQS_c和RDQS_t的作用及區別

&#x1f501; LPDDR5 中的 RDQS_t 和 RDQS_c — 復用機制詳解 &#x1f4cc; 基本角色 引腳名 讀操作&#xff08;READ&#xff09;作用 寫操作&#xff08;WRITE&#xff09;作用&#xff08;當啟用Link ECC&#xff09; RDQS_t Read DQS True&#xff1a;與 RDQS_c…

測試分類:詳解各類測試方式與方法

前言&#xff1a;為什么要將測試進行分類呢&#xff1f;軟件測試是軟件生命周期中的?個重要環節&#xff0c;具有較高的復雜性&#xff0c;對于軟件測試&#xff0c;可以從不同的角度加以分類&#xff0c;使開發者在軟件開發過程中的不同層次、不同階段對測試工作進行更好的執…

新手docker安裝踩坑記錄

最近在學習docker&#xff0c;安裝和使用折騰了好久&#xff0c;在這里記錄一下。下載# 依賴安裝 sudo apt update sudo apt install -y \ca-certificates \curl \gnupg \lsb-release# 使用清華鏡像源&#xff08;Ubuntu 24.04 noble&#xff09; echo \"deb [arch$(dpkg …

TOGAF指南1

1.TOGAF標準簡介 TOGAF&#xff08;The Open Group Architecture Framework&#xff09;就像是一個企業架構的“操作手冊”。它幫助企業設計、搭建和維護自己的“系統地圖”&#xff0c;確保不同部門、技術、業務目標能像齒輪一樣協調運轉。 它的核心是&#xff1a; 用迭代的方…

[Linux入門] Linux 防火墻技術入門:從 iptables 到 nftables

目錄 一、防火墻基礎&#xff1a;netfilter 與 iptables 的關系 1??什么是 netfilter&#xff1f; 2??什么是 iptables&#xff1f; 二、iptables 核心&#xff1a;五鏈四表與規則體系 1??什么是 “鏈”&#xff08;Chain&#xff09;&#xff1f; 2?? 什么是 “…

函數fdopendir的用法

以下是關于 fdopendir 函數的詳細解析&#xff0c;結合其核心功能、參數說明及典型應用場景&#xff1a;&#x1f50d; ?一、函數功能與原型??核心作用?將已打開的目錄文件描述符&#xff08;fd&#xff09;轉換為目錄流指針&#xff08;DIR*&#xff09;&#xff0c;用于后…

[源力覺醒 創作者計劃]_文心4.5開源測評:國產大模型的技術突破與多維度能力解析

聲明&#xff1a;文章為本人真實測評博客&#xff0c;非廣告&#xff0c;并沒有推廣該平臺 &#xff0c;為用戶體驗文章 一起來輕松玩轉文心大模型吧&#x1f449; 文心大模型免費下載地址 一、引言&#xff1a;文心4.5開源——開啟多模態大模型新時代 2025年6月30日&#x…