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

@RequestMapping 如何使用@PathVariable 從URI中獲取參數(shù)

 更新時(shí)間:2021年08月23日 08:42:29   作者:梅川酷紫  
這篇文章主要介紹了@RequestMapping 如何使用@PathVariable 從URI中獲取參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@RequestMapping 使用@PathVariable 從URI中獲取參數(shù)

URI中的請(qǐng)求參數(shù)定義URL變量規(guī)則獲取URI變量定義多個(gè)URL變量匹配正則表達(dá)式

URI中的請(qǐng)求參數(shù)

在Web應(yīng)用中URL通常不是一成不變的,例如微博兩個(gè)不同用戶的個(gè)人主頁對(duì)應(yīng)兩個(gè)不同的URL:

http://weibo.com/user1,http://weibo.com/user2

我們不能對(duì)于每一個(gè)用戶都編寫一個(gè)被@RequestMapping注解的方法來處理其請(qǐng)求。

對(duì)于相同模式的URL(例如不同用戶的主頁,它們僅僅是URL中的某一部分不同,為他們各自的用戶名,我們說它們具有相同的模式)。

定義URL變量規(guī)則

可以在 @RequestMapping注解中用{}來表明它的變量部分,例如:

@RequestMapping("/users/{username}")

這里{username}就是我們定義的變量規(guī)則,username是變量的名字,那么這個(gè)URI路由可以匹配下列任意URI并進(jìn)行處理:

/users/tianmaying
/users/ricky
/users/tmy1234

需要注意的是,在默認(rèn)情況下,變量中不可以包含URL的分隔符/,例如路由不能匹配/users/tianmaying/ricky,即使你認(rèn)為tianmaying/ricky是一個(gè)存在的用戶名。

獲取URI變量

在路由中定義變量規(guī)則后,通常我們需要在處理方法(也就是@RequestMapping注解的方法)中獲取這個(gè)URL的具體值,并根據(jù)這個(gè)值(例如用戶名)做相應(yīng)的操作,SpringMVC提供的@PathVariable可以幫助我們:

@ResponseBody
@RequestMapping("/users/{username}")
public String userProfile(@PathVariable("username") String username){
     return "user" + username; 
}

運(yùn)行結(jié)果:

在這里插入圖片描述

定義多個(gè)URL變量

可以定義URI路由,其中包含多個(gè)URI變量:

@ResponseBody
@RequestMapping("/user/{username}/blog/{blogId}")
public String getUerBlog(@PathVariable String username , @PathVariable int blogId) {
    return "user: " + username + "blog->" + blogId;
}

這種情況下,Spring能夠根據(jù)名字自動(dòng)賦值對(duì)應(yīng)的函數(shù)參數(shù)值,當(dāng)然也可以在@PathVariable中顯示地表明具體的URL變量值。

在默認(rèn)情況下,@PathVariable注解的參數(shù)可以是一些基本的簡單類型:int,long,Date,String等,Spring能根據(jù)URL變量的具體值以及函數(shù)參數(shù)的類型來進(jìn)行轉(zhuǎn)換,例如/user/fpc/blog/1,會(huì)將fpc的值賦給username,而1賦值給int變量blogId。

運(yùn)行結(jié)果:

在這里插入圖片描述

匹配正則表達(dá)式

很多時(shí)候,需要對(duì)URL變量進(jìn)行更加精確的定義,例如-用戶名只可能包含小寫字母,數(shù)字,下劃線,我們希望:

/user/fpc是一個(gè)合法的URL

/user/#$$$則不是一個(gè)合法的URL

除了簡單地定義{username}變量,還可以定義正則表達(dá)式進(jìn)行更精確的控制,定義語法是{變量名:正則表達(dá)式}[a-zA-Z0-9_]+是一個(gè)正則表達(dá)式,表示只能包含小寫字母,大寫字母,數(shù)字,下劃線。如此設(shè)置URL變量規(guī)則后,不合法的URL則不會(huì)被處理,直接由SpringMVC框架返回404 Not Found。

@RequestMapping("/user/{username:[a-zA-Z0-9_]+}/blog/{blogId}")

SpringMVC使用@PathVariable,參數(shù)接收使用基本類型

使用MVC時(shí),總是出現(xiàn)一些問題,當(dāng)然都是使用造成的。

