javaweb 前臺向後臺傳值

一、ajax中向後臺傳list集合,後臺springmvc接收

JSON對象和JSON字符串

在SpringMVC環境中,@RequestBody加粗樣式接收的是一個Json對象的字符串,而不是一個Json對象。然而在ajax請求往往傳的都是Json對象,用 JSON.stringify(data)的方式就能將對象變成字符串。同時ajax請求的時候也要指定dataType: "json",contentType:"application/json"這樣就可以輕易的將一個對象或者List傳到Java端

Content-Type

服務器爲什麼會對錶單提交和文件上傳做特殊處理,因爲表單提交數據是名值對的方式,且Content-Type爲application/x-www-form-urlencoded,而文件上傳服務器需要特殊處理,普通的post請求(Content-Type不是application/x-www-form-urlencoded)數據格式不固定,不一定是名值對的方式,所以服務器無法知道具體的處理方式,所以只能通過獲取原始數據流的方式來進行解析。

第一種方式 傳遞的參數Bean

$("#saveuddd").click(function(){
var saveDataAry=[];
var data1={"name":"test","password":"gz"};
var data2={"name":"ququ","password":"gr"};
saveDataAry.push(data1);
saveDataAry.push(data2);
$.ajax({
type:"POST",
url: basePath + "/user/saveUser",
dataType:"json",
contentType:"application/json", // 指定這個協議很重要
data:JSON.stringify(saveDataAry), //只有這一個參數,json格式,後臺解析爲實體,後臺可以直接用
success:function(data){
}
});
})
java文件
@RequestMapping(value = "saveUser", method = {RequestMethod.POST }) 
@ResponseBody
public void saveu( @RequestBody List<User> users ){ //List 泛型必須爲實體,爲map接收不到
System.out.println(users) ;
}
使用如下方法,可以使用bean
@RequestMapping(value = "saveUser", method = {RequestMethod.POST })
@ResponseBody
public void saveu( @RequestBody User[] users ){ 
System.out.println(users.getName()) ; // 此時的user是實體bean
}

第二種方式 傳遞的鍵值對

jsp同上
另外一種:
@RequestMapping(value = "saveUser", method = {RequestMethod.POST })
@ResponseBody
public void saveu( @RequestBody List<Map<String,String>> users ){ // spring MVC只能解析外層的json格式,內部的bean轉化爲Map格式的鍵值對,需要對map解析
List<User> userList = new ArrayList<User>();
for(Map<String,String> map : users){
User u = new User();
u.setName(map.get("name"));
u.setPassword(map.get("password"));
userList.add(u);
}
// 這裏就可以使用 userList 了
}

第三種方式

能夠傳遞多個參數,但是每一個參數都是字符串(bean類型的數據會轉化爲JSON格式的字符串)

jsp文件
$("#saveuddd").click(function(){
                    var saveDataAry=[];
                    var data1={"name":"test","password":"gz"};
                    var data2={"name":"ququ","password":"gr"};
                    saveDataAry.push(data1);
                    saveDataAry.push(data2);
                    $.ajax({
                        type:"POST",
                        url: basePath + "/user/saveUser",
                        dataType:"json",
                        data:{users:JSON.stringify(saveDataAry),aa:"ddd"},
                          // 可以傳遞多個參數,但此時的users內容與另外一個參數:aa 的內容一起傳遞,所以後臺解析爲字符串
                         // 後臺接收的users內容:[{"name":"test","password":"gz"},{"name":"ququ","password":"gr"}]
                         // 後臺接收的 aa 內容:"ddd"
                        success:function(data){}
                    });
                })
     java文件
	@RequestMapping(value = "saveUser", method = {RequestMethod.POST })
        @ResponseBody
         public void saveu( String users , String aa ){
         	System.out.println(users) ;
         }   
        

第一二種方式

dataType: 'json',
contentType:"application/json",
data: JSON.stringify(datas),//data數據必須使用JSON.stringify方法處理,後臺才能正常接收,否則報400錯誤

以上轉載自https://blog.csdn.net/junehappylove/article/details/81288885
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章