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