1. 程式人生 > >SpringMVC學習八 @ResponseBody註解

SpringMVC學習八 @ResponseBody註解

etag 屬性設置 是什麽 value style body json字符串 utf mvc

(一)在方法上只有@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 "中文";
}



SpringMVC學習八 @ResponseBody註解