註解 RequestParam方法原理解析

2021-10-08 20:43:53 字數 1818 閱讀 5921

我從做cs轉到bs,經常使用@requestparam這個註解,那麼@requestparam的原理到底是什麼呢?

文中對該註解進行原理解析,需要的可以參照一下文中解釋 。

該註解的作用在方法傳遞的引數前,用於接收所傳引數,適用於get請求。

例如:

可以用來接收問號後面的引數值(允許多個引數)

postman中是這樣子的。

指定傳入的引數名稱,其後面跟的引數名稱一定要與前端傳入的引數名稱一致。

2.2 value

指定傳入的引數名稱,其後面跟的引數名稱一定要與前端傳入的引數名稱一致。

2.3 required

指定引數是否是必傳引數,如果不指定,預設為true。

2.4 defaultvalue

指定引數的預設值。

注意:其中name和value屬性的作用等同的.其原始碼中name的別名就是value,value的別名就是name 。

2.5 參見@requestparam原始碼

@target()

@retention

(retentionpolicy.runtime)

@documented

public @inte***ce

requestparam

3.1 @requestparam可以解決前後端定義的引數名不一致的問題

例如前端傳入的引數名是name,後端方法接收的引數名是username,這時可以通過@requestparam指定value的值為name,實現name與username的對映。

(method = requestmethod.get, value =

"selectcourseandteacherbystudent"

)public course selectcourseandcoursebystudent

(@requestparam

(value =

"name"

) string username)

3.2 如果後端使用的是基本資料型別來接收引數,那麼一定要設定required=false,並且要設定乙個預設值

(method = requestmethod.get,value =

"selectstudentbyid"

)public student selectstudentbyid

(@requestparam

(value =

"id"

,required =

false

,defaultvalue =

"01"

)int id)

因為考慮到前端沒有傳值的情況,如果此時僅僅設定了required=false,會報500錯誤(下圖異常)因為基本資料型別無法接收null,

3.3 如果後端使用的是引用資料型別,則無需設定required=false和defaultvalue

因為即使前端沒有傳入引數值,引用資料型別是可以接收null的。

(method = requestmethod.get,value =

"selectstudentbyid"

)public student selectstudentbyid

(@requestparam

(value =

"id"

) integer id)

建議使用這種方式來寫。

Spring註解 RequestParam全面解析

1 可以對傳入引數指定引數名 requestparam string inputstr 下面的對傳入引數指定為aa,如果前端不傳aa引數名,會報錯2 下面的對傳入引數指定為aa,如果前端不傳aa引數名,會報錯 requestparam value aa string inputstr3 reques...

RequestParam註解使用

1 作用 requestparam 將請求引數繫結到你控制器的方法引數上 是springmvc中接收普通引數的註解 2 語法 語法 requestparam value 引數名 required true false defaultvalue value 引數名 required 是否包含該引數,預...

RequestParam註解使用

當前端請求方式為 x www form urlencoded 後端怎樣接收呢?第一種場景 當前端傳遞的引數和後端定義接收的變數一致 例如 前端 username 後端接收定義的變數username 後端接收方式 restcontroller slf4j public class usercontro...