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

