您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了SpringMVC Controller如何解析ajax參數,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。
在使用ajax發送請求時,如果發送的JSON數據的參數是一個類中的不同屬性,在Controller類的方法中使用@RequestBody Object obj會直接封裝進obj對象中
例如:
前端部分代碼
JavaScript
<script language="JavaScript"> function login(){ var user_name = $("#user_name").val(); //用戶名 var user_password = $("#user_password").val; //用戶密碼 $.ajax({ url:"<%=path%>/User/Login", type:"POST", async: false, contentType:"application/json;charset=UTF-8", dataType:'json', data:JSON.stringify({"user_name":user_name,"user_password":user_password}), //將JSON對象轉為字符串 success:function(data){ } }); } </script>
form表單
<form> <div class="form-group"> <label for="user_name" stype="display:inline;">用戶名:</label> <input id="user_name" type="text" class="form-control" autocomplete="off" /> </div> <div class="form-group"> <label for="user_password" >用戶密碼:</label> <input id="user_password" type="text" class="form-control" autocomplete="off" /> </div> <div class="col"> <div class="col-md-4" > <button type="submit" class="btn btn-success" onclick="login()">登錄</button> </div> </div> </form>
此時前端向后端傳入JSON數據
User類部分代碼
public class User implements Serializable { private Integer user_name; //用戶名 private String user_password; //用戶密碼 ...... }
Controller部分代碼
@Controller @RequestMapping("/User") public class UserController { @RequestMapping(value = "/Login",method = {RequestMethod.POST}) public @ResponseBody Boolean Login(@RequestBody User user) { //此時user.getUser_name()就是前端的user_name //user.getUser_password()就是前端的user_password //根據輸入的用戶名及用戶密碼和數據庫對比判斷是否登錄成功,并返回一個布爾值告訴前端 ······ return true/false; }
如果此時ajax提交的JSON數據為
data:JSON.stringify({"user_name":admin,"user_password":123)
在Controller內加入輸出語句
public @ResponseBody Boolean Login(@RequestBody User user) { System.out.println(user.getUser_name()); System.out.println(user.getUser_password()); ······ return true/false; }
輸出的結果為
admin
123
但是,如果ajax發送的請求體中的參數并不是同一個類的不同屬性,應該如何處理呢?
例如:
form表單中增加了一項驗證碼:verifycode。此時,假如ajax提交的JSON數據為
data:JSON.stringify({"user_name":admin,"user_password":123,"verifycode":666})
但是verifycode并不是User類中的屬性,不能由@RequestBody User user中的user接收
如果采用@RequestBody String body接收,輸出的將是JSON字符串
@RequestMapping(value = "/Login",method = {RequestMethod.POST}) public @ResponseBody Boolean Login(@RequestBody String body) { //此時body是整個請求體的內容 System.out.println(body); //······ }
輸出的結果為
{"user_name":admin,"user_password":123,"verifycode":666}
但我們想拿到每個參數的對應值,此時可以采用Map<String,String> map接收
@RequestMapping(value = "/Login",method = {RequestMethod.POST}) public @ResponseBody Boolean Login(@RequestBody Map<String,String> map) { //此時map.get("user_name")就是前端的user_name System.out.println(map.get("user_name")); //map.get("user_password")就是前端的user_password System.out.println(map.get("user_password")); //map.get("verifycode")就是前端的verifycode System.out.println(map.get("verifycode")); ······ }
輸出的結果為
admin
123
666
以上就是關于SpringMVC Controller如何解析ajax參數的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。