摘要:引言剛考完期末,再也不用考試?yán)沧罱鼘W(xué)習(xí)了慕課網(wǎng)的實(shí)戰(zhàn)課手寫(xiě),劍指開(kāi)源框架靈魂。最近將本課程和看透結(jié)合起來(lái)學(xué)習(xí),感覺(jué)受益匪淺,同時(shí),糾正了我之前對(duì)的一些誤解。誤解洪荒時(shí)代的當(dāng)年,開(kāi)發(fā)都需要手動(dòng)去實(shí)現(xiàn)。為了解決太多的問(wèn)題,引入了,進(jìn)行統(tǒng)一調(diào)度。
引言
剛考完期末,再也不用考試?yán)玻。。?/p>
最近學(xué)習(xí)了慕課網(wǎng)的實(shí)戰(zhàn)課《手寫(xiě)SpringMVC,劍指開(kāi)源框架靈魂》。
spring-boot太過(guò)智能了,智能到我們完全不用去管底層是如何實(shí)現(xiàn)的,都可以很輕易地去開(kāi)發(fā)一款web應(yīng)用。
最近將本課程和《看透Spring MVC》結(jié)合起來(lái)學(xué)習(xí),感覺(jué)受益匪淺,同時(shí),糾正了我之前對(duì)SpringMVC的一些誤解。
誤解 洪荒時(shí)代的Java Web當(dāng)年,開(kāi)發(fā)Java Web都需要手動(dòng)去實(shí)現(xiàn)Servlet。
public class TestServlet implements Servlet { @Override public void init(ServletConfig config) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }
Servlet中規(guī)定了五個(gè)方法。
init初始化方法,service業(yè)務(wù)邏輯方法,destroy銷毀方法。
在web.xml文件中配置路由到Servlet之間的映射,也就是說(shuō),我們沒(méi)開(kāi)發(fā)一個(gè)接口,都需要寫(xiě)一個(gè)Servlet,然后配一遍xml。
test TestServlet test /test
所以就導(dǎo)致了項(xiàng)目中會(huì)有很多的Servlet,以及極其冗長(zhǎng)的xml配置文件。
執(zhí)行流程整體執(zhí)行流程就如下圖所示:
當(dāng)來(lái)請(qǐng)求時(shí),客戶端和服務(wù)端的Tomcat建立連接,Tomcat去找web.xml,然后根據(jù)其中定義的url到Servlet的映射,去初始化相應(yīng)的Servlet,然后調(diào)用service方法處理業(yè)務(wù),返回。
最開(kāi)始對(duì)SpringMVC的多線程不是很理解,現(xiàn)在終于明白了,多線程其實(shí)并不是SpringMVC管理的,而是當(dāng)有一個(gè)新的客戶端建立連接時(shí),Tomcat就會(huì)新建一個(gè)線程去調(diào)用Servlet的方法處理請(qǐng)求,所以多線程其實(shí)是Tomcat的多線程。
SpringMVCSpringMVC為了解決Servlet太多的問(wèn)題,引入了DispatcherServlet,進(jìn)行統(tǒng)一調(diào)度。
SpringMVC定義DispatcherServlet接管/,即所有請(qǐng)求,內(nèi)部再將請(qǐng)求分發(fā)給各個(gè)HandlerMapping,通俗來(lái)說(shuō)就是控制器中的方法。
總結(jié)好讀書(shū),不求甚解。 ---晉·陶淵明《五柳先生傳》做開(kāi)發(fā),不可不求甚解。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/75176.html
摘要:起步的成功一個(gè)原因是它的可讀性,代碼清晰易懂,更容易被人類所理解,但有時(shí)可讀性會(huì)產(chǎn)生誤解。的誤解但是如果你嘗試這個(gè)判斷不見(jiàn)得管用。用來(lái)檢查左側(cè)和右側(cè)是否是完全相同的對(duì)象。每種語(yǔ)言的結(jié)構(gòu)都存在一些出乎意料的使用。 起步 Python 的成功一個(gè)原因是它的可讀性,代碼清晰易懂,更容易被人類所理解,但有時(shí)可讀性會(huì)產(chǎn)生誤解。 假如要判斷一個(gè)變量是不是 17,那可以: if x is 17: x...
摘要:三十而立時(shí),無(wú)房單身郎。女生也經(jīng)常找他修電腦,只要有他在,所有的電子產(chǎn)品都能很快恢復(fù)原貌。 ??年少太輕狂,獨(dú)闖IT行。愁絲根根落,眼圈黑茫茫。bug數(shù)萬(wàn)種,技能要...
摘要:不過(guò)在出來(lái)之后支持異步了,可以把業(yè)務(wù)操作放到獨(dú)立的線程池里面去,這樣可以盡快釋放線程,本身也支持異步了,本篇文章將帶你如何使用的異步特性來(lái)改造優(yōu)化其性能。 ? 我們知道spring-cloud-zuul是依賴springMVC來(lái)注冊(cè)路由的,而springMVC又是在建立在servlet之上的(這里微服務(wù)專家楊波老師寫(xiě)過(guò)一篇文章講述其網(wǎng)絡(luò)模型,可以參考看看),在servlet3.0...
摘要:概念理解重要特性雙向綁定和之間無(wú)耦合通過(guò)操作利用提供的機(jī)制自動(dòng)實(shí)現(xiàn)的更新。實(shí)現(xiàn)說(shuō)明解析不包括模板指令等因?yàn)槟0寰幾g解析等和本文核心主題無(wú)關(guān)這些僅僅是基于雙向綁定的應(yīng)用場(chǎng)景。雙向綁定的核心是實(shí)現(xiàn)。 引言 最近在看vue的源碼,有些感觸,下面闡述一些個(gè)人理解。之前寫(xiě)過(guò)一篇文章,是講述關(guān)于觀察者模式的,與本文主旨有關(guān),需要的朋友可以看一下。 vue的核心是mvvm,vue2又增加了虛擬dom...
閱讀 734·2019-08-30 15:44
閱讀 1466·2019-08-30 11:02
閱讀 3054·2019-08-29 18:42
閱讀 3572·2019-08-29 16:16
閱讀 1804·2019-08-26 13:55
閱讀 1825·2019-08-26 13:45
閱讀 2442·2019-08-26 11:43
閱讀 3334·2019-08-26 10:32