1. 首先先介紹下,jsp機制:
servlet容器,先將jsp轉化成servlet,然后編譯成.class文件,放置容器緩沖區【tomcat的work目錄下】。
每次調用jsp時,服務器會讀取編譯好的servler.class,處理jsp的請求。
2. <%@ include file="page.jsp"%>
在servlet容器轉化jsp為servlet時,將引入的jsp源碼全部添加到當前jsp,一並轉化成一個servlet,然后編譯。
【可以理解為整合一個servlet,一起編譯,一次執行】
3.<jsp:include page="page.jsp"/>
發送請求給當前jsp,servlet調用當前jsp servlet編譯后文件,到引用位置,調用編譯后的page.jsp的servlet。class文件。【可以理解為,各自單獨編譯,互相調用編譯的文件】
總結:
以下是對include 兩種用法的區別,主要有兩個方面的不同:
執行時間上:
<%@ include file=”relativeURI”%> 是在翻譯階段執行
<jsp:include page=”relativeURI” flush=”true” /> 在請求處理階段執行.
引入內容的不同:
<%@ include file=”relativeURI”%>引入靜態文本(html,jsp),在JSP頁面被轉化成servlet之前和它融和到一起.
<jsp:include page=”relativeURI” flush=”true” />引入執行頁面或servlet所生成的應答文本.
另外在兩種用法中file和page屬性都被解釋為一個相對的URI.如果它以斜杠開頭,那么它就是一個環境相關的路徑.將根據賦給應用程序的URI的前綴進行解釋,如果它不是以斜杠開頭,那么就是頁面相關的路徑,就根據引入這個文件的頁面所在的路徑進行解釋。
