一、一般前臺向後臺提交數據都會用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