欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中的PathVariable注釋解析

 更新時(shí)間:2021年10月25日 14:46:51   作者:zenglintao  
這篇文章主要介紹了Spring中的PathVariable注釋用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Spring的PathVariable注釋

就像@RequestParam一樣,@PathVariable批注用于從HTTP request中提取數(shù)據(jù)。但是,它們略有不同。區(qū)別在于@RequestParam從URL獲取參數(shù),而@PathVariable只是從URI中提取參數(shù)。

例子

讓我們假設(shè)你有一個(gè)以下 URL 的網(wǎng)站:

http://www.yourwebsite.net/employee/1

上面 URL 中的1表示雇員的 ID。 到目前為止一切ok。 但是現(xiàn)在,從 Spring 控制器看,路徑看起來(lái)是這樣的(取決于您給 id 的名稱) :

/employee/{id}

上面的 URL 路徑對(duì)我們有什么幫助? 因?yàn)檫@個(gè){}語(yǔ)法(碰巧被稱為 URI 模板) ,你現(xiàn)在可以把它傳遞給一個(gè)使用@pathvariable 的方法,你的方法和注釋看起來(lái)如下所示:

@RequestMapping(value="/employee/{id}", method=RequestMethod.GET)
<Access Modifier> <Return Type> <Method Name> (@PathVariable <Type> id) { <body> }

從上面的代碼片段可以看到,現(xiàn)在“ id”將從路徑中引用{ id }。 讓我們用一個(gè)真實(shí)的例子來(lái)嘗試:

@Controller
@SpringBootApplication
public class EmployeeManager {
   @RequestMapping(value=" /employee/{id}")
   public String pathVariableDemo(Model model, @PathVariable int id) {
      model.addAttribute("id", id);
      return "demo";
   }
}

現(xiàn)在,Spring查看輸出id參數(shù),并將其與模板變量“ id”進(jìn)行匹配。

請(qǐng)記住,如果我的代碼使用“ id”(參數(shù))命名為其他名稱,那么它將無(wú)法工作。 然而,如果你不想對(duì)參數(shù)和模板變量使用相同的名字,你可以像這樣命名 PathVariable 注釋的名字:

@Controller
@SpringBootApplication
public class EmployeeManager {
   @RequestMapping(value=" /employee/{id}")
   public String pathVariableDemo(Model model, @PathVariable("id") int someRandomName) {
      model.addAttribute("id", someRandomName);
      return "demo";
   }
}

從上面的示例中可以看到,我將參數(shù)的名稱更改為 _someRandomName,_但還添加了@PathVariable (“ id”),它再次指定了我們要引用的模板變量。

最終您有兩個(gè)選擇:

  • 1.為方法參數(shù)使用相同的名稱
  • 2.在@PathVariable批注中指定模板變量的名稱

多個(gè)@PathVariable批注

如果你可以有多個(gè)@pathvariable 會(huì)怎么樣? 我們能做到嗎? 是的,我們可以! 事實(shí)上,這和添加一個(gè)@pathvariable 非常相似。

我們來(lái)演示一下:

@Controller
@SpringBootApplication
public class EmployeeManager {
   @RequestMapping(value="/{company}/employee/{id}", method=RequestMethod.GET)
   public String pathVariableDemo(@PathVariable("company") String companyName, @PathVariable("id") int employeeId) {
      // handle the code
      return "demo";
   }
}

從上面的代碼片段中可以看到,我們有兩個(gè)模板變量:

  • company
  • id

然后,我們提取每個(gè)模板變量,然后通過(guò)指定方法參數(shù)所引用的臨時(shí)變量將它們“分配”給方法參數(shù)。

@PathVariable vs @RequestParam結(jié)論

盡管@PathVariable和@RequestParam都用于從URL提取值,但是可以根據(jù)URL的設(shè)計(jì)使用它們。

通常,@PathVariable通常用于RESTful Web服務(wù)中,而@RequestParam用于從查詢參數(shù)中提取數(shù)據(jù)。

使用@PathVariable的坑

發(fā)現(xiàn)問(wèn)題

前端路徑拼接用戶名,因?yàn)橛脩裘惺菐?.‘這個(gè)字符的。類(lèi)似'Oliver.wang'。前端瀏覽器F12,發(fā)現(xiàn)路徑正常拼接'xxxxxx/Oliver.wang?xxx=xxx',后端代碼發(fā)現(xiàn),controller層的參數(shù),接收到只有'Oliver'。

解決過(guò)程

在方法中多加了一個(gè)參數(shù)(xxx,HttpServletRequest request){},輸出request.ServletPath(),發(fā)現(xiàn)路徑正常'/xxx/xxx/Oliver.wang'。

解決方案

  • 第一種:加上 {:.+} ,比如 @getMapping(“xxx/{name:.+}”)
  • 第二種:UrlEncode
  • 第三種:request.ServletPath() 拿到路徑截取字符串
  • 第四種:不拼接路徑,改成'xxxxx?name=Oliver.wang' 請(qǐng)求參數(shù)

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

相關(guān)文章

  • 詳解關(guān)于mybatis-plus中Service和Mapper的分析

    詳解關(guān)于mybatis-plus中Service和Mapper的分析

    這篇文章主要介紹了詳解關(guān)于mybatis-plus中Service和Mapper的分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • SpringMVC實(shí)現(xiàn)Controller的三種方式總結(jié)

    SpringMVC實(shí)現(xiàn)Controller的三種方式總結(jié)

    這篇文章主要介紹了SpringMVC實(shí)現(xiàn)Controller的三種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 最常用的1000個(gè)Java類(lèi)(附代碼示例)

    最常用的1000個(gè)Java類(lèi)(附代碼示例)

    這篇文章主要介紹了最常用的1000個(gè)Java類(lèi)(附代碼示例),需要的朋友可以參考下
    2015-04-04
  • Java開(kāi)發(fā)中讀取XML與properties配置文件的方法

    Java開(kāi)發(fā)中讀取XML與properties配置文件的方法

    這篇文章主要介紹了Java開(kāi)發(fā)中讀取XML與properties配置文件的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • Java 快速排序(QuickSort)原理及實(shí)現(xiàn)代碼

    Java 快速排序(QuickSort)原理及實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java 快速排序(QuickSort)原理及實(shí)現(xiàn)代碼,有需要的朋友可以參考一下
    2014-01-01
  • 初識(shí)JAVA數(shù)組

    初識(shí)JAVA數(shù)組

    java語(yǔ)言中,數(shù)組是一種最簡(jiǎn)單的復(fù)合數(shù)據(jù)類(lèi)型。數(shù)組是有序數(shù)據(jù)的集合,數(shù)組中的每個(gè)元素具有相同的數(shù)據(jù)類(lèi)型,可以用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來(lái)唯一地確定數(shù)組中的元素。數(shù)組有一維數(shù)組和多維數(shù)組。
    2014-08-08
  • 淺析Java方法傳值和傳引用問(wèn)題

    淺析Java方法傳值和傳引用問(wèn)題

    這篇文章主要是對(duì)Java方法傳值和傳引用問(wèn)題進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • Java讀寫(xiě)pdf文件的詳細(xì)實(shí)現(xiàn)方法

    Java讀寫(xiě)pdf文件的詳細(xì)實(shí)現(xiàn)方法

    最近公司的項(xiàng)目中需要操作pdf文件,所以這里給大家總結(jié)下方法,這篇文章主要給大家介紹了關(guān)于Java讀寫(xiě)pdf文件的詳細(xì)實(shí)現(xiàn)方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Java爬蟲(chóng)(Jsoup與WebDriver)的使用

    Java爬蟲(chóng)(Jsoup與WebDriver)的使用

    這篇文章主要介紹了Java爬蟲(chóng)(Jsoup與WebDriver)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java集合系列之LinkedHashMap源碼分析

    Java集合系列之LinkedHashMap源碼分析

    這篇文章主要為大家詳細(xì)介紹了Java集合系列之LinkedHashMap源碼分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評(píng)論