国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 PHP開發(fā) jsp 自動編譯機制詳細介紹

jsp 自動編譯機制詳細介紹

Dec 03, 2016 am 09:40 AM
jsp

jsp 自動編譯機制詳細介紹

總的來說,Jasper的自動檢測實現(xiàn)的機制比較簡單,依靠某后臺線程不斷檢測JSP文件與編譯后的class文件的最后修改時間是否相同,若相同則認為沒有改動,但倘若不同則需要重新編譯。實際上由于在Tomcat部署的項目的JSP可能引入了其他頁面,或者引入了其他jar包,而且這些資源都可能是遠程的資源,所以實際處理會比較復(fù)雜,同樣要遍歷檢測這些引入的不同資源是否做了修改。

22.png

上圖是一個形象的示意圖,我們知道Tomcat架構(gòu)中有四個級別的容器,Engine、Host、Context和Wrapper,而jsp編譯對應(yīng)在wrapper級別,所以通過StandardWrapper不斷執(zhí)行任務(wù)去調(diào)用jasper,而jasper則不斷檢測校驗本地和遠程的各種資源,一旦發(fā)現(xiàn)需要重新編譯則進行重編譯。往下看看具體如何實現(xiàn)。

首先,需要一個后臺執(zhí)行線程,Tomcat中有專門的一條線程處理不同容器的background任務(wù),想在不同的容器中執(zhí)行某些后臺任務(wù)只需重寫backgroundProcess方法即可實現(xiàn),由于JspServlet對應(yīng)于Wrapper級別,所以要在StandardWrapper中重寫backgroundProcess,它會調(diào)用實現(xiàn)了PeriodicEventListener接口的Servlet,其中JspServlet就實現(xiàn)了PeriodicEventListener接口,此接口只有一個periodicEvent方法,具體的檢測邏輯在此方法中實現(xiàn)即可。

其次,檢測判斷重新編譯的根據(jù)是什么?重新編譯就是再次把jsp變成Java再變成class,而觸發(fā)這個動作的條件就是當我們修改了某個jsp文件后,或者某jsp文件引入的資源被修改后,都將觸發(fā)重新編譯動作,所以最好的判斷依據(jù)就是某jsp或資源的最后修改時間lastmodified屬性,正常順序是jsp經(jīng)過編譯后生成class文件,把此class文件的lastmodified屬性設(shè)置成jsp文件的lastmodified,此時兩個文件的lastmodified屬性是相同的,當我們改了jsp文件保存后,jsp的lastmodified屬性就被置為當前時間,此時通過判斷兩個文件的lastmodified屬性決定是否重新編譯。重新編譯后jsp與class文件的lastmodified屬性再次被置為相同。對于引入的資源,內(nèi)存中維護了上次編譯時引入資源的lastmodified屬性,不斷獲取引入資源的lastmodified屬性并與內(nèi)存中對應(yīng)的lastmodified屬性進行比較,同樣可以很容易判斷是否需要重新編譯。

最后,對于本地和遠程資源分別如何檢測?對于本地資源來說,使用java.io.File類可以很方便的實現(xiàn)對某JSP文件或其他文件的lastmodified屬性讀取。對于遠程資源,比如jar包,為了方便處理jar包含的屬性,使用java.NET.URL可以很方便操作,它包含了很多協(xié)議,例如常見的jar、file、ftp等協(xié)議,使用相當方便,

URL includeUrl = new URL("jar:http://hostname/third.jar!/");
URLConnection iuc = includeUrl.openConnection();
long includeLastModified = ((JarURLConnection) iuc).getJarEntry().getTime();

只需三步即完成對遠程jar包的讀取且取出最后修改時間。當然URL還支持本地文件資源的讀取,所以它是很好的資源讀取抽象對象,Tomcat中對引入資源的管理都是使用URL作為操作對象。

本小節(jié)探討了Jasper自動檢測機制的實現(xiàn),自動檢測機制給我們的開發(fā)帶來了很好的體驗,我們不必自己修改了jsp后自己去執(zhí)行編譯操作,而是tomcat通過jasper幫我們定時檢測編譯操作。

感謝閱讀,希望能幫助到大家


本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

jsp是屬于前端還是后端 jsp是屬于前端還是后端 Jan 28, 2023 pm 06:23 PM

jsp屬于后端。jsp的本質(zhì)是一種servlet,而servlet又是服務(wù)器端的java應(yīng)用程序,所以jsp是屬于后端的技術(shù)。JSP部署于網(wǎng)絡(luò)服務(wù)器上,可響應(yīng)客戶端發(fā)送的請求,并根據(jù)請求內(nèi)容動態(tài)地生成HTML、XML或其他格式文檔的Web網(wǎng)頁,然后返回給請求者。JSP技術(shù)以Java作為腳本語言,為用戶HTTP請求提供服務(wù),并能與服務(wù)器上的其它Java程序共同處理復(fù)雜的業(yè)務(wù)需求。

jsp和html區(qū)別在哪 jsp和html區(qū)別在哪 Jan 09, 2024 am 10:46 AM

jsp和html區(qū)別:1、運行機制;2、用途;3、與Java的關(guān)系;4、功能;5、與后端的關(guān)系;6、速度;7、可維護性和擴展性;8、學(xué)習(xí)和使用的難易程度;9、文件后綴和識別工具;10、社區(qū)和支持;11、安全性。詳細介紹:1、運行機制,HTML是一種標記語言,主要用于描述和定義網(wǎng)頁的內(nèi)容,它運行在客戶端,由瀏覽器解釋執(zhí)行,JSP是一種動態(tài)網(wǎng)頁技術(shù),運行在服務(wù)器端等等。

JSP能否被PHP取代? JSP能否被PHP取代? Mar 21, 2024 am 11:03 AM

JSP能否被PHP取代?JSP(JavaServerPages)和PHP(HypertextPreprocessor)都是常用的服務(wù)器端腳本語言,用于動態(tài)生成網(wǎng)頁內(nèi)容。雖然它們各有特點和優(yōu)勢,但在實際應(yīng)用中,是否可以完全取代對方呢?本文將分析兩者的優(yōu)缺點,并通過具體的代碼示例進行比較。首先,我們來看一下JSP和PHP各自的特點。JSP是一種基于Java的

jsp分頁功能怎么實現(xiàn) jsp分頁功能怎么實現(xiàn) Mar 04, 2024 pm 04:40 PM

實現(xiàn)步驟:1、在JSP頁面中引入JSTL標簽庫;2、從數(shù)據(jù)庫中獲取數(shù)據(jù);3、對數(shù)據(jù)進行分頁處理;4、在頁面中顯示分頁導(dǎo)航條;5、根據(jù)當前頁碼和每頁顯示數(shù)量,從分頁后的數(shù)據(jù)中獲取對應(yīng)的數(shù)據(jù)并顯示在頁面上即可。

jsp是什么格式的文件 jsp是什么格式的文件 Jan 24, 2024 pm 04:01 PM

?JSP是一種動態(tài)網(wǎng)頁技術(shù)標準,其文件格式是在傳統(tǒng)的網(wǎng)頁HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。

如何用jsp+mysql實現(xiàn)網(wǎng)頁的分頁查詢 如何用jsp+mysql實現(xiàn)網(wǎng)頁的分頁查詢 May 30, 2023 pm 03:58 PM

一、實現(xiàn)分頁查詢的核心sql語句(1)查詢數(shù)據(jù)庫的記錄總數(shù)的sql語句:selectcount(*)from+(表名);(2)每次查詢的記錄數(shù)的sql語句:其中:0是搜索的索引,2是每次查找的條數(shù)。select*from表名limit0,2;二、代碼實現(xiàn)*上篇寫過這兩個類,DBconnection類:用于獲取數(shù)據(jù)庫連接,Author對象類。這兩個類的代碼點擊連接查看。點擊鏈接查看DBconnection類和Author對象類(1)登錄頁面:index.jsp。Inserttitlehere用戶列

SpringBoot項目如何整合JSP SpringBoot項目如何整合JSP May 12, 2023 pm 07:40 PM

新建好springboot項目以后目錄如下:第一步:在項目的pom文件中加入配置jsp所需要的jar包代碼:org.apache.tomcat.embedtomcat-embed-jasperprovided第二步:在main路徑下新建目錄webapp,在webapp下新建路徑WEB-INF,在WEB-INF下新建路徑j(luò)sp,在這個路徑下放置我們要使用的jsp文件第三步:在主配置文件中配置jsp文件的訪問路徑和后綴代碼:spring.mvc.view.prefix=/WEB-INF/jsp/sp

PHP能否替換JSP的功能? PHP能否替換JSP的功能? Mar 20, 2024 pm 03:45 PM

PHP能否替換JSP的功能?隨著Web開發(fā)技術(shù)的不斷發(fā)展,開發(fā)人員經(jīng)常面臨選擇合適的服務(wù)器端語言來實現(xiàn)他們的項目需求。在這方面,PHP和JSP是兩種常見的選擇。JSP是JavaServerPages的縮寫,它是基于Java的服務(wù)器端技術(shù),而PHP則是一種服務(wù)器端腳本語言。本文將探討PHP是否能夠替代JSP的功能,并且提供一些具體的代碼示例來幫助讀者更好地

See all articles