最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

方法參數(shù)屬性params,@PathVariable和@RequestParam用法及區(qū)別

 更新時間:2022年10月24日 14:17:06   作者:流煙默  
這篇文章主要介紹了方法參數(shù)屬性params,@PathVariable和@RequestParam用法及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

【1】params

您可以根據(jù)請求參數(shù)條件縮小請求映射范圍。

您可以測試是否存在請求參數(shù)(myParam),是否缺少一個(!myParam),或針對特定值(myParam=myValue)。

以下示例顯示了如何測試特定值:

@GetMapping(path = "/pets/{petId}", params = "myParam=myValue")?
public void findPet(@PathVariable String petId) {
? ? // ...
}

您還可以將其用于請求頭條件,如下例所示:

@GetMapping(path = "/pets", headers = "myHeader=myValue")?
public void findPet(@PathVariable String petId) {
? ? // ...
}

簡而言之,params是指定request中必須包含某些參數(shù)值時,才讓該方法處理。

@RequestMapping(value = "testParamsAndHeaders", params = { "username","age!=10" })
public String testParamsAndHeaders() {
? ? System.out.println("testParamsAndHeaders");
? ? return SUCCESS;
}

params 只是判斷url 或者 form data 中的參數(shù)是否復(fù)合params的定義,并不會直接綁定數(shù)據(jù)到方法的參數(shù)中,起到一個請求過濾作用。

【2】@PathVariable綁定URL中變量

綁定路徑中的占位符參數(shù)到方法參數(shù)變量中,只能綁定路徑中的占位符參數(shù),且路徑中必須有參數(shù)。無論是 GET 或者POST 只要 URL中有參數(shù)即可!

① 前臺實例

  • GET實例
Request URL:http://localhost:8080/SpringMVC-1/springmvc/testPathVariable/1
  • POST 實例
<form action="springmvc/testPathVariable/1" method="POST">
?? ?<input type="text" name="username" value=""/>
?? ?<input type="text" name="age" value=""/>
?? ?<input type="text" name="sex" value=""/>
?? ?<input type="submit" value="submit"/>
</form>

【注意】如果URL中無參數(shù),將會出錯;如果URL有參數(shù),但是沒有使用@PathVariabl該注解,那么URL的參數(shù)不會默認與方法參數(shù)綁定!方法里的參數(shù)會默認綁定表單里面對應(yīng)的參數(shù)!

② 后臺代碼

如果參數(shù)名與占位符一致,則可直接使用@PathVariable。如果不一致,則在@PathVariable( )括號內(nèi)綁定占位符。

@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id2) {
?? ?System.out.println("testPathVariable: " + id2);
?? ?return SUCCESS;
}

③ 注解源碼

@PathVariable 注解指示方法參數(shù)應(yīng)綁定到URI模板變量。支持@RequestMapping注解的處理程序方法。

如果方法參數(shù)類型為java.util.Map Map<String,String>,該方法參數(shù)將會被所有路徑變量name-value填充。

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PathVariable {
?? ?@AliasFor("name")
?? ?String value() default "";
?? ? //路徑變量綁定的名稱
?? ?@AliasFor("value")
?? ?String name() default "";
?? ?
?? ? //路徑變量是否必須。默認為true,當(dāng)路徑變量不存在時拋出異常。
?? ? //如果當(dāng)路徑變量不存在時,你傾向賦予null或者Java 8的Optional,請設(shè)置為false,
?? ? //例如,在一個@ModelAttribute注解的方法處理不同的請求時。
?? ?boolean required() default true;

【3】@RequestParam

@RequestParam注解指示方法參數(shù)應(yīng)綁定web請求參數(shù)。

Spring MVC和Spring WebFlux中的注解處理程序方法支持如下:

在SpringMVC中,“request parameters”映射查詢參數(shù)、表單數(shù)據(jù)和multipart requests中的參數(shù)。這是因為ServletAPI將查詢參數(shù)和表單數(shù)據(jù)組合到一個a single map called "parameters",其中包括請求body的自動解析。

在Spring WebFlux中,“request parameters”只映射到查詢參數(shù)。要在三部分起作用(query parameters, form data,and parts in multipart requests),可以使用數(shù)據(jù)綁定到用@ModelAttribute注解的命令對象。

如果方法參數(shù)類型為Map,并且指定了請求參數(shù)名稱,則假設(shè)有適當(dāng)?shù)霓D(zhuǎn)換器可用,則請求參數(shù)值將轉(zhuǎn)換為Map。

如果方法參數(shù)為java.util.Map Map<String,String>或org.springframework.util.MultiValueMap MultiValueMap<String,String>,如果未指定參數(shù)名,則方法參數(shù)Map會被所有的請求參數(shù)名-值填充。

① 注解源碼

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
?? ?@AliasFor("name")
?? ?String value() default "";
?? ?//請求參數(shù)要綁定的名稱
?? ?@AliasFor("value")
?? ?String name() default "";
/
?? ? //請求參數(shù)是否必須,默認為true。如果參數(shù)不存在,則拋出異常。
?? ? //你可以選擇設(shè)置為false或者給予默認值。
?? ?boolean required() default true;
?? ? //當(dāng)請求參數(shù)不存在或為空時,使用默認值。提供一個默認值將會隱形設(shè)置required屬性為false。
?? ?String defaultValue() default ValueConstants.DEFAULT_NONE;
}

