首頁 > Java > java教程 > 為什麼Spring MVC能回應HTTP請求? (原因詳解)

為什麼Spring MVC能回應HTTP請求? (原因詳解)

不言
發布: 2018-10-22 15:14:52
轉載
2073 人瀏覽過

本篇文章帶給大家的內容是關於為什麼Spring MVC能回應HTTP請求? (原因詳解),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

很多Java面試官喜歡問這個問題:

一個Spring MVC的專案文件裡,開發人員沒有開發自己的Servlet,只透過註解@RequestMapping定義了方法home能回應發送給/mvc/test1的請求。

為什麼Spring MVC能回應HTTP請求? (原因詳解)

使用url http://localhost:9098/MavenSandbox/mvc/test1 測試,能觀察到home方法傳回的字串,背後的工作原理是什麼?

為什麼Spring MVC能回應HTTP請求? (原因詳解)

我們透過自己的研究來回答。在上述程式碼第53行設定斷點。再次造訪url http://localhost:9098/MavenSandbox/mvc/test1,斷點觸發。我們觀察呼叫棧,發現有一個堆疊幀DispatcherServlet.doService(HttpServletRequest, HttpServletResponse)。這個Servlet會負責將我們加了@RequestMapping註解的方法裡return的字串加到HttpServletResponse裡,這就是為什麼我們在瀏覽器裡能看到return字串的原因。

為什麼Spring MVC能回應HTTP請求? (原因詳解)

我們看下DispatcherServlet.doService裡的HttpServletResponse裡是否包含了我們期望的輸出字串。在偵錯器裡展開response變數:

為什麼Spring MVC能回應HTTP請求? (原因詳解)

response->outputBuffer->bb->buff, 在buff裡能看到這個字串陣列緩衝:

為什麼Spring MVC能回應HTTP請求? (原因詳解)

104是H的ASCII碼,101是e的ASCII碼,108是l的ASCII碼,所以證明了response確實包含了開發人員在home方法裡傳回的字串:hello this is a most simple example

最後,DispatcherServlet從哪裡來的?

在Eclipse偵錯器裡發現,它是Spring框架的標準Servlet:

org.springframework.web.servlet.DispatcherServlet

為什麼Spring MVC能回應HTTP請求? (原因詳解)

#這個Servlet正是我們在WEB-INF資料夾的web.xml檔案裡的Servlet。

因此給面試官的答案是:Spring MVC框架仍然需要Servlet,但這個Servlet是由Spring框架提供,無需應用開發人員重複實作。

為什麼Spring MVC能回應HTTP請求? (原因詳解)

#

以上是為什麼Spring MVC能回應HTTP請求? (原因詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板