@OverWrite BlogJava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            128 隨筆 :: 0 文章 :: 29 評論 :: 0 Trackbacks
          事出做項目時一個jsp頁面修改后一直沒有讀出來,后來仔細研究了下tomcat才發(fā)現(xiàn)
          當(dāng)請求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 
          關(guān)鍵就在Compiler的isOutDated(boolean checkClass) 的判斷上 。
          判斷標(biāo)準(zhǔn)是,如果 jsp最后修改時間大于目標(biāo)文件的最后修改時間要重新編譯。還有一種情況就是即使jsp的最后修改時間晚于目標(biāo)文件的最后修改時間,但只要jsp中用了
          include指令包含的某個文件的最后修改時間早于對應(yīng)目標(biāo)文件的修改時間的話,也是需要重新編譯主jsp文件的
          posted on 2008-01-09 14:22 vesung 閱讀(1209) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 安顺市| 杭州市| 梓潼县| 明星| 萨迦县| 永嘉县| 甘洛县| 佛冈县| 石泉县| 衡水市| 兴安盟| 汾西县| 肥东县| 宁晋县| 周宁县| 万年县| 承德市| 温宿县| 乡城县| 信阳市| 漠河县| 会宁县| 海兴县| 东阿县| 抚顺市| 奎屯市| 即墨市| 通渭县| 林西县| 长顺县| 阿巴嘎旗| 筠连县| 乡宁县| 平潭县| 海丰县| 大荔县| 乌海市| 昌黎县| 大名县| 城固县| 柞水县|