spring-@response、@RestController、return的關係

startyangu發表於2018-09-09

為了說明@response、@RestController、return、Modelmap、reponse的關係,先看下面的程式碼

框架springboot,

@RestController
public class Demo {

    @RequestMapping("demo1")

    public String demo1() {

        return "hello!springboot";
    }
}

啟動工程後,瀏覽器訪問http://localhost:8080/demo1

 

過程分析

到我們訪問"http://localhost:8080/demo1",spring前端攔截器為攔截請求,並操作是否有對應的controller,也就是下面這句

@RequestMapping("demo1")

如果有就進入demo1()這個方法,其實這個就是servlet中得url與方法的對映關係

那為什麼我們並沒有指定請求返回的頁面也能夠顯示資訊在頁面上呢,因為這裡有下面這個註解,

@RestController

檢視註解原始碼,發現RestController其實就是@Controller和@ResponseBody兩個註解

@Controller 註解表示將該類交給spring來管理,

@ResponseBody 註解表示返回json,通常用於ajax請求的返回,不需要跳轉到指定的頁面

@Controller
@ResponseBody

如果這裡沒有@ResponseBody 註解 則需要指定 return的頁面名稱,

比如

@Controller
public class Demo {

    @RequestMapping("demo1")

    public String demo1() {

        return "index";
    }
}

這裡沒有@ResponseBody 註解,那麼return "index";  的意思是需要在更路徑下找index的頁面,並返回

還有放在modelMap的情況,待續。。。

 

相關文章