最近在學習SpringMVC與前端進行資料互動,其中比較常用的就是使用json,在學習期間遇到不少問題,特記錄一下。
1.準備工作(jar包的引入)
1.1 jackson包
1.2 jquery包
1.3 spring的核心包
2.spring的配置
在springmvc中想要使用ajax傳遞json與背景互動需要配置
<mvc:annotation-driven/>
<mvc:resources location="/js/" mapping="/js/**"/>
第一個是實作注解開啟,用于json轉換器的開啟
第二個是配置spring對靜态資源的通路處理,否則該資源也會被DispatcherServlet攔截。(開始時我也沒有注意,發現調用到jq檔案時總是報404錯誤)
3.json傳遞的方式
3.1 傳遞json串
<!-- 前端頁面代碼,定義兩個from表單,第一個送出資料到背景
然後背景處理傳回到第二個表單-->
<from> <input type="text" id="u1" name="u1" />
<br />
<input type="text" id="p1" name="p1" />
<br />
<input type="button" value="送出" onclick="returnJson()" /> </from>
<br />
<from> <input type="text" id="u2" name="u2" />
<br />
<input type="text" id="p2" name="p2" /> </from>
對應的js代碼
function returnJson() {
var u1 = $("#u1").val();
var p1 = $("#p1").val();
var user = {
username : $("#u1").val(),
password : $("#p1").val()
};
alert(user.username);
$.ajax({
type : 'post',
url : '${pageContext.request.contextPath}/returnjson',
contentType : 'application/json;charset=utf-8',
data : JSON.stringify(user),
success : function(data) {
$("#u2").val(data.username);
$("#p2").val(data.password);
}
})
}
其中stringify()用于從一個對象解析出字元串,如
var a = {a:1,b:2}
結果:
JSON.stringify(a)
“{“a”:1,”b”:2}”
背景的 Controller代碼
@Controller
public class jsonAction {
@RequestMapping("/returnjson")
@ResponseBody
public User returnJson(@RequestBody User user)
{
String username=user.getUsername();
String password=user.getPassword();
System.out.println(username+" "+password);
user.setUsername(username+"c");
user.setPassword(password+"c");
return user;
}
}
需要寫一個User的bean實體。
其中
@RequestMapping:url的映射處理
@ResponseBody :将java對象轉化為json串,這樣前端才能解析
@RequestBody :将json串轉化為java對象,這樣才能以bean處理
實際效果圖:
3.2以key/value的格式
第一種:
{"username":"reader001","password":"psw001"}
第二種:
其中第一種的傳遞與以json串的傳遞處理方式一樣
第二種的話就不需要@RequestBody,因為它不是json格式。但是傳回還是需要使用@ResponseBody進行轉換。
需要注意的就是
1. 靜态資源的配置
2. json.stringify()
3. @ResponseBody 和 @RequestBody的使用
以上參考部落格:http://blog.csdn.net/eson_15/article/details/51742864