1. 程式人生 > >jsp中動態include與靜態include的區別-面試題

jsp中動態include與靜態include的區別-面試題

     JSP中動態INCLUDE與靜態INCLUDE的區別 動態INCLUDE用jsp:include動作實現 <jsp:include page="included.jsp" flush="true">它總是會檢查所含檔案中的變化,適合用於包含動態頁面,並且可以帶引數。 靜態INCLUDE用include偽碼實現,它不會檢查所含檔案的變化,適用於包含靜態頁面     靜態include主要是對靜態頁面的引入,不會檢查所包含檔案的變化

<% @ include file="include.html" %>

動態include主要是對動態頁面的引入,它總是會檢查所引入的頁面的變化,如果所包含的資源在請求間發生變化

,則下一次請求包含<jsp:include>動作的jsp時,將包含資源的新內容。

另一方面,include指令在轉換時一次性地將內容複製到jsp中,如果所包含的資源發生變化,則使用include指令的jsp將不能反應出新的內容,除非重新編譯該jsp 。

   所以我們可以總結出: jsp include 有兩種用法 , 分別是:

<%@ include file=” ”%>

<jsp:include page=” ” flush=”true”/>

前者是指令元素、後者是行動元素。具體它們將在哪裡用?怎麼用及它們有什麼區別?這應該是很多人看到它都會想到的題目。下面一起來看看吧。

平常當利用程式中全部的頁面的某些部分(例如題目、頁尾和導航欄)都雷同的時候,我們就可以考慮用 include 。具體在哪些時候用 <%@ include file= %> ,哪些時候用

<jsp:include page= flush= true />. 這種情勢。首先要知道的是它們中間的區別。只有瞭解了它們用法的不同才懂得該在何時去用以及怎麼選擇。

<%@ include file=” ”%>

jsp include 指令元素讀入指定頁面的內容。並把這些內容和本來的頁面融合到一起。(這個過程是在翻譯階段 : 也就是

jsp 被轉化成 servlet 的階段進行的。

這裡對翻譯階段進行一下說明 : 我們知道, jsp 頁面不能原封不動地被傳送給瀏覽器,全部的 jsp 元素都必須首先由伺服器進行處理。這是通過將 jsp 頁面轉達化成 servlet ,然後執行這個 servlet 來結束的。伺服器需要一個 jsp 容器來處理 jsp 頁面。 jsp 容器平常以 servlet 的情勢來實現,這個 servlet 經過配置,可以處理對 jsp 頁面的全部請求。

Jsp 容器重視將 jsp 頁面轉化成 servlet (稱為 jsp 頁面實現類— JSP Page implementation class , 並編譯這個 servlet 。這兩步就組成了翻譯階段 .

由此我們就會知道: jsp 頁面是把 include 指令元素所指定的頁面的實際內容(也就是程式碼段)參加到引入它的 jsp 頁面中 , 合成一個文件後被 jsp 容器將它轉化成 servlet 。可以看到這時會產生一個臨時 class 文件和一個 java 文件。