1. 程式人生 > >springMVC接受JSON引數

springMVC接受JSON引數

參考博文地址:http://blog.csdn.net/LostSh/article/details/68923874 

     前幾天做專案的時候,遇到了一個ajax傳遞引數不成功的問題,現在記錄下來。

問題描述:

      想向後臺傳遞一個user物件,我是這麼寫的,直接傳了一個json物件過去,但是後臺並沒有接受到傳遞的值。

      js程式碼:

$.ajax({
		url : ctx + "/system/user/springMVC",
		type : "post",
		data : {
			'user':{
				'name':'userName'
			  }			
		},
		dataType : "json",
		success : function(result) {
			if (result) {
				$.messager.alert("溫馨提示", result.message);
			}
		}
	});
controller層程式碼:
@RequestMapping(value = "springMVC",method = RequestMethod.POST)
	@ResponseBody
	public void springMVC(User user) {
		System.out.println(user.getName());
	}
   結果發現後臺並沒有接收到user傳遞過來的值,請教了一下別人 ,把外面包裹的user給去掉就行了,即:
$.ajax({
		url : ctx + "/system/user/springMVC",
		type : "post",
		data : {
			'name':'userName'			 	
		},
		dataType : "json",
		success : function(result) {
			if (result) {
				$.messager.alert("溫馨提示", result.message);
			}
		}
	});
   果然在後臺獲取到了name的值,進一步請教,為什麼我那種方式不行,答曰:因為spring進行引數繫結的時候,如果是基礎型別、包裝類、以及String,那麼它會預設把同名的引數直接賦值,如果是POJO型別的話,就會去找它的set方法,在我這個例子中,程式碼中並沒有 setUser這個方法,所以spring無法給它賦值,但是user中 卻有setName這個方法,所以能成功接收這個引數。

還有一個問題,之前我想向後臺傳遞一個user列表,在網上查了一下得知不能直接傳,需要使用一個類包裝起來,類似於:

public class UserVo  {

    private List<User> userList;

	public List<User> getUserList() {
		return userList;
	}
	
	public void setUserList(List<User> userList) {
		this.userList = userList;
	} 
	   
}

接收的時候使用 UserVo進行接收,例如:    
@RequestMapping(value = "springMVC",method = RequestMethod.POST)  
@ResponseBody  
public void springMVC(UserVo userVo) {   
}  
但是我不想再新建一個類來傳遞,後來發現可以使用@requestBody這個註解來進行列表資料的傳遞。

@requestBody接收的是json型別的字串,所以我們傳遞物件時,可以先使用JSON.stringify(data)方法將JSON物件轉化為JSON字串。其次 contentType需要改為:"application/json"。例如:

$.ajax({
		url : ctx + "/system/user/springMVC",
		type : "post",
		data : JSON.stringify(userList),
		dataType : "json",
		contentType : "application/json",
		success : function(result) {
			if (result) {
				$.messager.alert("溫馨提示", result.message);
			}
		}
	});
     
@RequestMapping(value = "springMVC",method = RequestMethod.POST)
	@ResponseBody
	public void springMVC(@RequestBody List<User> userList) {
		for(User user : userList){
			System.out.println(user.getName());
		}
	}
結果:成功獲取到資料。


相關推薦

springMVC接受JSON引數

參考博文地址:http://blog.csdn.net/LostSh/article/details/68923874       前幾天做專案的時候,遇到了一個ajax傳遞引數不成功的問題,現在記錄下來。 問題描述:       想向後臺傳遞一個user物件,我是這麼寫的

SpringMVC接受JSON引數詳解及常見錯誤總結(@RequestBody轉載)

最近一段時間不想使用Session了,想感受一下Token這樣比較安全,穩健的方式,順便寫一個統一的介面給瀏覽器還有APP。所以把一個練手專案的前臺全部改成Ajax了,跳轉再使用SpringMVC控制轉發。對於傳輸JSON資料這邊有了更深的一些理解,分享出來,請

springmvc 實現http介面 接受json引數

使用springmvc實現http介面時,發現問題。將引數直接放入url裡面引數能被正常解析到如下: public void test(  Long roleId,  Integer roleCod

SpringMVC接受JSON參數詳解及常見錯誤總結我改

pen 接口 var token 練手 一個 lips users 是不是 SpringMVC接受JSON參數詳解及常見錯誤總結 最近一段時間不想使用Session了,想感受一下Token這樣比較安全,穩健的方式,順便寫一個統一的接口給瀏覽器還有APP。所以把一個練手項目

springMVC接受json並開啟新頁面

背景:框架中,兩個web工程A,B,我的B工程開發了一個對外action介面,A來連,要實現的功能是,A的頁面發起一個action請求,到達B的springmvc,通過驗證後,開啟一個B工程新的tab的新視窗 方案:B用form提交json字串。A後臺用String param(不用@RequestBody

SpringMVC接受請求引數

接收請求引數1.1. 【不推薦】通過HttpServletRequest在處理請求的方法中,新增HttpServletRequest物件作為引數,在方法體中,直接呼叫引數物件的getParameter()或類似功能的方法,即可獲取請求引數: @RequestMapping("handle_reg.

帶你進SpringMVC接受請求引數

1. 接收請求引數 1.1. 【不推薦】通過HttpServletRequest 在處理請求的方法中,新增HttpServletRequest物件作為引數,在方法體中,直接呼叫引數物件的getParameter()或類似功能的方法,即可獲取請求引數: @RequestMapping("h

ajax傳陣列到後臺,後臺springmvc 接受陣列引數

關於ajax傳陣列到後臺,後臺springmvc  接受陣列引數  特意整理了一下】 var   ids= new Array();  var checkId = new Array();//定義一個數組用來接收引數         $("input:checked

Json物件和Json字串的區別,以及Springmvc接受json字串型別。

  JSON物件      有時候在做專案的時候時常將這兩個概念弄混淆,尤其是在使用springmvc的時候,後臺@RequestBody接受的是一個json格式的字串,一定是一個字串。      先介紹一下json物件,首先說到物件的概念,物件的屬性是

springboot使用HttpClient接受json引數轉為物件,再將物件轉為json

將json資料轉為物件模型http://wthrcdn.etouch.cn/weather_mini?city=深圳上面連結可以請求天氣資料,並返回json:{ "data": { "yesterday": { "date":

springmvc接收json引數

json引數有兩種,一種是json物件,另一種是json字串 在前端使用JSON.stringify()傳入json物件即可得到json字串 1.接收json物件 方法一:使用@RequestParam註解,註解裡面要寫上對應的json欄位名。 方法二:

springmvc請路徑引數,springmvc-json-ajax使用,springmvc檔案上傳,springmvc檔案下載,springmvc攔截器(內容較多)

按照操作,絕對都可以實現,親測。。。。。(專案所有檔案和目錄結構全都放上去了) idea工具,建立maven專案 第一步: 放置各種配置檔案: pom.xml <?xml version="1.0" encoding="UTF-8"?> <p

SpringMVC接受引數

1.使用原生的request接受引數 一個連結傳送請求並附帶引數: <a href="${pageContext.request.contextPath}/first?id=1&name=itlike">請求1</a> controller: @R

SpringMVC整體接受前臺引數

一。可以用Map引數去接受,程式碼如下 public ModelAndView mapmvc(@RequestParm Map<String,Object>map,HttpServlet request){ String name=map.get("name"); String age=ma

web--8.restful-4.請求引數springmvc接受

參看部落格:https://blog.csdn.net/chenxiaochan/article/details/73716617 https://blog.csdn.net/chenxiaochan/article/details/52988323 1      請求

springMVC接受前臺json資料

網上各種說json資料的各種好處,但是之前前後端自己一個人做,體會不到json的好, 突然有前端寫頁面,告訴我所有互動資料都是json,很爽啊有木有. 大多數情況下正好接受要麼資料少的時候,把引數放到請求後,要麼資料多正好有實體對應, 就那麼少數情況下,引數也不多,但總拼接

springmvc json引數

1、springmvc 接收引數可以繫結簡單型別也可以繫結複雜物件型別: @RequestMapping(value="/getDetailByGoodsNo", method = RequestMethod.GET, produces = {"application/j

SpringMVC接收JSON請求引數時指定引數對映到Bean中的某個成員屬性的方法

在使用SpringMVC的時候如果前臺傳過來的請求引數與Bean成員變數都採用駝峰式規範(使用@RequestBody接收的JSON請求也一樣),則SpringMVC會自動將請求引數對映到Bean成員變數。 但如果前臺傳過來或者呼叫服務api的json使用下劃線的變數命名方

springMvc--接受日期型別引數處理

這個問題,也即是springMvc如何進行引數型別的轉換 , 以把client傳過來一個String型別,轉換為日期型別為例回到頂部步驟1.controller/** * 接收日期型別引數 * 注意: * springmv

springMVC接受引數以及返回引數

    springMVC將請求傳送到controller時需要接受引數,在controller中處理完業務邏輯以後也會將引數再次轉發給其他頁面,在strtus2中我們會使用到模型驅動,在spring