② 前臺請求實例

  • GET
<a href="springmvc/testRequestParam?userName=tom&age=11&sex=boy" rel="external nofollow" >
  • POST
<form action="springmvc/testRequestParam" method="POST">
?? ?<input type="text" name="userName" value=""/>
?? ?<input type="text" name="age" value=""/>
?? ?<input type="text" name="sex" value=""/>
?? ?<input type="submit" value="submit"/>
</form>

注意 :

  • GET中的參數(shù)形式為:username=tom&age=11&sex=boy
  • POST中的參數(shù)形式為:以鍵值對形式保存在form data

③ 后臺代碼

@RequestMapping(value="/regist",produces="application/json;charset=utf-8")
@ResponseBody
public String regist(SysUser sysUser , @RequestParam(required=true,name="sex") String sex){
?? ?String userName = sysUser.getUserName();
?? ?String age = sysUser.getAge();
?? ?//...
?? ?return "regist success";
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis select記錄封裝的實現(xiàn)

    Mybatis select記錄封裝的實現(xiàn)

    這篇文章主要介紹了Mybatis select記錄封裝的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • MyBatis通過代碼配置+XML文件構(gòu)建SqlSessionFactory實踐

    MyBatis通過代碼配置+XML文件構(gòu)建SqlSessionFactory實踐

    本文介紹了在構(gòu)建SqlSessionFactory時,如何在代碼中動態(tài)獲取數(shù)據(jù)庫連接參數(shù),并在XML文件中配置映射文件信息,通過示例代碼,展示了如何在Java和XML文件中實現(xiàn)這些功能,運行結(jié)果總結(jié)了整個過程的實現(xiàn)效果
    2026-01-01
  • Java 對 Properties 文件的操作詳解及簡單實例

    Java 對 Properties 文件的操作詳解及簡單實例

    這篇文章主要介紹了Java 對 Properties 文件的操作詳解及簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • SpringBoot集成Mybatis過程步驟圖解

    SpringBoot集成Mybatis過程步驟圖解

    這篇文章主要介紹了SpringBoot集成Mybatis過程步驟圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Java實現(xiàn)拆箱和裝箱的原理解析

    Java實現(xiàn)拆箱和裝箱的原理解析

    Java 是一種強類型語言,然而在 Java中Integer類型和 int類型兩種不同類型的數(shù)字卻能正常地進行數(shù)學(xué)運算,為什么?今天我們就來聊聊其背后的秘密:拆箱和裝箱,感興趣的小伙伴跟著小編一起來看看吧
    2024-05-05
  • Java接口繼承和使用接口操作示例

    Java接口繼承和使用接口操作示例

    這篇文章主要介紹了Java接口繼承和使用接口操作,結(jié)合具體實例形式分析了Java接口繼承與使用的相關(guān)原理、操作技巧與注意事項,需要的朋友可以參考下
    2019-09-09
  • Java如果在try里面執(zhí)行return還會不會執(zhí)行finally

    Java如果在try里面執(zhí)行return還會不會執(zhí)行finally

    這篇文章主要介紹了Java如果在try里面執(zhí)行return,那么還會不會執(zhí)行finally,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Spring Boot 多環(huán)境配置Maven Profile vs 啟動參數(shù)注入深入解析

    Spring Boot 多環(huán)境配置Maven Profile vs 啟

    本文介紹了在Java項目開發(fā)和部署中使用多環(huán)境配置的方法,比較了兩種主要方式:MavenProfile方式和啟動參數(shù)方式,結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • java通過方法來交換實參的值實現(xiàn)方式

    java通過方法來交換實參的值實現(xiàn)方式

    文章介紹了Java方法參數(shù)傳遞方式以及如何通過數(shù)組、自定義包裝類或返回結(jié)果來實現(xiàn)變量交換,同時,討論了內(nèi)部類中static關(guān)鍵字的作用和使用場景
    2025-12-12
  • Java中如何實現(xiàn)不可變Map詳解

    Java中如何實現(xiàn)不可變Map詳解

    這篇文章主要給大家介紹了關(guān)于Java中如何實現(xiàn)不可變Map的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作工具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12

最新評論

宜兴市| 琼中| 弥渡县| 治县。| 满洲里市| 陕西省| 若尔盖县| 商都县| 美姑县| 阳曲县| 达孜县| 汪清县| 古田县| 孟津县| 五原县| 邢台县| 枞阳县| 遂川县| 光山县| 亚东县| 台南县| 卢龙县| 乌拉特前旗| 环江| 郓城县| 大名县| 八宿县| 临湘市| 昌都县| 德格县| 孝感市| 文登市| 西林县| 钟山县| 多伦县| 南部县| 阿拉善左旗| 永新县| 留坝县| 时尚| 资源县|