摘要:很多面試官喜歡問這個問題一個的項目文件里,開發人員沒有開發自己的,只通過注解定義了方法能響應發向的請求。再次訪問,斷點觸發。因此給面試官的答案為框架仍然需要,但這個是由框架提供,無需應用開發人員重復實現。
很多Java面試官喜歡問這個問題:
一個Spring MVC的項目文件里,開發人員沒有開發自己的Servlet,只通過注解@RequestMapping定義了方法home能響應發向 /mvc/test1的請求。
使用url http://localhost:9098/MavenSandbox/mvc/test1 測試,能觀察到home方法返回的字符串,這背后的工作原理是什么?
我們通過自己的研究來回答。在上述代碼第53行設置斷點。再次訪問url http://localhost:9098/MavenSandbox/mvc/test1,斷點觸發。我們觀察調用棧,發現有一個棧幀DispatcherServlet.doService(HttpServletRequest, HttpServletResponse)。這個Servlet會負責將我們加了@RequestMapping注解的方法里return的字符串加到HttpServletResponse里,這就是為什么我們在瀏覽器里能看到return字符串的原因。
我們看下DispatcherServlet.doService里的HttpServletResponse里是否包含了我們期望的輸出字符串。在調試器里展開response變量:
response->outputBuffer->bb->buff, 在buff里能看到這個字符串數組緩沖:
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
這個Servlet正是我們在WEB-INF文件夾的web.xml文件里的Servlet。
因此給面試官的答案為:Spring MVC框架仍然需要Servlet,但這個Servlet是由Spring框架提供,無需應用開發人員重復實現。
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71810.html
摘要:入門筆記簡介是一種基于的實現了設計模式的請求驅動類型的輕量級框架,是系開源項目中的一個,和配合使用。配置在中需要添加使用的和映射規則。入門較快,而掌握起來相對較難。 SpringMVC入門筆記 1. 簡介 Spring MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架 ,是Spring系開源項目中的一個,和IoC配合使用。通過策略接口,Spring...
摘要:在發出經過身份驗證的請求時,被認為是端點的輸入,因此不會緩存響應。自定義端點對或的操作通過使用或通過自動公開。端點范圍請求范圍請求可以用于請求資源的一部分,當使用或時,操作將返回一個自動支持范圍請求的。 50. 端點 Actuator端點讓你監視和與應用程序交互,Spring Boot包含許多內置的端點,并允許你添加自己的端點。例如,health端點提供基本的應用程序健康信息。 可以啟...
摘要:響應式編程是基于異步和事件驅動的非阻塞程序,只是垂直通過在內啟動少量線程擴展,而不是水平通過集群擴展。三特性常用的生產的特性如下響應式編程模型適用性內嵌容器組件還有對日志消息測試及擴展等支持。 摘要: 原創出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關注和轉載,保留摘要,謝謝! 02:WebFlux 快速入門實踐 文章工程: JDK...
摘要:定制特定異常返回結果根據官方文檔的例子,可以使用和對特定異常返回特定的結果。下面是用瀏覽器和訪問的結果無輸出注意上方表格的錯誤,產生這個的原因前面已經講過。不過需要注意的是,無法通過設定,由或者容器決定里一律是。 github:https://github.com/chanjarste... 參考文檔: Spring Boot 1.5.4.RELEASE Documentation ...
摘要:的入口是,而是這里要指出,和是不同的。以前認為是的一種特殊,這就導致了二者的機制不同,這里就牽涉到和的區別了。開發效率和性能高于。的實現機制有以自己的機制,用的是獨立的方式。 1、Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上SpringMVC...
閱讀 2458·2021-09-27 13:36
閱讀 2163·2019-08-29 18:47
閱讀 2129·2019-08-29 15:21
閱讀 1394·2019-08-29 11:14
閱讀 1979·2019-08-28 18:29
閱讀 1623·2019-08-28 18:04
閱讀 568·2019-08-26 13:58
閱讀 3206·2019-08-26 12:12