@RequestParam和@RequestBody
1.@RequestParam作用場景:
當前端傳到后臺時,后臺接收的參數名和前臺傳遞的參數名一致;
比如:正常情況下,
jsp:<a href="param/testRequestParam?username=hehe">RequestParam</a>
controller:public String?testRequestParam(String username){
}
這種接收參數就可以接收成功,但是如果后臺需要接收uname的參數,但是又不想改jsp中的username,就可以使用下面的方式
jsp:<a href="param/testRequestParam?username=hehe">RequestParam</a>
controller:public String?testRequestParam(@RequestParam("uname")String username){
}
這樣即不需要修改jsp中的參數名字,也不需要修改controller中的參數名字,后臺還可以獲取參數成功。
2.@RequestBody作用場景
用于獲取請求體內容,直接使用得到的是key=value&key=value...結構的數據,該注解不適用與get請求。
jsp:<a href="param/testRequestParam?username=hehe">RequestParam</a>
第一種使用方式:
controller:public String?testRequestBody(@RequestBody String body){
//把String對象轉換成JSONObject對象,json.parseObbject(String str)是將str轉換成相應的jsonObject對象,其中str是“鍵值對”形式的json字符串,轉化為jsonObject對象之后就可以使用其內置的方法,進行處理JSONObject str = JSON.parseObject(body); //根據鍵值對的方式獲取參數 String o = str.getString("id");}
?
另外,使用下面的方式更加簡單,不需要使用JSONObject對象進行轉換
第二種使用方式:
controller:public String?testRequestParam(@RequestBody Map<String, String> params){
String id = params.get("id");}
當然,如果是封裝好的實體類可以直接使用:
controller:public String?testRequestParam(@RequestBody TbTaxCard card){
? ? ? ? ? ? ? ? ?card.getOpenId()
}
總結
以上是生活随笔為你收集整理的@RequestParam和@RequestBody的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql查询时有两条一模一样的结果应该
- 下一篇: yml配置文件中有特殊字符解决方案