原文地址:
https://blog.csdn.net/ShiuHB/article/details/109674343
1.直接在controller方法的形參中接收參數
@RequestMapping("/addUser1")
public String addUser1(String username,String password) {
System.out.println("username is:"+username);
System.out.println("password is:"+password);
return "demo/index";
}
這種方式前端傳參需要將值寫到url中,適用於get方式提交,不適用於post方式提交
2.@RequestParam注釋
與第一種方式類似,加在形參前,可以對前端的參數做映射
三個參數:
- value:對應url中的參數名
- required:是否是必須的,默認為false
- defaultVaule:默認值
3.@PathVariable注釋
與第二種方式類似,加在形參前,可以直接到url中取值
不同點:mapping中要有對應的占位符(REST風格)
@RequestMapping("/addUser1/{name}/{pwd}")
public String addUser1(@PathVariable("name") String username, @PathVariable("pwd") String password) {
System.out.println("username is:"+username);
System.out.println("password is:"+password);
return "demo/index";
}
- value:對應url中的參數名
- required:是否是必須的,默認為true
- 沒有默認值
4.@RequestBody注釋
用於接收body中的json串
@RequestMapping(value = "/method03")
public String method03(@RequestBody User user) {
return JSON.toJSONString(user);
}
注意實體類中的屬性名稱必須與JOSN串中的參數key名稱完全一致,不同命參數無法正確接收;
使用此種方式推薦使用Post請求攜帶body參數,get請求雖然也可以攜帶body參數並請求成功但並不推薦這樣操作
5.HttpServletRequest request接收參數
@RequestMapping("/method06")
public String method06(HttpServletRequest request) {
User user = new User();
user.setName(request.getParameter("name"));
user.setAge(Integer.valueOf(request.getParameter("age")));
user.setMoney(Double.parseDouble(request.getParameter("money")));
return JSON.toJSONString(user);
}
傳統的接收參數方式,可以接收url params 傳參,支持post from類型傳參,不支持JSON傳參
注意如果請求中未傳遞指定名稱的參數,取參時會報錯