天天看點

tomcat的work目錄作用

最近發現,很多網友喜歡把tomcat的work目錄裡的東西叫做緩存,其實那不是很恰當,work目錄隻是tomcat的工作目錄,也就是tomcat把jsp轉換為class檔案的工作目錄,這也正是為什麼它叫work目錄而不是cache目錄的原因。

  jsp,tomcat的工作原理是當浏覽器通路某個jsp頁面時,tomcat會在work目錄裡把這個jsp頁面轉換成.java檔案,比如将index.jsp轉換為index_jsp.java檔案,而後編譯為index_jsp.class檔案,最後tomcat容器通過ClassLoader類把這個index_jsp.class類裝載入記憶體,進行響應用戶端的工作。

  tomcat會定時稍描容器内的jsp檔案,讀取每個檔案的屬性,當發現某個jsp檔案發生改變時(檔案的最後修改時間與上次稍描時不相同時),tomcat會重新轉換、編譯這個jsp檔案。但是tomcat的稍描是定時的不是實時的,這也正是為什麼jsp檔案修改後需要幾分鐘的時間來等修改過的jsp生效。當然為了即刻生效,很多老前輩都會建議在修改jsp頁面後立即清除work目錄裡的檔案。

  另外,tomcat容器中,對轉換後的java檔案(比如:index_jsp.java)的編譯最大隻支援64k,是以在其他容器中的jsp移植到tomcat容器中時會遇到大jsp檔案會發生無法編譯的情況,是以建議把jsp中的業務邏輯寫入單獨的類,在jsp中通過調用這個類的靜态方法來執行,并将jsp頁面中的js提取出來放到單獨的js檔案内。