@RequestMapping("url"),這里的url是請求路徑的一部分,一般作用在controller的方法上,作為請求的映射地址。
@ResponseBody是作用在方法上,它表示該方法的返回結果直接寫入HTTP response body中,一般在異步獲取數據時使用【AJAX】,在使用@RequestMapping后,返回值通常解析為跳轉路徑,但是加上@ResponseBody后返回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body 中。比如異步獲取json數據,加上@ResponseBody后,會直接返回json數據,@RquestBody將HTTP請求正文插入方法中,使用適合的HttpMessageConverter將請求體寫入某個對象。
舉個例子:
function loginAction(){
//獲取用戶輸入的賬號和密碼
var name=$("#name").val();
var pwd=$("#pwd").val();
$.ajax({
url:"account/login",
type:"post",
data:{
'name':name,
'pwd':pwd
},
dataType:"json",
success:function(res){
if(res.data==0){
addCookie("userid",result.data.id);
addCookie("nick",result.data.nick);
location.href="edit.html";
}else{
var msg=result.message;
$("#sig_in").next().html(msg);
$("#sig_in").next().css("color","red");
}
},
error:function(e){
alert("異常");
}
});
$("#pwd").val("");
}
后台controller中對應方法:
@RequestMapping("/login") @ResponseBody public Object login(String name,String pwd,HttpSession session){ user=userServce.checkLogin(name,pwd); session.setAttribute("user",user); return new JsonResult(user); }
@RequestBody
它的作用在形參列表上,用於將前台發送過來固定格式的數據(xml格式或json等)封裝為對應的JavaBean對象,封裝時使用到的一個對象是系統默認配置的HttpMessageConverter進行解析,然后封裝到形參上。
比如上面的登錄方法可以改為:
@RequestMapping("/login") @ResponseBody public Object login(@RequestBody User loginUser,HttpSession session){ user=userServce.checkLogin(loginUser); session.setAttribute("user",user); return new JsonResult(user); }