SpringMVC學習八 @ResponseBody注解


(一)在方法上只有@RequestMapping 時,無論方法返回值是什么認為需要跳轉,代碼實例如下

    @RequestMapping("demo10")
    public People fun10() {
        People pl=new People();
        pl.setName("張三");
        pl.setAge(12);
        return pl;
    }

 

如果不希望跳轉,可以把控制器的返回值設置為void ,或者加上注解@ResponseBody

代碼如下

  @RequestMapping("demo10")
    @ResponseBody public People fun10() {
        People pl=new People();
        pl.setName("張三");
        pl.setAge(12);
        return pl;
    }

(二)@ResponseBody注解的作用

@Responsebody 注解表示該方法的返回的結果直接寫入 HTTP 響應正文(ResponseBody)中,一般在異步獲取數據時使用,通常是在使用 @RequestMapping 后,返回值通常解析為跳轉路徑,加上 @Responsebody 后返回結果不會被解析為跳轉路徑,而是直接寫入HTTP 響應正文中。

(1)如果返回值滿足 key-value 形式(對象或 map),把響應頭的Content-Type屬性設置 application/json;charset=utf-8,並把返回的內容轉換成json字符串格式,把轉換后的內容輸出流的形式響應給客戶端

(2)如果返回值不滿足 key-value,例如返回值為 String,把相應頭的Content-Type設置為 text/html,並把返回值的內容以流的形式直接輸出,但是如果返回內容中有中文,會出現中文亂碼問題,解決辦法就是在@RequestMapping注解中加入produces="text/html;charset=utf-8",produces屬性就是表示響應頭中 Content-Type 取值.

@RequestMapping(value="demo12",produces="text/html;charset=utf-8")
@ResponseBody
public String demo12() throws IOException{
    People p = new People();
    p.setAge(12);
    p.setName("張三");
    return "中文";
}

 

 




免責聲明!

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



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