參考網址:spring接收ajax參數的幾種方法
@ModelAttribute 注解
使用@ModelAttribute這個方法可以直接將參數映射成pojo對象,我不加@ModelAttribute注解,直接接收pojo對象,同樣能夠接收到參數
前端ajax請求
<script type="text/javascript"> $(function(){ $.ajax({ type:"post", url:"http://localhost:8080/test", data:{ "name":"張三", "phone":"10086", "password":"123456" }, async:true, success:function(data){ console.log(data); } }); }) </script>
java接收參數
@RequestMapping("/test") @ResponseBody public String testUser(@ModelAttribute("TUser") TUser user){ System.out.println(user.getName()); System.out.println(user.getPassword()); System.out.println(user.getPhone()); return "ok"; }
映射結果
@PathVariabl 注解
@PathVariable 是把請求的路徑上的指定的分段點映射成指定的參數名稱,@PathVariable可以指定多個,如果一個參數都不放在url路徑中,直接請求訪問。http://localhost:8080/test。同樣能夠接收到參數
前端ajax請求
<script type="text/javascript"> $(function(){ $.ajax({ type:"post", url:"http://localhost:8080/test/10086", data:{ "name":"張三", "password":"123456" }, async:true, success:function(data){ console.log(data); } }); }) </script>
java接收參數
@RequestMapping("/test/{phone}") @ResponseBody public String testUser(String name,@PathVariable String phone,String password){ System.out.println(name); System.out.println(phone); System.out.println(password); return "ok"; }
映射結果
直接用HttpServletRequest獲取
前端代碼等同於案例一
java接收參數
@RequestMapping("/test") @ResponseBody public String testUser(HttpServletRequest request, HttpServletResponse response){ System.out.println(request.getParameter("name")); System.out.println(request.getParameter("phone")); System.out.println(request.getParameter("password")); return "ok"; }
映射結果完全相同於案例一
@RequestParam綁定請求參數
前端請求代碼等同於案例一
java接收參數
@RequestMapping("/test") @ResponseBody public String testUser(@RequestParam("name") String a,@RequestParam("phone") String b, String password){ /** * @RequestParam() 里邊的值必須要和前端傳遞過來的參數名字相同 */ System.out.println(a); System.out.println(b); System.out.println(password); return "ok"; }
映射結果完全相同
總結:
1、如果前端傳遞過來的參數與后台接口定義的參數名相同,可以不需要任何注解,如果所有參數都在一個pojo對象中,那么可以直接映射成pojo對象,也可以使用 HttpServletRequest 接收參數
2、如果想使用 resfull 風格的請求方式的話,可以使用 @PathVariable 進行注解
3、如果前端傳遞的參數與后台接口定義的參數名稱不相同,那么就使用 RequestParam 注解