一、靜態包含指令<%@include file=“fileurl”%>
1、兩個jsp頁面的<%@page contentType=“text/html;charset=gbk”%>應該保持一致
2、不能通過fileurl向被包含的jsp頁面傳遞參數,因爲此靜態包含是發生在jsp頁面轉換爲servlet的轉換期間,此時的參數是服務器端設置的死的參數,完全沒有經過客戶端,這種參數是沒有意義的,如<%@include file=“fileurl?user=admin”%>,而且此時會報錯。
3、包含的jsp頁面與被包含的jsp頁面共用一個request內置對象。
比如說在客戶端訪問包含頁面時地址欄後面直接加上參數後傳遞,這種形式的傳參是客戶端送來的,兩個頁面都能夠訪問此參數。我們可以通過這兩個頁面合成的servlet中可以看到有傳遞的參數成爲servlet的成員變量。
4、包含的jsp頁面與被包含的jsp頁面最好沒有重複的html標籤。否則會發生覆蓋現象。
二、動態包含<jsp :include page=“a.jsp”/>與靜態包含<%@include file=“fileurl”%>的區別
1.動態包含用的元素是page,而且有兩種形式。靜態包含用的是file,只有一種形式。
2.生成的文件不同,靜態的包含是將兩個jsp文件二合一,生成一個以包含頁面命名的servlet和class文件,動態包含的兩個jsp文件各自生成自己的servlet和class文件。
3. 傳參方式一:<jsp:include page=“a.jsp?param=123”/>時被包含的jsp頁面是可以訪問該參數的。
4. 傳參方式二:
<jsp:include page=“a.jsp”>
<jsp:param name=“” value=“”>
<jsp:param name=“” value=“”>
</ jsp:include >
5.在客戶端訪問包含頁面時地址欄後面直接加上參數後傳遞,這種形式的傳參是客戶端送來的,但是這兩個頁面的request對象不是同一個,因爲3中已經說了包含的頁面可以向被包含的頁面傳遞參數,所以被包含的request對象含的參數個數應該大於等於包含頁面的參數個數的。所以它們各有各的request對象。而且被包含的jsp頁面可以訪問傳到包含頁面的參數。
6.動態包含只有在執行到它的時候才加載,所以它才叫動態包含。