SpringMVC返回null是什么意思?| SpringMVC系列第9篇
大家好,我是【路人甲 Java】號(hào)主路人,本文如果對(duì)你有幫助,點(diǎn)個(gè)在看,順便忙轉(zhuǎn)發(fā)一下,非常需要大家的支持,對(duì) java 有興趣的朋友歡迎加我微信 itsoku 交流。
1、回顧一下
目前為止,springmvc 系列中,已經(jīng)介紹了大量 Controller 的用法,大家有沒(méi)有注意到,目前所有 controller 中的方法接收到請(qǐng)求之后,都是有返回值的,返回值主要有 2 種類(lèi)型:
1、 輸出的是頁(yè)面:也就是視圖(會(huì)向客戶(hù)端輸出頁(yè)面),此時(shí)方法的返回值可以是 String(視圖名稱(chēng))、ModelAndView(頁(yè)面中有數(shù)據(jù)的情況)
2、輸出的是 json 格式的數(shù)據(jù):需要用到@ResponseBody 注解
這 2 種情況中,都是 springmvc 來(lái)處理返回值的,接受到返回值之后,會(huì)調(diào)用 response 來(lái)進(jìn)行頁(yè)面跳轉(zhuǎn)或者調(diào)用輸出流將 json 格式的數(shù)據(jù)輸出。
2、思考一個(gè)問(wèn)題
當(dāng)方法的返回值為 void 或者方法中返回 null 的時(shí)候,springmvc 會(huì)怎么處理呢?
比如下面 2 個(gè)方法:
@GetMapping("/test1")
public void test(){
}
@GetMapping("/test1")
public Object test(){
return null;
}
當(dāng)出現(xiàn)上面這 2 種情況的時(shí)候,springmvc 調(diào)用這些方法之后,請(qǐng)求就結(jié)束了,springmvc 會(huì)認(rèn)為在控制器的方法中響應(yīng)已經(jīng)被處理過(guò)了,不需要 springmvc 去處理了。
3、springmvc 的處理流程

4、使用場(chǎng)景
當(dāng)響應(yīng)結(jié)果比較復(fù)雜的時(shí)候,springmvc 無(wú)法處理這些響應(yīng)結(jié)果的時(shí)候,我們可以在控制器的方法中使用 response 來(lái)主動(dòng)控制輸出的結(jié)果。
比如下載文件、斷點(diǎn)下載文件等比較復(fù)雜的響應(yīng),此時(shí)我們可以在處理器的方法中使用 HttpServletResponse 來(lái)自己控制輸出的內(nèi)容,可以執(zhí)行更細(xì)粒度的操作。
5、總結(jié)
到目前我們主要掌握了 3 種類(lèi)型的返回值,工作中基本上最常用的就是這 3 種方式,咱們要掌握好:
第 1 種:返回視圖,即頁(yè)面,此時(shí)返回值可以是 String(視圖名稱(chēng))、或者 ModelAndView
第 2 種:返回 json 格式數(shù)據(jù),需在方法上添加 @ResponseBody 注解
第 3 種:方法返回值為 void 或者 return null;此時(shí)需要我們?cè)诜椒ㄖ凶约和ㄟ^(guò) HttpServletResponse 對(duì)象來(lái)主動(dòng)向客戶(hù)端輸出結(jié)果。
6、案例代碼
git地址:https://gitee.com/javacode2018/springmvc-series
7、SpringMVC 系列
SpringMVC 系列第 1 篇:helloword SpringMVC 系列第 2 篇:@Controller、@RequestMapping SpringMVC 系列第 3 篇:異常高效的一款接口測(cè)試?yán)?/a> SpringMVC 系列第 4 篇:controller 常見(jiàn)的接收參數(shù)的方式 SpringMVC 系列第 5 篇:@RequestBody 大解密,說(shuō)點(diǎn)你不知道的 SpringMVC 系列第 6 篇:上傳文件的 4 種方式,你都會(huì)么?
8、更多好文章
Spring 高手系列(共 56 篇) Java 高并發(fā)系列(共 34 篇) MySql 高手系列(共 27 篇) Maven 高手系列(共 10 篇) Mybatis 系列(共 12 篇) 聊聊 db 和緩存一致性常見(jiàn)的實(shí)現(xiàn)方式 接口冪等性這么重要,它是什么?怎么實(shí)現(xiàn)? 泛型,有點(diǎn)難度,會(huì)讓很多人懵逼,那是因?yàn)槟銢](méi)有看這篇文章!
9、推薦一個(gè)高質(zhì)量的公眾號(hào)
大家平時(shí)在學(xué)習(xí)技術(shù)的過(guò)程中,苦于找不到高質(zhì)量的學(xué)習(xí)資料的,可以關(guān)注一下【Java 充電社】,這個(gè)號(hào)專(zhuān)注于為大家提供高質(zhì)量的學(xué)習(xí)資源,已發(fā)布了大量高質(zhì)量的學(xué)習(xí)視頻、及資源,大家可以關(guān)注下。
