這篇文章主要介紹了jsp文件的運(yùn)行方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10余年品質(zhì),值得信賴!當(dāng)客戶端瀏覽器向服務(wù)器發(fā)出訪問(wèn)一個(gè)JSP頁(yè)面的請(qǐng)求時(shí),服務(wù)器根據(jù)該請(qǐng)求加載相應(yīng)的JSP頁(yè)面,并對(duì)該頁(yè)面進(jìn)行編譯,然后執(zhí)行。
頁(yè)面的執(zhí)行過(guò)程如下圖所示:
客戶端通過(guò)瀏覽器向服務(wù)器發(fā)出請(qǐng)求,在該請(qǐng)求中包含了請(qǐng)求的資源的路徑,這樣當(dāng)服務(wù)器接收到該請(qǐng)求后就可以知道被請(qǐng)求的內(nèi)容。
服務(wù)器根據(jù)接收到的客戶端的請(qǐng)求來(lái)加載相應(yīng)的JSP文件。
Web服務(wù)器中的JSP引擎會(huì)將被加載的JSP文件轉(zhuǎn)化為Servlet。
JSP引擎將生成的Servlet代碼編譯成Class文件。
服務(wù)器執(zhí)行這個(gè)Class文件。
最后服務(wù)器將執(zhí)行結(jié)果發(fā)送給瀏覽器進(jìn)行顯示。
從上面的解釋中可以看到,JSP文件被JSP引擎轉(zhuǎn)換后,又被編譯成了Class文件,最終由服務(wù)器通過(guò)執(zhí)行這個(gè)Class文件來(lái)對(duì)客戶端的請(qǐng)求進(jìn)行響應(yīng)。其中第三步和第四步構(gòu)成了JSP處理過(guò)程中的翻譯階段,而第五步則為請(qǐng)求處理階段。
但并不是每次請(qǐng)求都需要重復(fù)進(jìn)行這樣的處理。當(dāng)服務(wù)器第一次接收到對(duì)某個(gè)頁(yè)面的請(qǐng)求時(shí),JSP引擎就開(kāi)始按照上述的處理過(guò)程來(lái)將被請(qǐng)求的JSP文件編譯成Class文件。當(dāng)再次對(duì)該頁(yè)面進(jìn)行請(qǐng)求時(shí),如果該頁(yè)面沒(méi)有任何改動(dòng),服務(wù)器就會(huì)直接調(diào)用對(duì)應(yīng)的Class文件來(lái)執(zhí)行。因此當(dāng)某個(gè)JSP頁(yè)面第一次被請(qǐng)求時(shí),會(huì)有一些延遲,而再次訪問(wèn)時(shí)會(huì)感覺(jué)速度快了很多。如果被請(qǐng)求的頁(yè)面經(jīng)過(guò)了修改,那么服務(wù)器會(huì)重新編譯這個(gè)文件,然后再執(zhí)行。
jsp是怎么運(yùn)行的
**jsp ——JSP引擎轉(zhuǎn)換為Servlet——Java編譯為.class文件——由Java虛擬機(jī)解釋執(zhí)行
Web容器處理JSP文件請(qǐng)求的執(zhí)行過(guò)程主要包括以下4個(gè)部分:
客戶端發(fā)出Request請(qǐng)求
JSP Container 將JSP轉(zhuǎn)譯成Servlet的源代碼
將產(chǎn)生的Servlet源代碼經(jīng)過(guò)編譯后,并加載到內(nèi)存執(zhí)行
把結(jié)果Response(響應(yīng))至客戶端
很多人都會(huì)認(rèn)為JSP的執(zhí)行性能會(huì)和Servlet相差很多,其實(shí)執(zhí)行性能上的差別只在第一次的執(zhí)行。因?yàn)镴SP在執(zhí)行第一次后,會(huì)被編譯成Servlet的類文件,即.class,當(dāng)再重復(fù)調(diào)用執(zhí)行時(shí),就直接執(zhí)行第一次所產(chǎn)生的Servlet,而不再重新把JSP編譯成Servelt。因此,除了第一次的編譯會(huì)花較久的時(shí)間之外,之后JSP和Servlet的執(zhí)行速度就幾乎相同了。
在執(zhí)行JSP網(wǎng)頁(yè)時(shí),通??梢苑譃閮蓚€(gè)時(shí)期:轉(zhuǎn)譯時(shí)期(Translation Time)和請(qǐng)求時(shí)期(Request Time)
轉(zhuǎn)譯時(shí)期:JSP網(wǎng)頁(yè)轉(zhuǎn)移成Servlet類。
請(qǐng)求時(shí)期:Servlet類執(zhí)行后,響應(yīng)結(jié)果至客戶端。
轉(zhuǎn)譯期間做了兩件事情:
轉(zhuǎn)譯時(shí)期:將JSP網(wǎng)頁(yè)轉(zhuǎn)移為Servlet源代碼 .java.
編譯時(shí)期:將Servlet 源代碼 .java編譯成 Servlet類 .class.
當(dāng)JSP網(wǎng)頁(yè)在執(zhí)行時(shí),JSP Container 會(huì)做檢查工作,如果發(fā)現(xiàn)JSP網(wǎng)頁(yè)有更新修改時(shí),JSP Container 才會(huì)再次編譯JSP成 Servlet; 如果JSP沒(méi)有更新時(shí),就直接執(zhí)行前面所產(chǎn)生的Servlet.**
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享jsp文件的運(yùn)行方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!