SpringMVC 注解詳解

SpringMVC 注解詳解

1. 引言

SpringMVC 是 Spring 框架中的 Web 層解決方案,它通過注解的方式來簡化 MVC 模式的實現。本篇將詳細介紹 SpringMVC 中常用的注解及其用法。

2. SpringMVC 注解分類

SpringMVC 的注解主要分為以下幾類:

2.1 核心注解

  • @Controller:用于標識是一個控制器。
  • @RestController:組合注解,等同于 @Controller + @ResponseBody,用于標識 RESTful Web Services。
  • @RequestMapping:用于將 HTTP 請求映射到對應的方法上。

2.2 數據綁定注解

  • @RequestParam:用于將請求參數與控制器方法的參數進行綁定。
  • @PathVariable:用于將 URI 模板變量與控制器方法的參數進行綁定。
  • @RequestBody:用于讀取 Http 請求的正文,將其綁定到相應的 bean 上。
  • @ResponseBody:表示該方法的返回結果直接作為 Web 響應正文返回,用于異步請求處理。

2.3 其他注解

  • @ModelAttribute:用于將請求參數與模型對象進行綁定。
  • @CookieValue:用于將 Cookie 與控制器方法的參數進行綁定。
  • @RequestHeader:用于將 Http 請求頭與控制器方法的參數進行綁定。

3. 核心注解詳解

3.1 @Controller

@Controller 注解是 SpringMVC 中最基本的注解之一,它用于聲明一個類為 SpringMVC 控制器,通常包含處理請求的方法。

@Controller
public class MyController {// ...
}

3.2 @RestController

@RestController@Controller@ResponseBody 的組合,用于創建 RESTful Web Services。

@RestController
public class MyRestController {// ...
}

3.3 @RequestMapping

@RequestMapping 用于將 URL 路徑與控制器中的方法進行映射。

@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String sayHello() {return "Hello, World!";
}

4. 數據綁定注解詳解

4.1 @RequestParam

@RequestParam 用于將請求參數與控制器方法的參數進行綁定。

@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@RequestParam("id") int id) {// ...
}

4.2 @PathVariable

@PathVariable 用于將 URI 模板變量與控制器方法的參數進行綁定。

@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String getUserById(@PathVariable int id) {// ...
}

4.3 @RequestBody

@RequestBody 用于讀取 Http 請求的正文,將其綁定到相應的 bean 上。

@PostMapping("/user")
public UserResponse createUser(@RequestBody UserRequest userRequest) {// ...
}

4.4 @ResponseBody

@ResponseBody 表示該方法的返回結果直接作為 Web 響應正文返回。

@Controller
public class MyController {@ResponseBody@RequestMapping(value = "/hello", method = RequestMethod.GET)public String sayHello() {return "Hello, World!";}
}

5. 其他注解詳解

5.1 @ModelAttribute

@ModelAttribute 用于將請求參數與模型對象進行綁定。

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@ModelAttribute("data") MyData data) {// ...
}

5.2 @CookieValue

@CookieValue 用于將 Cookie 與控制器方法的參數進行綁定。

@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@CookieValue("JSESSIONID") String cookie) {// ...
}

5.3 @RequestHeader

@RequestHeader 用于將 Http 請求頭與控制器方法的參數進行綁定。

@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@RequestHeader("Authorization") String authorization) {// ...
}

SpringMVC 的注解極大地簡化了 Web 應用程序的開發過程,通過上述注解的靈活使用,開發者可以快速構建出功能強大且易于維護的 Web 應用。理解并掌握這些注解對于使用 SpringMVC 至關重要。

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

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

相關文章

用sunoAI寫粵語歌的方法,博主已經親自實踐可行

粵語歌還是很好聽的,那么如何使用suno進行粵語歌的創作呢? 本文和大家進行分享下如何進行粵語歌曲的創作。 訪問地址如下(電腦端/手機端一個地址): ?https://suno3.cn/#/?i8NCBS8_WXTT 在微信瀏覽器中也可以直接…

css 案例 橫向滾動漸變

效果 完整代碼&#xff1a; <template><view class"content"><view class"tab"><view class"tab-item" v-for"(item,index) in tab" :key"index" click"handlerTab(index)":class"ind…

winserver系統設置圖片查看器

新建 .bat 批處理執行文件&#xff0c;內容如下&#xff1a; echo off&cd&color 0a&cls echo Set Win10 Photo Viewer reg add "HKLM\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations" /v ".jpg" /t REG_SZ /d Photo…

MySQL——利用變量進行查詢操作

新建鏈接&#xff0c;自帶world數據庫&#xff0c;里面自帶city表格。 DQL # MySQL利用變量進行查詢操作 set cityNameHaarlemmermeer; select * from city where NamecityName;# 多個結果查詢 set cityName1Haarlemmermeer; set cityName2Breda; set cityName3Willemstad; s…

Mysql--期末復習

目錄 一.變量 1.系統變量 global session 2.用戶自定義變量 3.局部變量 二.觸發器 1.pysx函數(銷售)拼音縮寫觸發器 2.goods維護(存儲過程) 3.xkglxt 4.訂單延期 一.變量 1.系統變量 global session 2.用戶自定義變量 1.不用提前聲明&#xff0c;使用時直接 變量…

古月居講師/簽約作者招募計劃

