天天看點

JSP中的include指令

       一般的網頁格式如下:

<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>

&lt;h1&gt;inc.jsp&lt;/h1&gt;

<b>2</b><b>、</b><b>  inc.htm</b><b>:</b><b></b>

&lt;h1&gt;inc.htm&lt;/h1&gt;

<b>3</b><b>、</b><b>  inc.inc</b><b>:</b><b></b>

&lt;h1&gt;inc.inc&lt;/h1&gt;

       那麼之後直接使用包含語句将此三個頁面包含進來

<b>IncludeDemo01.jsp</b><b>:</b><b></b>

&lt;%@include file="inc.htm"%&gt;

&lt;%@include file="inc.jsp"%&gt;

&lt;%@include file="inc.inc"%&gt;

&lt;h1&gt;IncludeDemo01.jsp&lt;/h1&gt;

       動态包含,動态包含比靜态包含多增加了一個判斷功能,如果被包含的是動态頁面,則按動态的方式進行處理,如果包含的是靜态頁面,則與之前的&lt;%@include%&gt;的操作形式是一樣的。

<b>IncludeDemo02.jsp</b><b>:</b>

&lt;jsp:include page="inc.htm"/&gt;

&lt;jsp:include page="inc.jsp"/&gt;

&lt;jsp:include page="inc.inc"/&gt;

&lt;h1&gt;IncludeDemo02.jsp&lt;/h1&gt;

       那麼,使用此種包含語句,可以向被包含的頁面之中傳遞參數,隻要被包含的頁面是動态頁面,則就可以通過request.getParameter()直接接收此參數。

<b>Incdemo.jsp</b><b>:</b><b></b>

&lt;%-- 這兩個參數都由包含頁傳遞過來 --%&gt;

&lt;h1&gt;&lt;%=request.getParameter("<b>ref1</b>")%&gt;&lt;/h1&gt;

&lt;h1&gt;&lt;%=request.getParameter("<b>ref2</b>")%&gt;&lt;/h1&gt;

<b>IncludeDemo03.jsp</b><b>:</b>

&lt;jsp:include page="Incdemo.jsp"&gt;

<b>         &lt;jsp:param name="ref1" value="Hello"/&gt;</b>

<b>         &lt;jsp:param name="ref2" value="World"/&gt;</b>

&lt;/jsp:include&gt;

       兩種包含完成的功能都很相似,隻是第二種包含中可以傳遞參數,第一種不能傳遞參數,除此之外兩種包含還有一個最大的差别:

       · &lt;%@include%&gt;:表示把所有的頁面的内容包含進來之後一起處理結果

       · &lt;jsp:include/&gt;:如果包含的是靜态頁面,則處理過程與之前一樣,如果是動态頁面,則多個頁面分别進行處理,之後再把結果包含進來。

1、  驗證&lt;%@include%&gt;,靜态包含

<b>IncludeDemo04.jsp</b><b>:</b><b></b>

&lt;%

         int i = 10 ;

%&gt;

&lt;h1&gt;IncludeDemo04.jsp --&gt; &lt;%=i%&gt;&lt;/h1&gt;

&lt;%@include file="IncludeDemo05.jsp"%&gt;

<b>IncludeDemo05.jsp</b><b>:</b><b></b>

         int i = 100 ;

&lt;h1&gt;IncludeDemo05.jsp --&gt; &lt;%=i%&gt;&lt;/h1&gt;

2、  驗證&lt;jsp:include&gt;,動态包含

<b>IncludeDemo04.jsp</b><b>:</b>

&lt;jsp:include page="IncludeDemo05.jsp"/&gt;

<b>結論:</b>

       兩種包含中使用&lt;jsp:include&gt;包含是最友善的,建議隻使用此文法。

       forward指令的文法與&lt;jsp:include&gt;文法類似,隻是完成的是無條件跳轉功能。

<b>ForwardDemo01.jsp</b><b>:</b><b></b>

&lt;jsp:forward page="ForwardDemo02.jsp"/&gt;

<b>ForwardDemo02.jsp</b><b>:</b><b></b>

&lt;h1&gt;Hello World!!!&lt;/h1&gt;

       以上程式跳轉之後,位址欄并沒有任何的改變,但是顯示的内容改變了,是以稱此種跳轉為<b>伺服器端跳轉</b>指令。

       使用forward指令也可以像include指令那樣,直接向跳轉的頁面傳遞參數。參數同樣是通過&lt;jsp:param&gt;進行設定的,接收參數的時候同樣使用request.getParameter()接收。

<b>ForwardDemo03.jsp</b><b>:</b>

         String str = "WORLD" ;

&lt;jsp:forward page="ForwardDemo04.jsp"&gt;

         &lt;jsp:param name="ref1" value="HELLO"/&gt;

         &lt;jsp:param name="ref2" value="&lt;%=str%&gt;"/&gt;

&lt;/jsp:forward&gt;

<b>ForwardDemo04.jsp</b><b>:</b><b></b>

&lt;h1&gt;&lt;%=request.getParameter("ref1")%&gt;&lt;/h1&gt;

&lt;h1&gt;&lt;%=request.getParameter("ref2")%&gt;&lt;/h1&gt;

本文轉自 李興華 51CTO部落格,原文連結:http://blog.51cto.com/lixinghua/101381,如需轉載請自行聯系原作者