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