機器人&#xff0c;作為一個集成了多學科技術的復雜系統&#xff0c;其開發過程充滿了挑戰。為了幫助開發者們更好地克服這些挑戰&#xff0c;提升項目的開發效率和質量&#xff0c;古月居特別招募[博客簽約作者/課程講師]。如果您平常熱愛記錄、分享開發者經驗的習慣&#xff…

Emby for Mac(輕松管理多媒體影音庫)1.9.9中文版

Emby for Mac是一款強大的多媒體影音庫管理工具&#xff0c;可以幫助用戶輕松管理和瀏覽自己的影音資源。它可以將用戶的個人視頻、音樂和照片組合在一起&#xff0c;并將其流式傳輸到用戶的設備上。 Emby for Mac 1.9.9中文版下載 Emby for Mac具有易于使用的界面&#xff0c;…

分布式與一致性協議之PBFT算法

在分布式系統中&#xff0c;數據的一致性是一個至關重要的問題。為了保證分布式系統中節點之間的數據一致性&#xff0c;人們提出了許多一致性協議和算法。 其中&#xff0c;PBFT&#xff08;Practical Byzantine Fault Tolerance&#xff0c;實用拜占庭容錯&#xff09;算法是…

content-type之multipart/form-data和application/json比較

multipart/form-data 知識點: 用途: 主要用于文件上傳以及包含非ASCII字符或二進制數據的表單數據提交。它將表單數據分割成多個部分&#xff0c;每個部分前都有一個boundary字符串作為分隔&#xff0c;可以包含文本字段和文件字段。結構: 包含了Content-Disposition頭部&…

機器學習案例:加州房產價格(四)

參考鏈接&#xff1a;https://hands1ml.apachecn.org/2/#_12 數據探索和可視化、發現規律 通過之前的工作&#xff0c;你只是快速查看了數據&#xff0c;對要處理的數據有了整體了解&#xff0c;現在的目標是更深的探索數據。 首先&#xff0c;保證你將測試集放在了一旁&…

【Docker系列】Linux部署Docker Compose

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

RestTemplate接口請求發送json、form數據格式以及處理接口錯誤狀態碼400 null

在使用RestTemplate發送HTTP請求時&#xff0c;你可以通過不同的方式發送JSON或表單數據&#xff08;application/x-www-form-urlencoded&#xff09;。同時&#xff0c;處理接口錯誤狀態碼&#xff08;如400&#xff09;和返回null的情況也是很重要的。以下是一些示例代碼&…

山東濟南中國當代文化名人顏廷利:大自然賦予人類眾生的真正貴重禮物

大自然賦予了眾生---火&#xff08;太陽&#xff0c;萬物生長靠太陽&#xff09;、水&#xff08;河流&#xff0c;水是生命之源&#xff09;、木&#xff08;空氣&#xff0c;生命就在一翕一合的呼吸之間&#xff09;、土&#xff08;大地&#xff0c;坤為大地之母&#xff0c…

【Python】Python中類的__iter__()方法

在Python中&#xff0c;__iter__ 方法是一個特殊的方法&#xff0c;它用于定義一個對象的迭代器行為。這個方法是面向對象編程中實現可迭代對象&#xff08;即支持迭代的對象&#xff09;的一部分。當你創建一個類&#xff0c;并且希望其實例能夠在例如 for 循環中被迭代時&…

Hive-拉鏈表的設計與實現

Hive-拉鏈表的設計與實現 在Hive中&#xff0c;拉鏈表專門用于解決在數據倉庫中數據發生變化如何實現數據存儲的問題。 1.數據同步問題 Hive在實際工作中主要用于構建離線數據倉庫&#xff0c;定期的從各種數據源中同步采集數據到Hive中&#xff0c;經過分層轉換提供數據應用…

MYSQL 存儲過程 函數

ddldml ? CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 學號,createDate datetime DEFAULT NULL,userName varchar(20) DEFAULT NULL,pwd varchar(36) DEFAULT NULL,phone varchar(11) DEFAULT NULL,age tinyint(3) unsigned DEFAULT NULL,sex char(2)…

【JAVA SE】初識JAVA

??歡迎大家來到Celia的博客?? &#x1f389;&#x1f389;創作不易&#xff0c;請點贊關注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所屬專欄&#xff1a;JAVA 個人主頁&#xff1a;Celias blog~ 目錄 ?編輯 一、關于JAVA 1.1 JAVA語言簡介 1.2 語言優勢 1…

鏈表常見OJ題

目錄 題目一&#xff1a;移除鏈表元素 &#xff08;1&#xff09;題目鏈接 &#xff08;2&#xff09;題目要求 &#xff08;3&#xff09;題解 題目二&#xff1a;反轉鏈表 &#xff08;1&#xff09;題目鏈接 &#xff08;2&#xff09;題目要求?編輯 &#xff08;3…

藍橋杯備戰.19有獎問答dfs

P9230 [藍橋杯 2023 省 A] 填空問題 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) #include<bits/stdc.h> using namespace std; #define endl \n //#define int long long const int N 2e510; int a[N],w[N]; int ans 0; void dfs(int score,int cnt) {if(cnt>3…

項目9-網頁聊天室1(注冊+Bycrpt加密)

1.準備工作 1.1.前端頁面展示 1.2 數據庫的建立 我們通過注冊頁面&#xff0c;考慮如何設計用戶表數據庫。 用戶id&#xff0c;userId用戶名&#xff0c;唯一&#xff0c;username用戶密碼&#xff0c;password&#xff08;包括密碼和確認密碼ensurePssword【數據庫沒有該字段…