淺析 @PathVariable 和 @RequestParam


一、代碼實例

  首先,上兩個地址:

  地址1:http://localhost:8989/SSSP/emps?pageNo=2

  地址2:http://localhost:8989/SSSP/emp/7

  如果想獲取地址1中的 pageNo的值 ‘2’ ,則使用  @RequestParam ,

  如果想獲取地址2中的 emp/7 中的 ‘7 ’   則使用 @PathVariable

  實例如下:

  @RequestMapping(value="/getTaobao") public List<Taobao> doAddTaobao(@RequestParam(required = false) Integer status){ return taobaoService.getTaobao(status); } @RequestMapping(value = "/auditTaobao/{id}") public void doAuditTaobao(@PathVariable Integer id){ taobaoService.auditTaobao(id); }

  大道理不講,原理也不分析就記憶一點,那一點呢? 看‘這個符號‘?’ 

  1、若獲取的入參的 參數 是下面這種形式 就使用 @requestParam 去獲取 參數‘2’

  /emps?pageNo=2

  2、若獲取的入參的 參數 是下面這種形式 就使用 @PathVariable 去獲取參數 ‘7’

  /emp/7

二、詳細講解

  RequestParam  漢語意思就是: 請求參數。顧名思義 就是獲取參數的

  PathVariable  漢語意思是:路徑變量。顧名思義,就是要獲取一個url 地址中的一部分值,那一部分呢?

  RequestMapping 上說明了@RequestMapping(value="/emp/{id}"),我就是想獲取你URL地址 /emp/ 的后面的那個 {id}的

  @PathVariable是用來獲得請求url中的動態參數的

  因此,就看‘?’ 若是想獲取 ‘?’ 后面的pageNo 的值 ‘2’, 就使用RequestParam 。若想獲取的是url 地址的一部分 ‘7’ 就使用PathVariable

1、@pathVariable和RequestParam的區別:

  顧名思義,前者是從路徑中獲取變量也就是把路徑當做變量,后者是從請求里面獲取參數從請求來看:

  /Springmvc/user/page.do?pageSize=3&pageNow=2

  pageSize和pageNow應該是屬於參數而不是路徑,所以應該添加@RequestParam的注解。

  如果做成如下URL,則可以使用@PathVariable

  someUrl/{paramId},這里的paramId是路徑中的變量,應使用@pathVariable

2、使用

@PathVariable

  當使用@RequestMapping URI template 樣式映射時, 即 someUrl/{paramId},這時的paramId可通過 @Pathvariable注解綁定它傳過來的值到方法的參數上。

@RequestParam

(1)常用來處理簡單類型的綁定,通過Request.getParameter() 獲取的String可直接轉換為簡單類型的情況( String--> 簡單類型的轉換操作由ConversionService配置的轉換器來完成);因為使用request.getParameter()方式獲取參數,所以可以處理get 方式中queryString的值,也可以處理post方式中 body data的值;

(2)用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內容,提交方式GET、POST;

(3) 該注解有兩個屬性: value、required; value用來指定要傳入值的id名稱,required用來指示參數是否必須綁定


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM