servlet工作原理java servlet職責(zé)?
servlet職責(zé)?SJava web技術(shù)中Java和JSP有什么關(guān)系?JSP是傳統(tǒng)Java Web開發(fā)的核心組件,主要功能是構(gòu)建視圖。傳統(tǒng)的Java Web開發(fā)方案中有servlets和JavaBe
servlet職責(zé)?
S
Java web技術(shù)中Java和JSP有什么關(guān)系?
JSP是傳統(tǒng)Java Web開發(fā)的核心組件,主要功能是構(gòu)建視圖。
傳統(tǒng)的Java Web開發(fā)方案中有servlets和JavaBeans。Servlets充當(dāng)控制器,而JavaBeans充當(dāng)模型,這是經(jīng)典的Model2解決方案。
JSP能做什么?JSP可以做兩件事,一是展現(xiàn),二是業(yè)務(wù)處理。傳統(tǒng)的Model1解決方案是通過JSP JavaBean實(shí)現(xiàn)的(這是近20年前的解決方案)。簡單來說,JSP既可以做html,也可以做業(yè)務(wù)調(diào)度(Servlet)。雖然有人建議JSP只做表示層的事情,但是JSP完全可以嵌入可執(zhí)行的Java代碼,也就是可以集成表示層邏輯和業(yè)務(wù)邏輯。也正因?yàn)槿绱?,目前大型?xiàng)目中很少見到JSP。
傳統(tǒng)方案的請求流程是用戶 的請求發(fā)送到服務(wù)器,Servlet接收用戶 s要求(數(shù)據(jù)提取、數(shù)據(jù)驗(yàn)證、函數(shù)匹配等。),然后調(diào)用JavaBean的業(yè)務(wù)方法完成業(yè)務(wù)處理,最后跳轉(zhuǎn)到JSP頁面,JSP頁面呈現(xiàn)結(jié)果。
目前這種方法只能在一些小規(guī)模的Web開發(fā)中看到,JSP很少用在一些大型的Web開發(fā)方案中,原因如下:
首先,JSP本質(zhì)上是一個(gè)Servlet。JSP是為了轉(zhuǎn)換成Servlet執(zhí)行時(shí),要求JSP必須在Web容器中,而Web容器往往負(fù)責(zé)業(yè)務(wù)邏輯的處理,對性能影響很大。
第二,動(dòng)態(tài)與靜態(tài)資源的耦合。這也是JSP飽受詬病的主要原因之一。前期是優(yōu)勢,后期是最大的劣勢。
第三,JSP內(nèi)容多,加載慢。前端工程師還需要了解各種JSP標(biāo)簽的使用,這些標(biāo)簽往往容易出錯(cuò)。
目前大規(guī)模的Web開發(fā)方案是前端訪問直接到達(dá)html頁面,html頁面由單獨(dú)的服務(wù)器(比如Nginx)處理,提高了訪問的效率,然后html頁面發(fā)起接口調(diào)用。這樣可以完成靜態(tài)和動(dòng)態(tài)的分類,提高開發(fā)效率,提高服務(wù)器的穩(wěn)定性。
當(dāng)然,對于初學(xué)者來說,學(xué)習(xí)JSP的使用并沒有什么壞處。畢竟大量的項(xiàng)目還是用JSP作為展現(xiàn)端。如果項(xiàng)目的并發(fā)請求數(shù)量不高,采用JSP是非常方便的。
本人使用Java編程多年,目前領(lǐng)導(dǎo)一個(gè)Java開發(fā)團(tuán)隊(duì)(移動(dòng)互聯(lián)網(wǎng),大數(shù)據(jù)方向)。我會(huì)陸續(xù)在頭條寫一些關(guān)于Java開發(fā)的文章。有興趣的朋友可以關(guān)注我的頭條號,相信我會(huì)有所收獲。
如果你有任何關(guān)于Java開發(fā)的問題,也可以咨詢我。
謝謝你