SpringMVC中的常用注解和用法舉例詳解
前言:
MVC是?種架構(gòu)設計模式,也?種思想,?SpringMVC是對MVC思想的具體實現(xiàn).除此之外,Spring MVC還是?個Web框架.
總結(jié)來說,Spring MVC是?個實現(xiàn)了MVC模式的We框架
1.@RequestMapping
@RequestMapping 是Spring Web MVC應?程序中最常被?到的注解之?,它是?來注冊接?的路由映射的
路由映射:當??訪問?個URL時,將??的請求對應到程序中某個類的某個?法的過程就叫路由映射
@RequestMapping既可修飾類,也可以修飾?法,當修飾類和?法時,訪問的地址是類路徑+?法路徑
@RequestMapping標識?個類:設置映射請求的請求路徑的初始信息
@RequestMapping標識?個?法:設置映射請求請求路徑的具體信息
@RequestMapping("/user") @RestController public class UserController { @RequestMapping("/sayHi") public String sayHi(){ return "hello,Spring MVC"; } }
訪問地址:http://127.0.0.1:8080/user/sayHi
@RequestMapping 的URL路徑也可以是多層路徑,最終訪問時,依然是類路徑+?法路徑
@RequestMapping("/user/m1") @RestController public class UserController { @RequestMapping("/say/hi") public String sayHi(){ return "hello,Spring MVC"; } }
訪問路徑:http://127.0.0.1:8080/user/m1/say/hi
2.@RequestParam
用于將請求參數(shù)綁定到方法參數(shù)上(后端參數(shù)重命名,傳遞集合等)
@Controller public class MyController { @RequestMapping("/greet") public String greet(@RequestParam("name") String name) { // Method logic using name parameter return "greetPage"; } }
使用@RequestParam 注解的方法參數(shù)默認為必填參數(shù)
可以使用 required 屬性將@RequestParam配置為可選參數(shù):
@Controller public class MyController { @RequestMapping("/greet") public String greet(@RequestParam(value = "name2", required = false) String name) { // Method logic using name parameter return "greetPage"; } }
3.@RequestBody
用于將 HTTP 請求體中的數(shù)據(jù)綁定到控制器方法的參數(shù)上,即獲取 POST 請求中的數(shù)據(jù)并映射到方法參數(shù)。它通常用于處理 JSON 或 XML 格式的請求體數(shù)據(jù)
@Controller @RequestMapping("/example") public class ExampleController { @RequestMapping(value = "/addUser", method = RequestMethod.POST) @ResponseBody public String addUser(@RequestBody User user) { // 處理用戶數(shù)據(jù) return "User added successfully!"; } }
在上述示例代碼中,@RequestBody 用于將 HTTP 請求體中的數(shù)據(jù)轉(zhuǎn)換成 User 對象,并將其作為參數(shù)傳遞給 addUser() 方法進行處理
4.@PathVariable
path variable:路徑變量
和字?表達的意思?樣,這個注解主要作?在請求URL路徑上的數(shù)據(jù)綁定,默認傳遞參數(shù)寫在URL上,SpringMVC就可以獲取到
@RequestMapping("/m8/{id}/{name}") public String method8(@PathVariable Integer id, @PathVariable("name") String userName){ return "解析參數(shù)id:"+id+",name:"+userName; }
使?瀏覽器發(fā)送請求:http://127.0.0.1:8080/param/m8/5/zhangsan
5.@RestController(返回頁面)
其方法的返回值會被直接寫入 HTTP 響應體中,而不是被視圖解析器解析為視圖。通常返回的是 JSON 或 XML 數(shù)據(jù)
@RestController @RequestMapping("/example") public class ExampleController { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { return "Hello, World!"; } }
6.@Controller(返回視圖)
在方法中直接返回對象時,Spring MVC 會將其作為模型數(shù)據(jù)傳遞給視圖解析器,然后解析為具體的視圖
@Controller public class MyController { @RequestMapping("/hello") public String hello() { return "hello.html"; } //返回html頁面 }
當在類注解中加上 @ResponseBody 時,返回的為數(shù)據(jù)而不是頁面
@RestController=@Controller (返回視圖)+ @ResponseBody(返回數(shù)據(jù))
@Controller public class MyController { @ResponseBody @RequestMapping("/hello") public String hello() { return "hello"; } //返回“hello”這個字符串 }
7.@CookieValue
簡潔獲取Cookie (一次只能獲取一次cookie信息)
@RequestMapping("/getCookie") public String cookie(@CookieValue("bite") String bite) { return "bite:" + bite; }
8.@SessionAttribute
@SessionAttributes 注解用于指定哪些模型屬性需要存儲在會話中
@RequestMapping("/getSess2") public String sess2(@SessionAttribute(value = "username",required = false) String username) { return "username:"+username; }
總結(jié)
到此這篇關(guān)于SpringMVC中常用注解和用法舉例詳解的文章就介紹到這了,更多相關(guān)SpringMVC常用注解用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java多線程編程之向線程傳遞數(shù)據(jù)的三種方法
在多線程的異步開發(fā)模式下,數(shù)據(jù)的傳遞和返回和同步開發(fā)模式有很大的區(qū)別。由于線程的運行和結(jié)束是不可預料的,因此,在傳遞和返回數(shù)據(jù)時就無法象函數(shù)一樣通過函數(shù)參數(shù)和return語句來返回數(shù)據(jù)2014-01-01淺談java對象轉(zhuǎn)json,數(shù)字精確出現(xiàn)丟失問題
下面小編就為大家?guī)硪黄獪\談java對象轉(zhuǎn)json, 數(shù)字精確出現(xiàn)丟失問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03Java直接內(nèi)存和堆內(nèi)存的關(guān)系
在Java編程中,內(nèi)存管理是一個重要的話題,本文介紹了Java中兩種主要內(nèi)存類型:堆內(nèi)存和直接內(nèi)存,堆內(nèi)存是JVM管理的主要內(nèi)存區(qū)域,感興趣的朋友跟隨小編一起看看吧2024-09-09JSP 開發(fā)之hibernate的hql查詢多對多查詢
這篇文章主要介紹了JSP 開發(fā)之hibernate的hql查詢多對多查詢的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09一文帶你掌握Java8中Lambda表達式 函數(shù)式接口及方法構(gòu)造器數(shù)組的引用
Java 8 (又稱為 jdk 1.8) 是 Java 語言開發(fā)的一個主要版本。 Oracle 公司于 2014 年 3 月 18 日發(fā)布 Java 8 ,它支持函數(shù)式編程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等2021-10-10Mybatis返回map集合時,列的順序與select不一致問題
這篇文章主要介紹了Mybatis返回map集合時,列的順序與select不一致問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01基于SpringBoot2的Shiro最簡配置操作(兩個文件)
這篇文章主要介紹了基于SpringBoot2的Shiro最簡配置操作(兩個文件),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01