@OverWrite BlogJava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            128 隨筆 :: 0 文章 :: 29 評論 :: 0 Trackbacks
          事出做項目時一個jsp頁面修改后一直沒有讀出來,后來仔細研究了下tomcat才發現
          當請求jsp頁面時,Tomcat會分派給JspServlet來處理,在jspServlet的方法 service()中有一句
          boolean precompile = preCompile(request); 
          它會判斷你請求jsp頁面時有沒有帶?jsp_precompile查詢字符串,如果帶了就會重新編譯
          然后再由serviceJspFile(request, response, jspUri, null, precompile)進一步判斷是否要進行編譯jsp文件,下面是JspServletWraper service方法
           1 if (options.getDevelopment() || firstTime ) { 
           2 synchronized (this) { 
           3 if (firstTime) { 
           4 firstTime = false
           5 
           6 // The following sets reload to true, if necessary 
           7 ctxt.compile(); 
           8 
           9 
          10 
          關鍵就在Compiler的isOutDated(boolean checkClass) 的判斷上 。
          判斷標準是,如果 jsp最后修改時間大于目標文件的最后修改時間要重新編譯。還有一種情況就是即使jsp的最后修改時間晚于目標文件的最后修改時間,但只要jsp中用了
          include指令包含的某個文件的最后修改時間早于對應目標文件的修改時間的話,也是需要重新編譯主jsp文件的
          posted on 2008-01-09 14:22 vesung 閱讀(1209) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 凤城市| 青阳县| 嘉荫县| 南召县| 双鸭山市| 塔河县| 孟州市| 康定县| 孟连| 山西省| 平原县| 嵊泗县| 成都市| 长沙市| 西华县| 安丘市| 锡林郭勒盟| 蚌埠市| 鄂托克旗| 大厂| 紫金县| 灌南县| 杂多县| 湖北省| 苏尼特左旗| 东丽区| 铜鼓县| 伊宁市| 宝清县| 兴仁县| 新巴尔虎右旗| 英吉沙县| 哈尔滨市| 祁东县| 靖边县| 建瓯市| 遂昌县| 平江县| 郓城县| 昌乐县| 奉贤区|