Include動作與Include指令的區別對比
include動作與inclue指令優缺點
include動作 <jsp:include page="" /> 它允許我們在請求期間將其他頁面的輸出包含進來
優點:在被包含的頁面作出更改時,無須對主頁面作出更改。
缺點:它所包含的是次頁面的輸出,而非次頁面的實際代碼。
所以在被包含的次級頁面中不能使用任何有可能總體上影響主頁面的jsp構造。
它的優點遠遠勝過它的缺點,這幾乎注定它會比其他包含機制應用的更為普遍。
include指令 <%@ include file="" %> 它可以在主頁面轉換成servlet之前,將jsp代碼插入其中。
優點:功能強大,所包含的代碼可以含有總體上影響主頁面的jsp構造,例如字段的定義和內容類型的設定。
缺點:難以維護,只要被包含的頁面發生更改就要更新主頁面。
使用include動作還是include指令?
使用include指令,如果被包含的文件發生改變,那麼,用到它的所有Jsp頁面都需要更新。
僅當include動作不能滿足要求時,我們才應該使用include指令。
有些開發人員認為include指令生成的代碼執行起來比使用include動作的代碼更快。盡管原則上由可能的確如此,但性能上的差異很小,以致難以測量,同時,include動作在維護上的優勢十分巨大,當兩種方法都可以使用時,include動作幾乎肯定是首選的方法。
對於文件包含,應該盡可能地使用include動作。
僅在所包含的文件中定義了主頁面要用到的字段或方法,或所包含的文件設置了主頁面的響應報頭時,才應該使用include指令。
既然include指令產生難以維護的代碼,為什麼人們還要使用它呢?
因為include指令更為強大。include指令允許所包含的文件中含有影響主頁面的Jsp代碼,比如響應報頭的設置和字段、方法的定義。
例如:
subpage.jsp
<%! int num=0; %>
mainpage.jsp
<html> <body> <%@ include file="subpage.jsp" %> <%= num %> </body> </html>
當然使用include動作時這是不可能的,因為num變量未定義,主頁面不能成功的轉換成servlet。
*