您好,登錄后才能下訂單哦!
這篇文章主要介紹了jsp文件的運行方法,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
當客戶端瀏覽器向服務器發(fā)出訪問一個JSP頁面的請求時,服務器根據(jù)該請求加載相應的JSP頁面,并對該頁面進行編譯,然后執(zhí)行。
頁面的執(zhí)行過程如下圖所示:
客戶端通過瀏覽器向服務器發(fā)出請求,在該請求中包含了請求的資源的路徑,這樣當服務器接收到該請求后就可以知道被請求的內(nèi)容。
服務器根據(jù)接收到的客戶端的請求來加載相應的JSP文件。
Web服務器中的JSP引擎會將被加載的JSP文件轉(zhuǎn)化為Servlet。
JSP引擎將生成的Servlet代碼編譯成Class文件。
服務器執(zhí)行這個Class文件。
最后服務器將執(zhí)行結(jié)果發(fā)送給瀏覽器進行顯示。
從上面的解釋中可以看到,JSP文件被JSP引擎轉(zhuǎn)換后,又被編譯成了Class文件,最終由服務器通過執(zhí)行這個Class文件來對客戶端的請求進行響應。其中第三步和第四步構(gòu)成了JSP處理過程中的翻譯階段,而第五步則為請求處理階段。
但并不是每次請求都需要重復進行這樣的處理。當服務器第一次接收到對某個頁面的請求時,JSP引擎就開始按照上述的處理過程來將被請求的JSP文件編譯成Class文件。當再次對該頁面進行請求時,如果該頁面沒有任何改動,服務器就會直接調(diào)用對應的Class文件來執(zhí)行。因此當某個JSP頁面第一次被請求時,會有一些延遲,而再次訪問時會感覺速度快了很多。如果被請求的頁面經(jīng)過了修改,那么服務器會重新編譯這個文件,然后再執(zhí)行。
jsp是怎么運行的
**jsp ——JSP引擎轉(zhuǎn)換為Servlet——Java編譯為.class文件——由Java虛擬機解釋執(zhí)行
Web容器處理JSP文件請求的執(zhí)行過程主要包括以下4個部分:
客戶端發(fā)出Request請求
JSP Container 將JSP轉(zhuǎn)譯成Servlet的源代碼
將產(chǎn)生的Servlet源代碼經(jīng)過編譯后,并加載到內(nèi)存執(zhí)行
把結(jié)果Response(響應)至客戶端
很多人都會認為JSP的執(zhí)行性能會和Servlet相差很多,其實執(zhí)行性能上的差別只在第一次的執(zhí)行。因為JSP在執(zhí)行第一次后,會被編譯成Servlet的類文件,即.class,當再重復調(diào)用執(zhí)行時,就直接執(zhí)行第一次所產(chǎn)生的Servlet,而不再重新把JSP編譯成Servelt。因此,除了第一次的編譯會花較久的時間之外,之后JSP和Servlet的執(zhí)行速度就幾乎相同了。
在執(zhí)行JSP網(wǎng)頁時,通??梢苑譃閮蓚€時期:轉(zhuǎn)譯時期(Translation Time)和請求時期(Request Time)
轉(zhuǎn)譯時期:JSP網(wǎng)頁轉(zhuǎn)移成Servlet類。
請求時期:Servlet類執(zhí)行后,響應結(jié)果至客戶端。
轉(zhuǎn)譯期間做了兩件事情:
轉(zhuǎn)譯時期:將JSP網(wǎng)頁轉(zhuǎn)移為Servlet源代碼 .java.
編譯時期:將Servlet 源代碼 .java編譯成 Servlet類 .class.
當JSP網(wǎng)頁在執(zhí)行時,JSP Container 會做檢查工作,如果發(fā)現(xiàn)JSP網(wǎng)頁有更新修改時,JSP Container 才會再次編譯JSP成 Servlet; 如果JSP沒有更新時,就直接執(zhí)行前面所產(chǎn)生的Servlet.**
感謝你能夠認真閱讀完這篇文章,希望小編分享jsp文件的運行方法內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。