javascript
SpringBoot-@PathVariable
URL變量
在上一個(gè)博客中,學(xué)習(xí)了如何在@Controller中創(chuàng)建@RequestMapping(或者響應(yīng)的簡(jiǎn)寫)來處理不同的URL請(qǐng)求。但是在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注解中用{}來表明它的變量部分,例如:
這里{username}就是我們定義的變量規(guī)則,username是變量的名字,那么這個(gè)URL路由可以匹配下列任意URL并進(jìn)行處理:
- /users/tianmaying
- /users/ricky
- users/tmy1234
需要注意的是,在默認(rèn)情況下,變量中不可以包含URL的分隔符/,例如路由不能匹配/users/tianmaying/ricky,即使你認(rèn)為tianmaying/ricky是一個(gè)存在的用戶名。
獲取URL變量
在路由中定義變量規(guī)則后,通常我們需要在處理方法(也就是@RequestMapping注解的方法)中獲取這個(gè)URL的具體值,并根據(jù)這個(gè)值(例如用戶名)做相應(yīng)的操作,SpringMVC提供的@PathVariable可以幫助我們:
在上述例子中,當(dāng)@Controller處理HTTP請(qǐng)求時(shí),userProfile的參數(shù)username會(huì)自動(dòng)設(shè)置為URL中對(duì)應(yīng)變量username(同名賦值)的值,例如當(dāng)HTTP請(qǐng)求為/users/fpc
,URL變量username的值fpc會(huì)被賦給函數(shù)參數(shù)username,函數(shù)的返回值自然是userfpc。
在默認(rèn)的情況下,Spring會(huì)對(duì)@PathVariable注解的變量進(jìn)行自動(dòng)賦值,當(dāng)然你也可以指定@PathVariable使用哪一個(gè)URL中的變量:
@RequestMapping("/users/{username}")@ResponseBodypublic String userProfile(@PathVariable("username") String username){ // return String.format("user %s", username);return "user" + username; }運(yùn)行結(jié)果:
定義多個(gè)URL變量
可以定義URL路由,其中包含多個(gè)URL變量:
這種情況下,Spring能夠根據(jù)名字自動(dòng)賦值對(duì)應(yīng)的函數(shù)參數(shù)值,當(dāng)然也可以在@PathVariable中顯示地表明具體的URL變量值。
在默認(rèn)情況下,@PathVariable注解的參數(shù)可以是一些基本的簡(jiǎn)單類型: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
除了簡(jiǎn)單地定義{username}變量,還可以定義正則表達(dá)式進(jìn)行更精確的控制,定義語法是{變量名:正則表達(dá)式}[a-zA-Z0-9_]+是一個(gè)正則表達(dá)式,表示只能包含小寫字母,大寫字母,數(shù)字,下劃線。如此設(shè)置URL變量規(guī)則后,不合法的URL則不會(huì)被處理,直接由SpringMVC框架返回404Not Found。
總結(jié)
- 在@RequestMapping注解中定義URL變量規(guī)則
- 在@RequestMapping注解方法中獲取URL變量-@PathVariable
- @PathVariable指定URL變量名
- 定義多個(gè)URL變量
- 用正則表達(dá)式精確定義URL變量
原文
總結(jié)
以上是生活随笔為你收集整理的SpringBoot-@PathVariable的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cmder右键配置
- 下一篇: 个人微信订阅号自定义菜单空白