一篇文章帶你瞭解Java SpringMVC返回null

1、回顧一下

大傢有沒有註意到,目前講到的所有 controller 中的方法接收到請求之後,都是有返回值的,返回值主要有 2 種類型:

1、 輸出的是頁面:也就是視圖(會向客戶端輸出頁面),此時方法的返回值可以是 String(視圖名稱)、ModelAndView(頁面中有數據的情況)

2、輸出的是 json 格式的數據:需要用到@ResponseBody 註解

這 2 種情況中,都是 springmvc 來處理返回值的,接受到返回值之後,會調用 response 來進行頁面跳轉或者調用輸出流將 json 格式的數據輸出。

2、思考一個問題

當方法的返回值為 void 或者方法中返回 null 的時候,springmvc 會怎麼處理呢?

比如下面 2 個方法:

@GetMapping("/test1")
public void test(){
}
@GetMapping("/test1")
public Object test(){
 return null;
}

當出現上面這 2 種情況的時候,springmvc 調用這些方法之後,請求就結束瞭,springmvc 會認為在控制器的方法中響應已經被處理過瞭,不需要 springmvc 去處理瞭。

3、springmvc 的處理流程

4、使用場景

當響應結果比較復雜的時候,springmvc 無法處理這些響應結果的時候,我們可以在控制器的方法中使用 response 來主動控制輸出的結果。

比如下載文件、斷點下載文件等比較復雜的響應,此時我們可以在處理器的方法中使用 HttpServletResponse 來自己控制輸出的內容,可以執行更細粒度的操作。

5、總結

到目前我們主要掌握瞭 3 種類型的返回值,工作中基本上最常用的就是這 3 種方式,咱們要掌握好:

第 1 種:返回視圖,即頁面,此時返回值可以是 String(視圖名稱)、或者 ModelAndView

第 2 種:返回 json 格式數據,需在方法上添加 @ResponseBody 註解

第 3 種:方法返回值為 void 或者 return null;此時需要我們在方法中自己通過 HttpServletResponse 對象來主動向客戶端輸出結果。

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: