<%@include file="footer.jsp" %>
注:此時引入的是靜態的jsp文件,它將引入的jsp中的源代碼原封不動地附加到當前文件中,所以在jsp程序中使用這個指令的時候file裏面的值(即要導入的文件)不能帶多餘的標籤或是與當前jsp文件重複的東西。例如裏面不要包含<html><body>這樣的標籤,因爲是把源代碼原封不動的附加過來,所以會與當前的jsp中的這樣的標籤重複導致出錯
二、方式2
<jsp:include page=”/user/test”flush=”true”/>
此時引入執行頁面或生成的應答文本.jsp:include標籤導入一個重用文件的時候,這個文件是經過編譯的.
flush 表示在讀入包含內容之前是否清空任何現有的緩衝區。
注: 通俗點說就是附加這個要導入文件經過編譯後的效果,所以可以含有與當前jsp程序中重複的內容,因爲在附加過來之前就會被解析掉。
區別 |
include |
jsp:include |
執行時間 |
翻譯階段 |
在請求處理階段執行 |
引入的內容 |
引入靜態文本,先包含,後編譯 |
引入執行頁面或servlet所生成的應答文本. 被包含的文件先編譯,後包含進來,然後顯示 |
三、實際應用中的引用時的路徑問題
相對路徑
•不以"/"開頭的路徑。
方式1 硬編碼形式-
<a href="../a2.jsp">點擊訪問a2.jsp</a> <!-- ../ 的用法爲:向上跳一級 -->
注:相對路徑較易出錯,在實際開發中建議使用絕對路徑。
方式2 防止硬編碼
•使用String request.getContextPath()方法來即時獲取應用名
<%String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<head>
<base href="<%=basePath%>">
</head>