在JSP編譯的時候,伺服器內部做了什嗎?

來源:互聯網
上載者:User
js|編譯|伺服器 作者/出處:Blueski編譯

 

在JSP第一次獲得請求時,不管請求來自於用戶端瀏覽器還是伺服器上的servlet, JSP檔案將被JSP引擎(JSP engine)轉換成為一個servlet。而這個引擎本身也是一個servlet,在JSWDK,它就是 JspServlet。

在編譯時間候如果發現jsp檔案有任何語法錯誤,轉換過程將中斷,並向用戶端發出出錯資訊;而如果編譯成功了,則所轉換產生的servlet代碼被編譯,然後該servlet被JSP引擎載入到記憶體中。此時JSP引擎還請求了jspInit()方法的執行,並對此servlet做初始化。jspInit()方法在servlet的生命週期中只被請求一次。然後jspService()方法被調用來處理用戶端的請求和回複操作。對於所有的隨後而來的對該JSP檔案的請求,伺服器將檢查該.jsp檔案自最後一次被存取後是否經過修改。如果沒有修改則請求將交給還在記憶體中的servlet的jspService()方法以一種同時發生的方式加以處理。注意,由於 servlet始終駐於記憶體,所以響應是非常快的。
如果.jsp檔案被修改了,伺服器將自動地對檔案重新編譯,並將結果取代記憶體中的servlet,並繼續上述處理過程。


雖然JSP效率很高,但在第一次調用時由於需要轉換和編譯而有一些輕微的延遲。 此外,如果在任何時候如果由於系統資源不足的原因,JSP引擎將以某種不確定的方式將servlet從記憶體中移去。當這種情況發生時jspDestroy()方法首先被調用, 然後servlet執行個體便被標記加入“垃圾收集”處理。

 

相關內容:

jsp先行編譯器:
Jakarata Tomcat3.1 JSP伺服器 (http://jakarta.apache.org)包含了一個 JSP編譯器(JSPC),可以進行先行編譯,既可以定義一個web應用的檔案目錄,也可以指定某個特定jsp檔案來進行編譯。
另外,oracle也有jspc

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.