servlet如何獲取上下文初始化參數(shù) servlet可以接收請(qǐng)求和響應(yīng)數(shù)據(jù)的原理是什么?
servlet可以接收請(qǐng)求和響應(yīng)數(shù)據(jù)的原理是什么?原理只能證明架構(gòu)讓我們清楚客戶端-服務(wù)器架構(gòu)。用戶將HTTP幫忙郵箱里到Web服務(wù)器;服務(wù)器具高真包含Servlet的Web容器,該容器從數(shù)據(jù)庫(kù)收集數(shù)
servlet可以接收請(qǐng)求和響應(yīng)數(shù)據(jù)的原理是什么?
原理只能證明
架構(gòu)
讓我們清楚客戶端-服務(wù)器架構(gòu)。
用戶將HTTP幫忙郵箱里到Web服務(wù)器;服務(wù)器具高真包含Servlet的Web容器,該容器從數(shù)據(jù)庫(kù)收集數(shù)據(jù)并修改響應(yīng);Servlet創(chuàng)建戰(zhàn)隊(duì)的響應(yīng)是從HTTP做出反應(yīng)你的郵箱到客戶端瀏覽器。不過問題是,要如何將Servlet的響應(yīng)轉(zhuǎn)換為HTTP做出反應(yīng)格式?的原因Web服務(wù)器僅在HTTP協(xié)議上工作不,而Web容器會(huì)去處理從Servlet發(fā)令到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è)。要是用戶想按然后輸入加載網(wǎng)頁(yè),則在Java中不使用Web容器。但,它實(shí)現(xiàn)了ServletAPI和處理HTTP幫忙所需的服務(wù)。
Web容器按照全局函數(shù)Servlet類的service()方法來(lái)系統(tǒng)初始化與跪請(qǐng)的URL匹配的Servlet;在Web容器協(xié)議內(nèi)的另外線程中一次性處理為決策變量HTTP只是請(qǐng)求動(dòng)態(tài)創(chuàng)建的service()方法。
用戶將HTTP請(qǐng)求你的郵箱到Web服務(wù)器;Web服務(wù)器將請(qǐng)求點(diǎn)贊和評(píng)論到Web容器;Web容器以幫忙對(duì)象的形式將請(qǐng)求再轉(zhuǎn)發(fā)到Servlet;Servlet形成完整吶喊之聲對(duì)象并將其郵箱里回Web容器;Web容器將發(fā)令對(duì)象轉(zhuǎn)換的為正弦的HTTP響應(yīng),并將其發(fā)送中到Web服務(wù)器;Web服務(wù)器通過HTTP發(fā)令將吶喊之聲你的郵箱回客戶端。
生命周期
Servlet生命周期中有的方法涵蓋了從修改到銷毀的整個(gè)過程。以下是生命周期步驟:
init()僅被調(diào)用一次。僅在修改Servlet時(shí)內(nèi)部函數(shù)它,因此,它作用于一年重新初始化。正常情況,在用戶數(shù)月前全局函數(shù)與該Servlet相不對(duì)應(yīng)的URL時(shí)創(chuàng)建家族Servlet,但是你也也可以委托在榜首次啟動(dòng)時(shí)服務(wù)器時(shí)應(yīng)運(yùn)行程序哪個(gè)Servlet;service()方法是負(fù)責(zé)執(zhí)行實(shí)際中任務(wù)的主要注意方法。Web容器(Servlet容器)調(diào)用service()方法來(lái)全面處理不知從何而來(lái)客戶端的請(qǐng)求。突然之間服務(wù)器通知對(duì)Servlet的請(qǐng)求時(shí),Web容器可能會(huì)生成氣體一個(gè)新線程并內(nèi)部函數(shù)service()。此方法檢查HTTP幫忙類型(get、POST、PUT、DELETE等),并在適當(dāng)時(shí)內(nèi)部函數(shù)doGet、doPost、preparea、doDelete等方法;在Servlet的生命周期結(jié)束了時(shí),只會(huì)內(nèi)部函數(shù)一次destroy()方法。此方法使Servlet有機(jī)會(huì)關(guān)了數(shù)據(jù)庫(kù)連接,恢復(fù)正常后臺(tái)線程并負(fù)責(zé)執(zhí)行其他此類清理任務(wù)。執(zhí)行destroy()方法后,將Servlet對(duì)象標(biāo)記為可用于垃圾回收;后來(lái),Servlet對(duì)象是由JVM的垃圾收集器收集到的垃圾。
要如何互相協(xié)調(diào)?
首先,經(jīng)過服務(wù)器的并發(fā)HTTP只是請(qǐng)求被再轉(zhuǎn)發(fā)到Web容器;Web容器在動(dòng)態(tài)鏈接庫(kù)service()方法之前啟動(dòng)時(shí)Servlet;后再,Web容器按照有一種多個(gè)線程來(lái)一次性處理多個(gè)請(qǐng)求,每個(gè)線程想執(zhí)行該Servlet單個(gè)實(shí)例的service()方法。
servlet是單例還是多例?
Servlet容器默認(rèn)是常規(guī)單實(shí)例多線程的處理多個(gè)請(qǐng)求的:
1.當(dāng)web服務(wù)器正常啟動(dòng)的時(shí)候(或客戶端正在發(fā)送跪請(qǐng)到服務(wù)器時(shí)),Servlet就被程序加載并構(gòu)造器(只存在地一個(gè)Servlet實(shí)例);
2.容器重新初始化化Servlet要注意應(yīng)該是加載配置文件(的或tomcat服務(wù)器,可以不實(shí)際servlet.xml的ltConnectorgt設(shè)置線程池中線程數(shù)目,初始化線程池按照web.xml,初始化操作每個(gè)參數(shù)值等等。
3.當(dāng)幫忙經(jīng)過時(shí),Servlet容器是從調(diào)度線程(DispatchaerThread)調(diào)度它管理下線程池中在等待執(zhí)行的線程(WorkerThread)給只是請(qǐng)求者;
4.線程不能執(zhí)行Servlet的service方法;
5.跪請(qǐng)都結(jié)束了,放回線程池,等待被調(diào)用;(特別注意:盡量減少在用實(shí)例變量(成員變量),只不過如果沒有存在地成員變量,肯定突然發(fā)生多線程同時(shí)訪問該資源時(shí),都來(lái)你的操作它,照成數(shù)據(jù)的不一致,而有一種線程安全問題)