一般的網頁格式如下:
<b>1</b><b>工</b><b></b>
<b>具</b><b></b>
<b>導</b><b></b>
<b>航</b><b></b>
<b>區</b><b></b>
<b>(</b><b>不變</b><b>)</b>
<b>2</b><b>首部資訊(基本不變)</b><b></b>
各個頻道的具體資訊
(此處的資訊是會被反複改變的)
<b>3</b><b>尾部資訊(基本不變)</b><b></b>
那麼如果要想實作以上的樣式的代碼,有兩種做法:
· 每一個頁面都單獨編寫1、2、3号代碼,這樣一來代碼重複
· 将這三部分代碼單獨做成檔案,之後在一個整體頁面中包含進來
可以包含任何的檔案,可以把任何檔案的内容直接包含進來,檔案包含的時候不需要字尾。是以此種包含屬于靜态包含,隻關心檔案本身的内容。
例如:現在随便建立幾個字尾的檔案:
<b>1</b><b>、</b><b> inc.jsp</b><b>:</b><b></b>
<h1>inc.jsp</h1>
<b>2</b><b>、</b><b> inc.htm</b><b>:</b><b></b>
<h1>inc.htm</h1>
<b>3</b><b>、</b><b> inc.inc</b><b>:</b><b></b>
<h1>inc.inc</h1>
那麼之後直接使用包含語句将此三個頁面包含進來
<b>IncludeDemo01.jsp</b><b>:</b><b></b>
<%@include file="inc.htm"%>
<%@include file="inc.jsp"%>
<%@include file="inc.inc"%>
<h1>IncludeDemo01.jsp</h1>
動态包含,動态包含比靜态包含多增加了一個判斷功能,如果被包含的是動态頁面,則按動态的方式進行處理,如果包含的是靜态頁面,則與之前的<%@include%>的操作形式是一樣的。
<b>IncludeDemo02.jsp</b><b>:</b>
<jsp:include page="inc.htm"/>
<jsp:include page="inc.jsp"/>
<jsp:include page="inc.inc"/>
<h1>IncludeDemo02.jsp</h1>
那麼,使用此種包含語句,可以向被包含的頁面之中傳遞參數,隻要被包含的頁面是動态頁面,則就可以通過request.getParameter()直接接收此參數。
<b>Incdemo.jsp</b><b>:</b><b></b>
<%-- 這兩個參數都由包含頁傳遞過來 --%>
<h1><%=request.getParameter("<b>ref1</b>")%></h1>
<h1><%=request.getParameter("<b>ref2</b>")%></h1>
<b>IncludeDemo03.jsp</b><b>:</b>
<jsp:include page="Incdemo.jsp">
<b> <jsp:param name="ref1" value="Hello"/></b>
<b> <jsp:param name="ref2" value="World"/></b>
</jsp:include>
兩種包含完成的功能都很相似,隻是第二種包含中可以傳遞參數,第一種不能傳遞參數,除此之外兩種包含還有一個最大的差别:
· <%@include%>:表示把所有的頁面的内容包含進來之後一起處理結果
· <jsp:include/>:如果包含的是靜态頁面,則處理過程與之前一樣,如果是動态頁面,則多個頁面分别進行處理,之後再把結果包含進來。
1、 驗證<%@include%>,靜态包含
<b>IncludeDemo04.jsp</b><b>:</b><b></b>
<%
int i = 10 ;
%>
<h1>IncludeDemo04.jsp --> <%=i%></h1>
<%@include file="IncludeDemo05.jsp"%>
<b>IncludeDemo05.jsp</b><b>:</b><b></b>
int i = 100 ;
<h1>IncludeDemo05.jsp --> <%=i%></h1>
2、 驗證<jsp:include>,動态包含
<b>IncludeDemo04.jsp</b><b>:</b>
<jsp:include page="IncludeDemo05.jsp"/>
<b>結論:</b>
兩種包含中使用<jsp:include>包含是最友善的,建議隻使用此文法。
forward指令的文法與<jsp:include>文法類似,隻是完成的是無條件跳轉功能。
<b>ForwardDemo01.jsp</b><b>:</b><b></b>
<jsp:forward page="ForwardDemo02.jsp"/>
<b>ForwardDemo02.jsp</b><b>:</b><b></b>
<h1>Hello World!!!</h1>
以上程式跳轉之後,位址欄并沒有任何的改變,但是顯示的内容改變了,是以稱此種跳轉為<b>伺服器端跳轉</b>指令。
使用forward指令也可以像include指令那樣,直接向跳轉的頁面傳遞參數。參數同樣是通過<jsp:param>進行設定的,接收參數的時候同樣使用request.getParameter()接收。
<b>ForwardDemo03.jsp</b><b>:</b>
String str = "WORLD" ;
<jsp:forward page="ForwardDemo04.jsp">
<jsp:param name="ref1" value="HELLO"/>
<jsp:param name="ref2" value="<%=str%>"/>
</jsp:forward>
<b>ForwardDemo04.jsp</b><b>:</b><b></b>
<h1><%=request.getParameter("ref1")%></h1>
<h1><%=request.getParameter("ref2")%></h1>
本文轉自 李興華 51CTO部落格,原文連結:http://blog.51cto.com/lixinghua/101381,如需轉載請自行聯系原作者