91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

@RequestMapping怎么使用@PathVariable從URI中獲取參數

發布時間:2021-08-23 10:11:16 來源:億速云 閱讀:240 作者:小新 欄目:開發技術

這篇文章主要介紹了@RequestMapping怎么使用@PathVariable從URI中獲取參數,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

@RequestMapping 使用@PathVariable 從URI中獲取參數

URI中的請求參數定義URL變量規則獲取URI變量定義多個URL變量匹配正則表達式

URI中的請求參數

在Web應用中URL通常不是一成不變的,例如微博兩個不同用戶的個人主頁對應兩個不同的URL:

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

我們不能對于每一個用戶都編寫一個被@RequestMapping注解的方法來處理其請求。

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

定義URL變量規則

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

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

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

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

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

獲取URI變量

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

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

運行結果:

@RequestMapping怎么使用@PathVariable從URI中獲取參數

定義多個URL變量

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

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

這種情況下,Spring能夠根據名字自動賦值對應的函數參數值,當然也可以在@PathVariable中顯示地表明具體的URL變量值。

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

運行結果:

@RequestMapping怎么使用@PathVariable從URI中獲取參數

匹配正則表達式

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

/user/fpc是一個合法的URL

/user/#$$$則不是一個合法的URL

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

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

SpringMVC使用@PathVariable,參數接收使用基本類型

使用MVC時,總是出現一些問題,當然都是使用造成的。

今天遇到一個問題,使用@PathVariable接收路徑傳遞來的參數,可是訪問時總是給500錯誤。

網上查了一下,有人說是不能帶點符號,最后確定不是這個問題。

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

@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,現在改為Integer就可以了。

這里你給 required=false 是不行的,因為如果你不需要,這里Spring會給一個Null默認值,而你的類型如果是int,那肯定會出錯。

你也可以使用defaultValue,這樣Spring就不會去注入Null值,一樣也不會出錯。

綜上,使用@PathVariable時注意兩點:

1:參數接收類型使用基本類型

2:不用基本類型時,給defaultValue值

感謝你能夠認真閱讀完這篇文章,希望小編分享的“@RequestMapping怎么使用@PathVariable從URI中獲取參數”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福州市| 通海县| 罗山县| 溧水县| 德安县| 青浦区| 吴忠市| 永平县| 正阳县| 邢台市| 吐鲁番市| 昭通市| 营口市| 兰坪| 根河市| 康定县| 铁力市| 西畴县| 饶阳县| 浠水县| 准格尔旗| 阳东县| 宜宾市| 巴楚县| 朔州市| 密山市| 建平县| 将乐县| 山西省| 泽普县| 高青县| 左云县| 定结县| 宁化县| 米脂县| 鹤山市| 阿尔山市| 康马县| 阜新市| 库尔勒市| 新乡市|