略讀可以只看加粗字體
1.@ResponseBody註解
1.1 作用
將Controller的方法return的對象,通過SpringMVC提供的HttpMessageConverter 轉換器轉換爲JSON,XML等格式後,寫入到HTTP的response對象的body區(通過Response響應給前臺)。
1.2 用法
一般使用在異步(AJAX)獲取數據(json 數據)時 。將對象轉成json等格式的數據return回前臺。
注意:使用 @RequestMapping後,返回值通常解析爲跳轉路徑,但是加上 @ResponseBody 後返回結果不會被解析爲跳轉路徑,而是直接寫入 HTTP response body 中。使用註解之後不會進入conntroller,而是直接將數據寫入到輸入流中,他的效果等同於通過response對象輸出指定格式的數據,如示例1.3.1。
1.3 代碼示例
示例1.3.1
@RequestMapping("/login")
@ResponseBody
// User字段:userName pwd
public User login(User user){
return user;
}
效果等同於如下代碼:
@RequestMapping("/login")
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}
前臺接收到的數據是:’{“userName”:“xxx”,“pwd”:“xxx”}’
示例1.3.2
前臺異步請求:
function loginAction() {
// 獲取用戶輸入的賬號和密碼
var name = $('#count').val();
var password = $('#password').val();
$.ajax({
url : 'account/login.do',
type : 'post',
// data對象中的屬性名要和服務端控制器的參數名一致 login(name, password)
data : {
'name' : name,
'password' : password
},
dataType : 'json',
success : function(result) {
if (result.state == 0) {
// 登錄成功,設置cookie並跳轉edit.html
addCookie('userId', result.data.id);
addCookie('nick', result.data.nick);
location.href = 'edit.html';
} else {
// 登錄失敗
}
}
});
後臺 Controller類中對應的方法:
@RequestMapping("/login.do")
@ResponseBody
public Object login(String name, String password, HttpSession session) {
user = userService.checkLogin(name, password);
session.setAttribute("user", user);
return new JsonResult(user);
}
2. @RequestBody註解
1.1 作用
用於讀取http請求的內容(字符串),通過SpringMVC提供的HttpMessageConverter接口將讀到的內容轉換爲json、xml等格式的數據,並綁定到Controller類方法的形參數上。
1.2 用法
後臺接收http請求的json數據,將json數據轉換爲java對象。
1.3 代碼示例
參考原文:https://www.cnblogs.com/qiankun-site/p/5774325.html
參考原文:https://www.cnblogs.com/daimajun/p/7152970.html
參考原文:https://blog.csdn.net/zmx729618/article/details/78779073