搜尋
首頁Javajava教程jsp檔案怎麼運行

jsp檔案怎麼運行

May 15, 2019 pm 01:11 PM
jsp

jsp檔案的運作方法:首先客戶端發出Request請求,JSP Container將JSP轉譯成Servlet的原始碼;然後將產生的Servlet原始碼進行編譯,並載入到記憶體執行;最後把結果Response至客戶端即可。

jsp檔案怎麼運行

當客戶端瀏覽器向伺服器發出存取一個JSP頁面的請求時,伺服器會根據該請求載入對應的JSP頁面,並對該頁面進行編譯,然後執行。

推薦課程:Java教學

頁面的執行過程如下圖所示:

jsp檔案怎麼運行

客戶端透過瀏覽器向伺服器發出請求,在該請求中包含了請求的資源的路徑,這樣當伺服器接收到該請求後就可以知道被要求的內容。

伺服器根據接收到的客戶端的請求來載入對應的JSP檔案。

Web伺服器中的JSP引擎會將被載入的JSP檔案轉換為Servlet。

JSP引擎將產生的Servlet程式碼編譯成Class檔案。

伺服器執行這個Class檔。

最後伺服器將執行結果傳送給瀏覽器進行顯示。

從上面的解釋可以看到,JSP文件被JSP引擎轉換後,又被編譯成了Class文件,最後由伺服器透過執行這個Class文件來回應客戶端的請求。其中第三步和第四步構成了JSP處理過程中的翻譯階段,而第五步則為請求處理階段。

但並不是每次請求都需要重複進行這樣的處理。當伺服器第一次接收到對某個頁面的請求時,JSP引擎就開始依照上述的處理過程將被要求的JSP檔案編譯成Class檔案。當再次對該頁面進行請求時,如果該頁面沒有任何改動,伺服器就會直接呼叫對應的Class檔案來執行。因此當某個JSP頁面第一次被要求時,會有一些延遲,而再次造訪時會感覺速度快了很多。如果被要求的頁面經過了修改,那麼伺服器會重新編譯這個文件,然後再執行。

jsp是怎麼運作的

**jsp ——JSP引擎轉換為Servlet——Java編譯為.class檔案——由Java虛擬機解釋執行

Web容器處理JSP檔案請求的執行過程主要包含以下4個部分:

客戶端發出Request請求

JSP Container 將JSP轉譯成Servlet的原始碼

將產生的Servlet原始碼經過編譯後,並載入到記憶體執行

#把結果Response(回應)到客戶端

很多人會認為JSP的執行效能會和Servlet相差很多,其實執行效能上的差異只在第一次的執行。因為JSP在執行第一次後,會被編譯成Servlet的類別文件,即.class,當再重複呼叫執行時,就直接執行第一次所產生的Servlet,而不再重新把JSP編譯成Servelt。因此,除了第一次的編譯會花較長的時間之外,之後JSP和Servlet的執行速度就幾乎相同了。

在執行JSP網頁時,通常可以分為兩個時期:轉譯期間(Translation Time)與請求期間(Request Time)

轉譯期間:JSP網頁轉移成Servlet類別。

請求時期:Servlet類別執行後,回應結果至客戶端。

轉譯期間做了兩件事:

轉譯時期:將JSP網頁轉移為Servlet原始碼.java.

編譯時期:將Servlet 原始碼.java編譯成Servlet類別.class.

當JSP網頁在執行時,JSP Container 會做檢查工作,如果發現JSP網頁有更新修改時,JSP Container 才會再次編譯JSP成Servlet; 如果JSP沒有更新時,就直接執行前面所產生的Servlet.**

以上是jsp檔案怎麼運行的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

如何將Java的RMI(遠程方法調用)用於分佈式計算?如何將Java的RMI(遠程方法調用)用於分佈式計算?Mar 11, 2025 pm 05:53 PM

本文解釋了用於構建分佈式應用程序的Java的遠程方法調用(RMI)。 它詳細介紹了接口定義,實現,註冊表設置和客戶端調用,以解決網絡問題和安全性等挑戰。

如何使用Java的插座API進行網絡通信?如何使用Java的插座API進行網絡通信?Mar 11, 2025 pm 05:53 PM

本文詳細介紹了用於網絡通信的Java的套接字API,涵蓋了客戶服務器設置,數據處理和關鍵考慮因素,例如資源管理,錯誤處理和安全性。 它還探索了性能優化技術,我

如何在Java中創建自定義網絡協議?如何在Java中創建自定義網絡協議?Mar 11, 2025 pm 05:52 PM

本文詳細介紹了創建自定義Java網絡協議。 它涵蓋協議定義(數據結構,框架,錯誤處理,版本控制),實現(使用插座),數據序列化和最佳實踐(效率,安全性,維護

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。