spring mvc前臺向後臺傳遞表單數據的幾種方式及後臺數據的獲取

一、一般前臺向後臺提交數據都會用form表單提交

    表單提交信息後最好的獲取方式就是映射爲實體

<form id="testform" method="post">
		<input type="text" name="name" />	
		<input type="text" name="age" />
		<input type="text" name="hobby" />
		<input id="yxrq" name="birthday" class="easyui-datebox" data-options="editable:false,width:200" />
</form>

private String name;
private Integer age;
private String hobby;
@DateTimeFormat(pattern = "yyyy-MM-dd")  
private Date birthday;


public Map<String, Object> test1(Test test1) {
		
		Map<String,Object> map = new HashMap<String, Object>();
		System.out.println(test1);
		map.put("msg", "success");
		return map;
}

成功傳過來

注意,當前臺輸入框傳過來的時間格式的數據(字符串),直接映射爲Date會失敗報400錯誤,需要處理一下纔可以映射成功

比較簡單的方法是上圖在實體類前面加一個註解,將字符串格式化爲時間格式。也可以用其他方法,比如全局配置詳見

https://blog.csdn.net/chenleixing/article/details/45156617

表單提交的時候  1、順序不一樣可以映射過去。2、少屬性可以映射過去。3、多屬性可以映射過去

@RequestMapping("/test1")
	public Map<String, Object> test1(Test test1,String password) {		
		Map<String,Object> map = new HashMap<String, Object>();
		System.out.println(test1);
		System.out.println(password);
		map.put("Msg", "success");
		return map;
	}

<form id="testform" method="post">
		<input type="text" name="name" />	
		<input type="text" name="age" />
		<input type="text" name="password" />
		<input id="yxrq" name="birthday" class="easyui-datebox" data-options="editable:false,width:200" />
</form>

當傳遞的有文件數據的時候,需要表單加上  enctype="multipart/form-data"  後臺參數爲    MultipartFile pic 

二、可以把form表單的數據轉化成json通過ajax提交到後臺

    json 傳到後臺的發方法有幾種 

1.前端傳來的是json數據不多時:{key : value},可以直接用@RequestParam來獲取值

$.ajax({		 
        type:'POST',
        data:{jcxx:"111"},		 
        /* contentType :'application/json', */ 
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
 
   });

public String test2(String jcxx) {可以得到 }

當然你可以把111換成json字符串同樣可以得到,再j1和 j2 進行json解析,或者單獨得到某一個屬性,fastjson等工具都可以很輕鬆得到數據。


	$.ajax({		 
        type:'POST',
        data:{"j1":JSON.stringify(jsonobject),"j2":JSON.stringify(jsonobject)},		 
       /*  contentType :'application/json', */
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
   });	

public Map<String,Object> test2(String j1 ,String j2) {	

 

關於 contentType:“application/json“之後,向後臺發送數據的格式必須爲json字符串

用  JSON.stringify(data)將json對象轉化爲json字符串

不添加 contentType:“application/json“的時候可以向後臺發送json對象形式

2.、以實體類方式接收

$.ajax({	//1	 
        type:'POST',
        data:jsonobject,		 
        /* contentType :'application/json', */ 
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
 
   });	 
@RequestMapping("/test2")
	public String test2(Test test) {		
		Map<String,Object> map = new HashMap<String, Object>();
		System.out.println(test);		
		return "ok";
	}	



$.ajax({		//2 
        type:'POST',
        data:JSON.stringify(jsonobject),		 
        contentType :'application/json',
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
   });	 
@RequestMapping("/test2")
	public String test2(@RequestBody Test test) {	
		Map<String,Object> map = new HashMap<String, Object>();
		System.out.println(test);	
		return "ok";
	}	

json 對象的話,可以自己將表單數據處理成json數據

var data = $("#testform").serializeArray();//方法一,自己轉換
var jsonobject = {};
	for(var i = 0;i < data.length;i++){
		jsonobject[data[i].name] = data[i].value; 
}

var jsonobject = $('#testform').serializeJSON()//方法二,使用別人寫好的方法
需要引入
<script type="text/javascript" src="jquery-easyui-1.6.9/jquery.serializejson.js"></script>

項目地址:https://github.com/marioizquierdo/jquery.serializeJSON

3.map接收

$.ajax({		 
        type:'POST',
        data:JSON.stringify(jsonobject),		 
        contentType :'application/json',
        dataType:'json',		    
        url :'test/test2',		 
        success :function(data) {		 
        	$.messager.alert('提示',data.Msg,'alert');	 
        }
   });	 

@RequestMapping("/test2")
	public Map<String,Object> test2(@RequestBody Map<String, Object> map) {	
		Map<String,Object> map1 = new HashMap<String, Object>();
		System.out.println(map);
		map.put("Msg", "ok");
		return map1;
	}	
		

@requestBody註解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json類型。

 contentType :'application/json',需要data是字符串,而不是對象

4.以List接收

json數組轉化傳到後臺

部分參考自:https://blog.csdn.net/weixin_39220472/article/details/80725574

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章