注解@ResponseBody和@RequestBody


@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);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM