利用JSP的包含機制,可以有效的避免重復,把可重用的部分獨立出去,使用include把它們包含到當前文件。JSP有兩種包含機制:include指令和<jsp:include>標准動作。
1.include指令
2.<jsp:include>標准動作
3.內部原理
include指令和<jsp:include>標准動作看上去一樣,而且通常有相同的效果,但是它們生成的servlet代碼並不相同。
include指令在轉換時發生,它就像把被包含的文件復制到當前文件一樣;<jsp:include>標准動作在運行時發生,它在運行時插入“Header.jsp”的響應。
4.性能比較
如果能夠保證所包含的文件不再改變,那就應該使用include指令。不過使用指令會使生成的servlet類較大。
而<jsp:include>標准動作會帶來額外的性能開銷,容器要根據頁面屬性創建一個RequestDispatcher,並應用include()方法,所包含的JSP針對同樣的請求和響應對象執行,而且在同一線程中。
5.使用<jsp:param>定制包含的內容
如果希望在包含頁面時向被包含的頁面傳遞參數,可以使用<jsp:param>傳遞參數:
如果使用<jsp:include page="Header.jsp"></jsp:include>,即<jsp:include>體為空,則會報錯。如果沒有體,只能使用<jsp:include page="Header.jsp"/>的形式。
<jsp:param>只能放在<jsp:include>或<jsp:forward>標准動作中。
6.第三種包含內容的方法
使用JSTL的<c:import>標簽,也可以將一個資源的內容增加到一個JSP中。不同於另外兩種包含機制,<c:import>中的url可以來自web容器范圍之外。
用<c:import>和<c:param>標簽,可以完成和<jsp:include>和<jsp:param>一樣的功能。
使用<c:import>和<c:param>