靜態include(靜態導入)是指將一個其餘文件(一個jsp/html)嵌入到本頁面
jsp的include指令是先將文件內容讀入,而後把讀入的內容和原有的頁面融合在一塊兒,這個過程通常是web容器乾的,也就是服務器,咱們寫的jsp頁面都是交給服務器轉換成servlet(java代碼),而後通過servlet處理在瀏覽器上顯示。
服務器將jsp頁面轉換成servlet(java代碼)而後進行編譯,這個過程稱爲翻譯階段。
因此靜態include<%@ include file=""%>,在服務器的work目錄下只是生成了一個java文件和一個class文件,注意若是是一個java文件那麼他們是共用一個request對象,兩個頁面是不可能定義相同的變量名,驗證以下:html
定義兩個jsp,分別爲main.jsp和include.jsp,在main.jsp中使用include指令把include.jsp引入,分別在兩個jsp中寫上輸出request對象的語句測試java
能夠看到兩個輸出的對象是一個,分別在兩個jsp中定義一個同名的變量i,在發起訪問後報錯web
include執行的時候告訴jsp引擎,翻譯的時候,就把include2的內容和include1的內容合併到一個java文件中,因此翻譯出來的java只有一個,include指令包含的多個jsp中不容許有同名的變量。瀏覽器
和靜態的區別是分別把兩個jsp頁面翻譯成java文件,進行編譯,在最後執行輸出的時候才把兩個文件合併起來,因此仍是上面的代碼輸出結果以下圖:服務器
能夠看到是兩個request對象(由於翻譯後是兩個servlet),在兩個頁面定義相同的變量i,進行訪問也不會報錯。
jsp