今天遇到一個(gè)問題,使用@PathVariable接收路徑傳遞來的參數(shù),可是訪問時(shí)總是給500錯(cuò)誤。

網(wǎng)上查了一下,有人說是不能帶點(diǎn)符號(hào),最后確定不是這個(gè)問題。

最后看到一個(gè)人說,使用@PathVariable時(shí),參數(shù)接收要使用基本類型,比如我的代碼:

@RequestMapping("/{reqKey}/req.do")
@ResponseBody
public ResponseEntity<String> ordersBack(
  @PathVariable String reqKey,
  @RequestParam(value="intVal") Integer intVal,
  @RequestParam(value="strVal") String strVal) throws Exception{
 return new ResponseEntity("ok", HttpStatus.OK);
}

這里面的intVal 我寫成了int,現(xiàn)在改為Integer就可以了。

這里你給 required=false 是不行的,因?yàn)槿绻悴恍枰?,這里Spring會(huì)給一個(gè)Null默認(rèn)值,而你的類型如果是int,那肯定會(huì)出錯(cuò)。

你也可以使用defaultValue,這樣Spring就不會(huì)去注入Null值,一樣也不會(huì)出錯(cuò)。

綜上,使用@PathVariable時(shí)注意兩點(diǎn):

1:參數(shù)接收類型使用基本類型

2:不用基本類型時(shí),給defaultValue值

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

相關(guān)文章

  • Java嵌套for循環(huán)的幾種常見優(yōu)化方案

    Java嵌套for循環(huán)的幾種常見優(yōu)化方案

    這篇文章主要給大家介紹了關(guān)于Java嵌套for循環(huán)的幾種常見優(yōu)化,在Java中優(yōu)化嵌套for循環(huán)可以通過以下幾種方式來提高性能和效率,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Java實(shí)現(xiàn)FTP上傳到服務(wù)器

    Java實(shí)現(xiàn)FTP上傳到服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)FTP上傳到服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 通過Java計(jì)算文件的MD5值實(shí)現(xiàn)方式

    通過Java計(jì)算文件的MD5值實(shí)現(xiàn)方式

    本文將詳細(xì)介紹如何使用Java語言來計(jì)算文件的MD5值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • java使用lambda表達(dá)式對(duì)List集合進(jìn)行操作技巧(JDK1.8)

    java使用lambda表達(dá)式對(duì)List集合進(jìn)行操作技巧(JDK1.8)

    這篇文章主要介紹了java使用lambda表達(dá)式對(duì)List集合進(jìn)行操作技巧適用jdk1.8,感興趣的朋友跟著小編一起看看實(shí)現(xiàn)代碼吧
    2018-06-06
  • Spring-Boot 集成Solr客戶端的詳細(xì)步驟

    Spring-Boot 集成Solr客戶端的詳細(xì)步驟

    本篇文章主要介紹了Spring-Boot 集成Solr客戶端的詳細(xì)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java throw和throws使用區(qū)別分析

    Java throw和throws使用區(qū)別分析

    這篇文章主要介紹了Java throw和throws使用區(qū)別分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java基礎(chǔ)之FileInputStream和FileOutputStream流詳解

    Java基礎(chǔ)之FileInputStream和FileOutputStream流詳解

    這篇文章主要介紹了Java基礎(chǔ)之FileInputStream和FileOutputStream流詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Spring Boot構(gòu)建框架詳解

    Spring Boot構(gòu)建框架詳解

    這篇文章主要為大家詳細(xì)介紹了Spring Boot構(gòu)建框架的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token)

    ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token)

    這篇文章主要介紹了ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • AsyncHttpClient exception異常源碼流程解析

    AsyncHttpClient exception異常源碼流程解析

    這篇文章主要為大家介紹了AsyncHttpClient的exception源碼流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論

璧山县| 郓城县| 德昌县| 石景山区| 如东县| 肥乡县| 昌宁县| 竹溪县| 十堰市| 西盟| 江口县| 黑山县| 丰顺县| 云林县| 莒南县| 崇明县| 重庆市| 方城县| 沿河| 常熟市| 金川县| 朔州市| 洪湖市| 博兴县| 池州市| 房产| 奇台县| 文登市| 通化市| 黑山县| 阜新市| 塘沽区| 永昌县| 江永县| 东山县| 七台河市| 丹东市| 台南市| 云阳县| 扶余县| 安龙县|