3.4、include指令
一般的網頁格式如下:
1工
具
導
航
區
(不變) |
2首部信息(基本不變) |
各個頻道的具體信息
(此處的信息是會被反覆改變的) | |
3尾部信息(基本不變) |
那麼如果要想實現以上的樣式的代碼,有兩種做法:
· 每一個頁面都單獨編寫1、2、3號代碼,這樣一來代碼重複
· 將這三部分代碼單獨做成文件,之後在一個整體頁面中包含進來
3.4.1 、<%@include file=""%>
可以包含任何的文件,可以把任何文件的內容直接包含進來,文件包含的時候不需要後綴。所以此種包含屬於靜態包含,只關心文件本身的內容。
例如:現在隨便建立幾個後綴的文件:
1、 inc.jsp:
<h1>inc.jsp</h1> |
2、 inc.htm:
<h1>inc.htm</h1> |
3、 inc.inc:
<h1>inc.inc</h1> |
那麼之後直接使用包含語句將此三個頁面包含進來
IncludeDemo01.jsp:
<%@include file="inc.htm"%>
<%@include file="inc.jsp"%>
<%@include file="inc.inc"%>
<h1>IncludeDemo01.jsp</h1> |
3.4.2 、<jsp:include page=""/>
動態包含,動態包含比靜態包含多增加了一個判斷功能,如果被包含的是動態頁面,則按動態的方式進行處理,如果包含的是靜態頁面,則與之前的<%@include%>的操作形式是一樣的。
IncludeDemo02.jsp:
<jsp:include page="inc.htm"/>
<jsp:include page="inc.jsp"/>
<jsp:include page="inc.inc"/>
<h1>IncludeDemo02.jsp</h1> |
那麼,使用此種包含語句,可以向被包含的頁面之中傳遞參數,只要被包含的頁面是動態頁面,則就可以通過request.getParameter()直接接收此參數。
Incdemo.jsp:
<%-- 這兩個參數都由包含頁傳遞過來 --%>
<h1><%=request.getParameter("ref1")%></h1>
<h1><%=request.getParameter("ref2")%></h1> |
IncludeDemo03.jsp:
<jsp:include page="Incdemo.jsp">
<jsp:param name="ref1" value="Hello"/>
<jsp:param name="ref2" value="World"/>
</jsp:include>
<h1>IncludeDemo02.jsp</h1> |
3.4.3、兩種包含的區別
兩種包含完成的功能都很相似,只是第二種包含中可以傳遞參數,第一種不能傳遞參數,除此之外兩種包含還有一個最大的差別:
· <%@include%>:表示把所有的頁面的內容包含進來之後一起處理結果
· <jsp:include/>:如果包含的是靜態頁面,則處理過程與之前一樣,如果是動態頁面,則多個頁面分別進行處理,之後再把結果包含進來。
1、 驗證<%@include%>,靜態包含
IncludeDemo04.jsp:
<%
int i = 10 ;
%>
<h1>IncludeDemo04.jsp --> <%=i%></h1>
<%@include file="IncludeDemo05.jsp"%> |
IncludeDemo05.jsp:
<%
int i = 100 ;
%>
<h1>IncludeDemo05.jsp --> <%=i%></h1> |
2、 驗證<jsp:include>,動態包含
IncludeDemo04.jsp:
<jsp:include page="IncludeDemo05.jsp"/>
<%
int i = 10 ;
%>
<h1>IncludeDemo04.jsp --> <%=i%></h1> |
結論:
兩種包含中使用<jsp:include>包含是最方便的,建議只使用此語法。
3.5、forward指令
forward指令的語法與<jsp:include>語法類似,只是完成的是無條件跳轉功能。
ForwardDemo01.jsp:
<jsp:forward page="ForwardDemo02.jsp"/> |
ForwardDemo02.jsp:
<h1>Hello World!!!</h1> |
以上程序跳轉之後,地址欄並沒有任何的改變,但是顯示的內容改變了,所以稱此種跳轉爲服務器端跳轉指令。
使用forward指令也可以像include指令那樣,直接向跳轉的頁面傳遞參數。參數同樣是通過<jsp:param>進行設置的,接收參數的時候同樣使用request.getParameter()接收。
ForwardDemo03.jsp:
<%
String str = "WORLD" ;
%>
<jsp:forward page="ForwardDemo04.jsp">
<jsp:param name="ref1" value="HELLO"/>
<jsp:param name="ref2" value="<%=str%>"/>
</jsp:forward> |
ForwardDemo04.jsp:
<h1><%=request.getParameter("ref1")%></h1>
<h1><%=request.getParameter("ref2")%></h1> |