@RequestParam,@PathVariable和@RequestBody三者區別


@RequestParam注解

顧名思義:獲取參數,即是獲取傳送過來的參數;例如獲取下面鏈接的id參數值:

//鏈接(注意鏈接格式區別) http://localhost:8090/hello?id=2 
//使用@RequestParam注解獲取id public String Demo1(@RequestParam String id){ System.out.println("鏈接中請求參數的id:"+id); return null; } 

此時@RequestParam的作用就可以獲取id下來並且作為形參傳給方法體里面的id

@PathVariable注解

顧名思義:路徑變量,即是獲取鏈接路徑上的變量,例如獲取下面鏈接的id

//鏈接(注意比較上面一條鏈接) http://localhost:8090/hello/2 
//使用@PathVariable注解獲取id @RequestMapping(value = "/getBook/{id}", method = RequestMethod.GET) public String getBook(@PathVariable Integer id) { try { system.out.println("路徑上的id:"+id); } catch (ParseException e) { e.printStackTrace(); } return null; } 

此時@PathVariable的作用是將路徑上的id獲取進來傳遞給方法體里面的形參id,但是變量名稱必須一樣,比如這里:value = "/getBook/{id}"@PathVariable Integer id;兩個都要是id,如果不同則報錯;

@RequestBody注解

首先說下,@RequestBody注解一般主要是用來處理content-type:"application/json charset=utf-8"或者content-type:"application/xml charset=utf-8"兩種請求數據,一般是異步請求用的比較多些,例如:

//異步請求部分代碼 $.ajax({         url:"/hello",         type:"POST",         data:'{"id":"123","name":"chenyc"}',         content-type:"application/json charset=utf-8",         success:function(data){           alert(data);         }     }); 
//@requestBody注解獲取數據代碼 @requestMapping("/hello")     public String hello(@requestBody Integer id,@requestBody String name){       System.out.println("id:"+id+";"+"name:"+name);     } 

此時@requestBody注解就可以獲取到請求中的各個參數然后賦值到相對應的方法形參上,另外,當有一個實體類User包含了idname的元素的話,在方法里面直接可以寫@requestBody User user就會自動封裝好給我們使用的了,不用麻煩像這樣@requestBody Integer id,@requestBody String name一個一個的封裝


免責聲明!

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



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