一文盤點Spring MVC中用于處理HTTP請求的常用注解
1.@RequestMapping
@RequestMapping?來注冊接?的路由映射,可以作用在類上,也可以作用在方法上,當(dāng)標(biāo)識?個類,設(shè)置映射請求的請求路徑的初始信息,當(dāng)標(biāo)識?個?法,設(shè)置映射請求請求路徑的具體信息。下面的代碼表?服務(wù)收到請求時, 路徑為 /hello 的請求就會調(diào)? hello 這個?法的代碼.
@RestController
public class UserController {
// 路由器規(guī)則注冊
@RequestMapping("/hello")
public String hello(){
return "hello,Spring boot";
}
}
@RequestMapping ?持 get 請求和 post 請求 ,可以通過 method 進行指定,
@RestController
public class UserController {
// 路由器規(guī)則注冊
@RequestMapping(value = "/hello",method= RequestMethod.POST)
public String hello(){
return "hello,Spring boot";
}
}
2.@RequestController
@RequestController是 Spring 中用來標(biāo)記控制器類的注解,標(biāo)注的類下的所有方法返回的數(shù)據(jù)直接寫入HTTP響應(yīng)體中,如下例子當(dāng)瀏覽器訪問 /hello 時,頁面直接顯示字符串Hello World,當(dāng)訪問 /user 時,Spring 會自動把 User 對象轉(zhuǎn)換成 JSON 返回{“name”:“張三”,“age”:25}
@RestController
public class TestController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
@RequestMapping("/user")
public User getUser() {
User user = new User("張三", 25);
return user; // 返回一個 Java 對象
}
}
3.@RequestParam
有時候,前端傳遞的參數(shù) key 和我們后端接收的 key 可以不?致,?如前端傳遞了?個 time 給后端,?后端是使? createtime 字段來接收的。此時可以通過@RequestParam來重命名前后端的參數(shù)值。
例如,前端發(fā)來請求 GET /user?id=123,此時會從請求中找名為 id 的參數(shù),把值賦給后面的 int userId 參數(shù)。
@RestController
public class UserController {
@RequestMapping("/user")
public String getUser(@RequestParam("id") int userId) {
return "用戶ID是:" + userId;
}
}
使? @RequestParam 進?參數(shù)重命名時, 參數(shù)就變成了必傳參數(shù),可以通過設(shè)置 @RequestParam 中的 required=false 來設(shè)置成非必傳
@RequestParam(value = "name", required = false) String userName
@RequestParam可以用來傳遞集合,默認情況下,請求中參數(shù)名相同的多個值,是封裝到數(shù)組. 如果要封裝到集合,要使?@RequestParam 綁定參數(shù)關(guān)系。
@RequestMapping("/test")
public String method6(@RequestParam List<String> listParam){
return "size:"+listParam.size() + ",listParam:"+listParam;
}
4.@RequestBody
@RequestBody是將 HTTP 請求體(Body)中的數(shù)據(jù)綁定到控制器方法參數(shù)的注解,當(dāng)前端通過 POST、PUT 等請求發(fā)送一段 JSON(或 XML)數(shù)據(jù)時,@RequestBody 能幫你把這段數(shù)據(jù)自動轉(zhuǎn)換成一個 Java 對象,方便后續(xù)的使用
{
"name": "張三",
"age": 25
}
@PostMapping("/user")
public String createUser(@RequestBody User user) {
System.out.println(user.getName()); // 輸出 "張三"
return "success";
}
5.@PathVariable
@PathVariable用來獲取 URL 路徑中的變量值的注解,例如使用瀏覽器發(fā)送請求 http://127.0.0.1:8080/param/m8/5/zhangsan,最終獲取到 id 為 5 ,userName 為 zhangsan
@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String
userName){
return "解析參數(shù)id:"+id+",name:"+userName;
}
同樣可以進行重命名操作,下面的例子表示獲取 @GetMapping(“/users/{id}”) 中 id 的值
@RestController
public class UserController {
@GetMapping("/users/{id}")
public String getUser(@PathVariable("id") int userId) {
return "用戶ID:" + userId;
}
}
6.@RequestPart
@RequestPart 用于處理 multipart/form-data 請求的注解。它可以把 multipart 請求中的某個特定部分(part)綁定到控制器方法的參數(shù)上,通常用于文件上傳
@RequestMapping("/m9")
public String getfile(@RequestPart("file") MultipartFile file) throws IOException {
//獲取?件名稱
String fileName = file.getOriginalFilename();
//?件上傳到指定路徑
file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));
return "接收到?件名稱為: "+fileName;
}
7.@CookieValue
@CookieValue把請求中某個 Cookie 的值直接綁定到控制器方法的參數(shù)上,下面的例子能夠指定獲取 Cookie 中鍵為 bite 的字段值
@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {
return "bite:" + bite;
}
8.@SessionAttribute
@SessionAttribute能從當(dāng)前 HTTP Session 中獲取某個屬性的值,綁定到方法參數(shù)上,下面的例子就是從Session中獲取屬性名為 "username"的一系列屬性,比如{id=1001, username=“zhangsan”}
@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
User username) {
return "username:"+user.getUsername();
}
@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
String username) {
return "username:"+ username;
}
到此這篇關(guān)于一文盤點Spring MVC中用于處理HTTP請求的常用注解的文章就介紹到這了,更多相關(guān)Spring MVC處理HTTP請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Java解決數(shù)組旋轉(zhuǎn)問題的方法詳解
給定一個包含n個整數(shù)的數(shù)組,要求將數(shù)組中的元素向前移動m個位置,即數(shù)組的前n-m個元素順序向后移動m個位置,最后m個元素移動到數(shù)組的最前面,本文給大家介紹了如何使用Java解決數(shù)組旋轉(zhuǎn)問題,需要的朋友可以參考下2026-03-03
詳解Spring Boot工程集成全局唯一ID生成器 UidGenerator的操作步驟
本文就在項目中來集成 UidGenerator這一工程來作為項目的全局唯一 ID生成器。接下來通過實例代碼給大家詳解詳解Spring Boot工程集成全局唯一ID生成器 UidGenerator的操作步驟,感興趣的朋友一起看看吧2018-10-10
springmvc使用REST出現(xiàn):Request?method?'PUT'?not?sup
這篇文章主要介紹了springmvc使用REST出現(xiàn):Request?method?'PUT'?not?supported問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Spring聲明式事務(wù)@Transactional注解實現(xiàn)元數(shù)據(jù)驅(qū)動的事務(wù)管理
這篇文章主要為大家介紹了Spring聲明式事務(wù)@Transactional注解實現(xiàn)元數(shù)據(jù)驅(qū)動的事務(wù)管理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
SpringCloud?Gateway讀取Request?Body方式
這篇文章主要介紹了SpringCloud?Gateway讀取Request?Body方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java中的使用及連接Redis數(shù)據(jù)庫(附源碼)
這篇文章主要介紹了Java中的使用及連接Redis數(shù)據(jù)庫(附源碼),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
SpringBoot Actuator未授權(quán)訪問漏洞的排查和解決方法
Spring Boot Actuator 是開發(fā)和管理生產(chǎn)級 Spring Boot 應(yīng)用程序的重要工具,它可以幫助你確保應(yīng)用程序的穩(wěn)定性和性能,本文給大家介紹了SpringBoot Actuator未授權(quán)訪問漏洞的排查和解決方法,需要的朋友可以參考下2024-05-05

