jsp中include的兩種方式
JSP中include的兩種方法
1.include指令:
1 |
<% @include file= "檔案的絕對路徑或者相對路徑" %>
|
file屬性是必填的(絕對或相對路徑),但它不支援任何的表示式,也不允許通過?掛參方式來傳遞引數。
2.include動作:
1 2 3 |
<jsp:include page= "被包含檔案的路徑" flush= "true/false" >
<jsp:param name= "引數名稱" value= "引數值" />
</jsp:inclue>
|
page屬性是必填的(絕對或相對路徑),但它及支援表示式也可傳遞引數。flush屬性為緩衝區滿時,清空緩衝區。
三、兩者的區別
1.執行時間上的區別:
<%@ includefile=”relativeURI”%> 是在翻譯階段執行(將JSP頁面轉換成servlet的階段)。
<jsp:includepage=”relativeURI” flush=”true” /> 在請求處理階段執行。
2.引入內容的方式區別:
<%@ includefile=”relativeURI”%>適用於引入靜態文字,也可以這麼理解:它是純粹的把部分程式碼寫到了另一頁面(或者說是共享),而那另一頁面中不能有相同的變數名,但可以借用主頁面的內容。
<jsp:include page=”relativeURI” flush=”true”/>引入執行頁面或servlet所生成的應答文字。
如圖理解:
四、例子解釋
在index.jsp頁面中引入test.jsp頁面
路徑中出現表示式,則頁面報500錯誤……所以我們要把<%=basePath%>去掉,替換成無包含表示式相對或絕對路徑地址。
變量出現重名衝突,則頁面同樣報500錯誤……我們把那些變數都去掉就剩下<div>我是head</div>再測試,得到的結果是:
這次沒報錯了,但是漢字出現亂碼了!所以test.jsp頁面中,<%@ page contentType="text/html;charset=UTF-8" language="java" %>這句我們還是要保留下來的。
以上我只是簡單的講解了下<%@ include file="" %>的例子中一些常遇到的錯誤,因為我們平時也比較多用此指令。至於<jsp:include page="" />動作大家可以自己寫個例子試看看。