首先說明這兩種都是什麼:html
<%@ include file=」relativeURI」%> 能夠叫做靜態include(靜態包含),是jsp指令中的一種,(JSP指令控制JSP編譯器如何去生成servlet(servlet是用Java編寫的服務器端程序。其主要功能在於交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類別,通常狀況下,人們將Servlet理解爲後者。-維基百科)服務器
<jsp:include page=」relativeURI」 flush=」true」 />叫做動態include(動態包含),是jsp動做的一種,(JSP動做是一系列能夠調用內建於網絡服務器中的功能的XML標籤)網絡
區別:jsp
執行時間上:post
<%@ include file=」relativeURI」%> 是在翻譯階段執行spa
<jsp:include page=」relativeURI」 flush=」true」 /> 在請求處理階段執行.翻譯
引入內容的不一樣:htm
<%@ include file=」relativeURI」%>引入靜態文本,在JSP頁面被轉化成servlet以前和它融和到一 起,.先包含,後編譯,不會檢查所含文件的變化,適用於包含靜態頁面,能夠理解爲純粹是把代碼寫在外面的一種共享方法,全部的變量都是能夠和include它的主文件blog
共享, 二者高度緊密結合,不能有變量同名的衝突.而頁面設置也能夠借用主文件的.接口
<jsp:include page=」relativeURI」 flush=」true」 />引入執行頁面或servlet所生成的應答文本. 被包含的文件先編譯,後包含進來,而後顯示
注意:
<%@ include file=""%>指令在編寫代碼的時候通常放在最頂部,主要附加的是被重用的代碼,這裏所說的附加是指把源代碼原封不動的附加過來,例如在jsp程序中使用這個指令的時候file裏面的值(即要導入的文件)不能帶多餘的標籤或是與當前jsp文件重複的東西。例如裏面不要包含<html><body>這樣的標籤,由於是把源代碼原封不動的附加過來,因此會與當前的jsp中的這樣的標籤重複致使出錯。
而應用<jsp:include page="" flush="" />標籤導入一個重用文件的時候,這個文件是通過編譯的,通俗點說就是附加這個要導入文件通過編譯後的效果,因此能夠含有與當前jsp程序中重複的內容,由於在附加過來以前就會被解析掉。
另外在兩種用法中file和page屬性都被解釋爲一個相對的URI.若是它以斜槓開頭,那麼它就是一個環境相關的路徑.將根據賦給應用程序的URI的前綴進行解釋,若是它不是以斜槓開頭,那麼就是頁面相關的路徑,就根據引入這個文件的頁面所在的路徑進行解釋。檢查所含文件中的變化,適合用於包含動態頁面,而且能夠帶參數。它老是會檢查所含文件中的變化,適合用於包含動態頁面,而且能夠帶參數。