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

Spring中的PathVariable注釋解析

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

Spring的PathVariable注釋

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

例子

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

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

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

/employee/{id}

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

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

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

@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”進行匹配。

請記住,如果我的代碼使用“ id”(參數(shù))命名為其他名稱,那么它將無法工作。 然而,如果你不想對參數(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”),它再次指定了我們要引用的模板變量。

最終您有兩個選擇:

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

多個@PathVariable批注

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

我們來演示一下:

@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";
   }
}

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

  • company
  • id

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

@PathVariable vs @RequestParam結論

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

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

使用@PathVariable的坑

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

前端路徑拼接用戶名,因為用戶名中是帶'.‘這個字符的。類似'Oliver.wang'。前端瀏覽器F12,發(fā)現(xiàn)路徑正常拼接'xxxxxx/Oliver.wang?xxx=xxx',后端代碼發(fā)現(xiàn),controller層的參數(shù),接收到只有'Oliver'。

解決過程

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

解決方案

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

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

相關文章

  • java壓縮文件和下載圖片示例

    java壓縮文件和下載圖片示例

    這篇文章主要為大家詳細介紹了java壓縮文件和下載圖片示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 使用maven的profile構建不同環(huán)境配置的方法

    使用maven的profile構建不同環(huán)境配置的方法

    這篇文章主要介紹了使用maven的profile構建不同環(huán)境配置的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 詳解如何在springcloud分布式系統(tǒng)中實現(xiàn)分布式鎖

    詳解如何在springcloud分布式系統(tǒng)中實現(xiàn)分布式鎖

    最近在看分布式鎖的資料,本文就介紹一下利用springcloud結合redis實現(xiàn)分布式鎖,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 關于SpingMVC的<context:component-scan>包掃描踩坑記錄

    關于SpingMVC的<context:component-scan>包掃描踩坑記錄

    這篇文章主要介紹了關于SpingMVC的<context:component-scan>包掃描踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot?Web請求響應詳細代碼示例

    SpringBoot?Web請求響應詳細代碼示例

    在Web開發(fā)中請求和響應是必不可少的環(huán)節(jié),Spring Boot Web應用中請求響應的分層解耦是構建高效、可維護系統(tǒng)的關鍵實踐,下面這篇文章主要介紹了SpringBoot?Web請求響應的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • C/C++中的struct結構體詳細解讀

    C/C++中的struct結構體詳細解讀

    這篇文章主要介紹了C/C++中的struct結構體詳細解讀,結構體是由一批數(shù)據(jù)組合而成的結構型數(shù)據(jù),組成結構型數(shù)據(jù)的每個數(shù)據(jù)稱為結構型數(shù)據(jù)的“成員”,其描述了一塊內(nèi)存區(qū)間的大小及意義,需要的朋友可以參考下
    2023-10-10
  • Java模擬實現(xiàn)斗地主發(fā)牌

    Java模擬實現(xiàn)斗地主發(fā)牌

    這篇文章主要為大家詳細介紹了Java實現(xiàn)模擬斗地主發(fā)牌,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 特殊數(shù)據(jù)結構之使用Java實現(xiàn)單調(diào)棧示例

    特殊數(shù)據(jù)結構之使用Java實現(xiàn)單調(diào)棧示例

    這篇文章主要為大家介紹了特殊數(shù)據(jù)結構之使用Java實現(xiàn)單調(diào)棧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • SpringBoot集成Swagger2構建在線API文檔的代碼詳解

    SpringBoot集成Swagger2構建在線API文檔的代碼詳解

    這篇文章主要介紹了SpringBoot集成Swagger2構建在線API文檔,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • SpringBoot環(huán)境配置知識總結

    SpringBoot環(huán)境配置知識總結

    今天帶大家了解SpringBoot環(huán)境配置的相關知識,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05

最新評論

贺兰县| 固镇县| 全椒县| 康乐县| 潜江市| 银川市| 江西省| 平安县| 来安县| 台南市| 栾川县| 兰考县| 家居| 黄陵县| 西平县| 溧阳市| 建宁县| 读书| 仁化县| 海安县| 青河县| 牟定县| 涟源市| 万全县| 漳浦县| 蒙自县| 介休市| 玉山县| 钦州市| 连云港市| 黎平县| 丰顺县| 城固县| 昌黎县| 锦州市| 江达县| 察隅县| 报价| 绥中县| 昔阳县| 宿州市|