servlet可以接收請(qǐng)求和響應(yīng)數(shù)據(jù)的原理是什么?
原理解釋
結(jié)構(gòu)
讓讓我們理解客戶機(jī)-服務(wù)器體系結(jié)構(gòu)。
用戶向Web服務(wù)器發(fā)送HTTP請(qǐng)求;服務(wù)器有一個(gè)包含Servlet的Web容器,它從數(shù)據(jù)庫(kù)收集數(shù)據(jù)并創(chuàng)建響應(yīng);Servlet創(chuàng)建的響應(yīng)通過(guò)HTTP響應(yīng)發(fā)送到客戶端瀏覽器。但問(wèn)題是,如何將Servlet響應(yīng)轉(zhuǎn)換成HTTP響應(yīng)格式呢?因?yàn)閃eb服務(wù)器只工作在HTTP協(xié)議上,所以Web容器將處理從Servlet響應(yīng)到HTTP響應(yīng)的轉(zhuǎn)換。
Web容器
Web容器,也稱為Servlet容器或Servlet引擎,為JavaEE(j2ee)應(yīng)用程序提供運(yùn)行時(shí)環(huán)境,客戶端/用戶只能向服務(wù)器請(qǐng)求靜態(tài)網(wǎng)頁(yè)。如果用戶想閱讀一個(gè)網(wǎng)頁(yè)作為輸入,在Java中使用Web容器。因此,它實(shí)現(xiàn)了ServletAPI和處理HTTP請(qǐng)求所需的服務(wù)。
Web容器通過(guò)調(diào)用Servlet類的service()方法初始化與請(qǐng)求的URL匹配的Servlet;在Web容器協(xié)議內(nèi)的單獨(dú)線程中處理為給定HTTP請(qǐng)求調(diào)用的service()方法。
用戶向Web服務(wù)器發(fā)送HTTP請(qǐng)求;Web服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)給Web容器;Web容器將請(qǐng)求轉(zhuǎn)發(fā)給Servlet以請(qǐng)求對(duì)象的形式;Servlet構(gòu)建一個(gè)響應(yīng)對(duì)象,并將其發(fā)送回Web容器;Web容器將響應(yīng)對(duì)象轉(zhuǎn)換為等效的HTTP響應(yīng),并將其發(fā)送到Web服務(wù)器;Web服務(wù)器通過(guò)HTTP響應(yīng)將響應(yīng)發(fā)送回客戶端。
生命周期
Servlet生命周期包含的方法涵蓋了從創(chuàng)建到銷毀的整個(gè)過(guò)程。以下是生命周期步驟:
Init()只被調(diào)用一次。只有在創(chuàng)建Servlet時(shí)才調(diào)用它,因此它用于一次性初始化。通常情況下,Servlet是在用戶第一次調(diào)用Servlet對(duì)應(yīng)的URL時(shí)創(chuàng)建的,但是你也可以指定服務(wù)器第一次啟動(dòng)時(shí)應(yīng)該加載哪個(gè)Servlet;service()方法是執(zhí)行實(shí)際任務(wù)的主要方法。Web容器(Servlet容器)調(diào)用service()方法來(lái)處理來(lái)自客戶端的請(qǐng)求。每當(dāng)服務(wù)器收到對(duì)Servlet的請(qǐng)求時(shí),Web容器都會(huì)生成一個(gè)新線程并調(diào)用service()。這個(gè)方法檢查HTTP請(qǐng)求的類型(GET、POST、PUT、DELETE等。)并調(diào)用doGet、doPost、doPut、doDelete等方法。酌情;在Servlet的生命周期中,destroy()方法只會(huì)被調(diào)用一次。這個(gè)方法為Servlet提供了一個(gè)暫時(shí)關(guān)閉數(shù)據(jù)庫(kù)連接的機(jī)會(huì)停止后臺(tái)線程并執(zhí)行其他類似的清理任務(wù)。執(zhí)行destroy()方法后,將Servlet對(duì)象標(biāo)記為可用于垃圾收集;最后,Servlet對(duì)象被JVM的垃圾收集器。
如何協(xié)同工作?
首先,到達(dá)服務(wù)器的并發(fā)HTTP請(qǐng)求被轉(zhuǎn)發(fā)到Web容器。Web容器啟動(dòng)Servlet在調(diào)用service()方法之前;然后,Web容器通過(guò)生成多個(gè)線程來(lái)處理多個(gè)請(qǐng)求,每個(gè)線程執(zhí)行Servlet的單個(gè)實(shí)例的servic
web前端的Javascript需要學(xué)什么,按什么流程學(xué)習(xí)呢?
內(nèi)容其實(shí)挺多的。
但也有28個(gè)原則,掌握20%的常用部分,解決80%的日常需求,積累。
學(xué)習(xí)一門(mén)語(yǔ)言,基本上需要看語(yǔ)言的基本數(shù)據(jù)類型,以及每種數(shù)據(jù)類型的常用操作;
接下來(lái)學(xué)習(xí)控制流,ifelse循環(huán)等等。
接下來(lái)學(xué)習(xí)dom操作。通過(guò)DOM操作,你自然會(huì)接觸到其他知識(shí),比如事件等等。
接下來(lái)學(xué)習(xí)BOM,嘗試用js控制瀏覽器行為。
接下來(lái),相信你操作DOM和BOM之后,對(duì)js會(huì)有一定深度的了解。在這個(gè)時(shí)候,讓讓我們看看對(duì)象基礎(chǔ),OOP的內(nèi)容。了解范圍,關(guān)閉部分內(nèi)容。
接下來(lái),學(xué)習(xí)HTML5。
同時(shí),在學(xué)習(xí)的同時(shí),我們需要看看es6的相關(guān)知識(shí),比較一下ES5和ES6的區(qū)別。
最后,你能做到BB嗎?
推薦一本書(shū):犀牛書(shū),叫js圣經(jīng),值得一讀再讀。