JSP中有兩種包含:java
靜態包含:<%@include file="被包含頁面"%>;編程
動態包含:<jsp:include page="被包含頁面"flush="true">jsp
二者的區別:spa
一、<%@ include file=」 」%>是指令元素。<jsp:include page=」 」/>是行爲元素對象
二、最終編譯成java文件的數目不一樣:編譯
a:靜態包含在轉換成爲java文件的時候將包含文件的內容「複製」到主體文件,而後做爲一個總體編譯。最終編譯爲一個java文件。class
b:動態包含是各個jsp文件分別轉換,分別編譯。最終編程成多個java文件。變量
三、執行時間不一樣file
a:靜態包含發生在:JSP---->java文件階段request
b:動態包含發生在:執行class文件階段。動態加入。
四、靜態包含在兩個文件中不能有相同的變量,動態包含容許:
因爲靜態包含至關於將包含文件內容直接複製到主體文件中,若是出現相同的變量,就會出現覆蓋等問題,致使文件出錯。
而動態包含至關於調用不一樣的jsp,變量所在的空間不一樣,天然不會出現覆蓋等現象。
五、不管是動態包含仍是靜態包含,其request對象都是相同的。也就是同一個request對象:
靜態包含最終編譯成一個java文件,有一個request對象很好理解。而動態包含最終編譯成多個jsp文件,爲什麼會使用一個request對象呢?
其實這些jsp組合的過程是一個請求轉發的過程,天然也使用同一個request對象了。
靜態包含和動態包含的使用
簡單總結一下,就一句話:被包含的頁面是靜態頁面就用靜態包含,是動態頁面就用動態包含。(固然,不是很絕對,可是這樣用沒有錯。)