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

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

jsp 自動編譯機(jī)制詳細(xì)介紹

Dec 03, 2016 am 09:40 AM
jsp

jsp 自動編譯機(jī)制詳細(xì)介紹

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

jsp 自動編譯機(jī)制詳細(xì)介紹

上圖是一個形象的示意圖,我們知道Tomcat架構(gòu)中有四個級別的容器,Engine、Host、Context和Wrapper,而jsp編譯對應(yīng)在wrapper級別,所以透過StandardWrapper不斷執(zhí)行任務(wù)去呼叫jasper ,而jasper則不斷檢測校驗本地和遠(yuǎn)端的各種資源,一旦發(fā)現(xiàn)需要重新編譯則進(jì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ā)這個動作的條件就是當(dāng)我們修改了某個jsp檔案後,或是某jsp檔案引入的資源被修改後,都會觸發(fā)重新編譯動作,所以最好的判斷依據(jù)就是某jsp或資源的最後修改時間lastmodified屬性,正常順序是jsp經(jīng)過編譯後產(chǎn)生class文件,把此class檔案的lastmodified屬性設(shè)定成jsp檔案的lastmodified,此時兩個檔案的lastmodified屬性是相同的,當(dāng)我們改變了jsp檔案儲存後,jsp的lastmodified屬性就被置為目前時間,此時透過判斷兩個檔案的lastmodified屬性決定是否重新編譯。重新編譯後jsp與class檔案的lastmodified屬性再次被置為相同。對於引入的資源,記憶體中維護(hù)了上次編譯時引入資源的lastmodified屬性,不斷獲取引入資源的lastmodified屬性並與記憶體中對應(yīng)的lastmodified屬性進(jìn)行比較,同樣可以輕鬆判斷是否需要重新編譯。

最後,對於本地和遠(yuǎn)端資源分別如何檢測?對於本機(jī)資源來說,使用java.io.File類別可以很方便的實作對某JSP檔案或其他檔案的lastmodified屬性讀取。對於遠(yuǎn)端資源,例如jar包,為了方便處理jar包含的屬性,使用java.NET.URL可以很方便操作,它包含了很多協(xié)議,例如常見的jar、file、ftp等協(xié)議,使用相當(dāng)方便,

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

只需三步驟即完成遠(yuǎn)端jar包的讀取且取出最後修改時間。當(dāng)然URL也支援本機(jī)檔案資源的讀取,所以它是很好的資源讀取抽象對象,Tomcat中對引入資源的管理都是使用URL作為操作對象。

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

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


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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

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

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的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又是伺服器端的java應(yīng)用程序,所以jsp是屬於後端的技術(shù)。 JSP部署於網(wǎng)頁伺服器上,可回應(yīng)客戶端所傳送的請求,並依照請求內(nèi)容動態(tài)地產(chǎn)生HTML、XML或其他格式文件的Web網(wǎng)頁,然後傳回給請求者。 JSP技術(shù)以Java為腳本語言,為使用者HTTP請求提供服務(wù),並能與伺服器上的其它Java程式共同處理複雜的業(yè)務(wù)需求。

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

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

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

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

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

實現(xiàn)步驟:1、在JSP頁面中引入JSTL標(biāo)籤庫;2、從資料庫取得資料;3、對資料進(jìn)行分頁處理;4、在頁面中顯示分頁導(dǎo)覽條;5、根據(jù)目前頁碼和每頁顯示數(shù)量,從分頁後的資料中取得對應(yīng)的資料並顯示在頁面上即可。

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

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

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

一、實作分頁查詢的核心sql語句(1)查詢資料庫的記錄總數(shù)的sql語句:selectcount(*)from+(表名);(2)每次查詢的記錄數(shù)的sql語句:其中:0是搜尋的索引,2是每次查找的條數(shù)。 select*from表名limit0,2;二、程式碼實作*上篇寫過這兩個類,DBconnection類:用於取得資料庫連接,Author物件類別。這兩個類別的程式碼點擊連接查看。點選連結(jié)查看DBconnection類別和Author物件類別(1)登入頁面:index.jsp。 Inserttitlehere用戶列

SpringBoot專案如何整合JSP SpringBoot專案如何整合JSP May 12, 2023 pm 07:40 PM

新建好springboot專案以後目錄如下:第一步:在專案的pom檔案中加入設(shè)定jsp所需的jar套件程式碼:org.apache.tomcat.embedtomcat-embed-jasperprovided第二步:在main路徑下新建目錄webapp ,在webapp下新建路徑WEB-INF,在WEB-INF下新建路徑j(luò)sp,在這個路徑下放置我們要使用的jsp檔案第三步:在主設(shè)定檔中設(shè)定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)常面臨選擇合適的伺服器端語言來實現(xiàn)他們的專案需求。在這方面,PHP和JSP是兩種常見的選擇。 JSP是JavaServerPages的縮寫,它是基於Java的伺服器端技術(shù),而PHP則是一種伺服器端腳本語言。本文將探討PHP是否能夠取代JSP的功能,並提供一些具體的程式碼範(fàn)例來幫助讀者更好地

See all articles