- Java Web從入門到精通(第3版)
- 明日科技
- 1796字
- 2020-06-29 17:33:58
5.5 動(dòng)作標(biāo)識(shí)
5.5.1 包含文件標(biāo)識(shí)<jsp:include>
JSP的動(dòng)作標(biāo)識(shí)<jsp:include>用于向當(dāng)前頁(yè)面中包含其他的文件。被包含的文件可以是動(dòng)態(tài)文件,也可以是靜態(tài)文件。<jsp:include>動(dòng)作標(biāo)識(shí)包含文件的過程如圖5.9所示。

圖5.9 <jsp:include>動(dòng)作標(biāo)識(shí)包含文件的過程
<jsp:include>動(dòng)作標(biāo)識(shí)的語(yǔ)法格式如下:
<jsp:include page="url" flush="false|true" />
或

參數(shù)說明:
page:用于指定被包含文件的相對(duì)路徑。例如,指定屬性值為top.jsp,則表示包含的是與當(dāng)前JSP文件相同文件夾中的top.jsp文件包含到當(dāng)前JSP頁(yè)面中。
flush:可選屬性,用于設(shè)置是否刷新緩沖區(qū)。默認(rèn)值為false,如果設(shè)置為true,在當(dāng)前頁(yè)面輸出使用了緩沖區(qū)的情況下,先刷新緩沖區(qū),然后再執(zhí)行包含工作。
子動(dòng)作標(biāo)識(shí)<jsp:param>:用于向被包含的動(dòng)態(tài)頁(yè)面中傳遞參數(shù)。關(guān)于<jsp:param>標(biāo)識(shí)的詳細(xì)介紹請(qǐng)參見5.5.3節(jié)。
說明
<jsp:include>標(biāo)識(shí)對(duì)包含的動(dòng)態(tài)文件和靜態(tài)文件的處理方式是不同的。如果被包含的是靜態(tài)的文件,則頁(yè)面執(zhí)行后,在使用了該標(biāo)識(shí)的位置將會(huì)輸出這個(gè)文件的內(nèi)容。如果<jsp:include>標(biāo)識(shí)包含的是一個(gè)動(dòng)態(tài)文件,那么JSP編譯器將編譯并執(zhí)行這個(gè)文件。<jsp:include>標(biāo)識(shí)會(huì)識(shí)別出文件的類型,而不是通過文件的名稱來(lái)判斷該文件是靜態(tài)的還是動(dòng)態(tài)的。
技巧
在應(yīng)用<jsp:include>標(biāo)識(shí)進(jìn)行文件包含時(shí),為了使整個(gè)頁(yè)面的層次結(jié)構(gòu)不發(fā)生沖突,建議在被包含頁(yè)面中將<html>、<body>等標(biāo)記刪除。
【例5.22】 應(yīng)用<jsp:include>標(biāo)識(shí)包含網(wǎng)站Banner和版權(quán)信息欄。(實(shí)例位置:資源包\TM\sl\5\5)
(1)編寫一個(gè)名稱為top.jsp的文件,用于放置網(wǎng)站的Banner信息和導(dǎo)航條。這里將Banner信息和導(dǎo)航欄設(shè)計(jì)為一張圖片。這樣完成top.jsp文件,只需要在該頁(yè)面中通過<img>標(biāo)記引入圖片即可。top.jsp文件的代碼如下:
<%@ page pageEncoding="GB18030"%> <img src="images/banner.JPG">
(2)編寫一個(gè)名稱為copyright.jsp的文件,用于放置網(wǎng)站的版權(quán)信息。copyright.jsp文件的具體代碼如下:

(3)創(chuàng)建一個(gè)名稱為index.jsp的文件,在該頁(yè)面中包括top.jsp和copyright.jsp文件,從而實(shí)現(xiàn)一個(gè)完整的頁(yè)面。index.jsp文件的具體代碼如下:

運(yùn)行程序,將顯示如圖5.10所示的效果。

圖5.10 運(yùn)行結(jié)果
技巧
如果要在JSP頁(yè)面中顯示大量的純文本,可以將這些文本文字寫入靜態(tài)文件中(如記事本),然后通過include指令或動(dòng)作標(biāo)識(shí)包含到該JSP頁(yè)面,這樣可以讓JSP頁(yè)面更簡(jiǎn)潔。
在前面的章節(jié)中介紹了include指令,該指令與<jsp:include>動(dòng)作標(biāo)識(shí)相同,都可以用來(lái)包含文件。但是它們之間是存在很大差別的。下面將對(duì)include指令與<jsp:include>動(dòng)作標(biāo)識(shí)的區(qū)別進(jìn)行詳細(xì)介紹。
(1)include指令通過file屬性指定被包含的文件,并且file屬性不支持任何表達(dá)式;<jsp:include>動(dòng)作標(biāo)識(shí)通過page屬性指定被包含的文件,而且page屬性支持JSP表達(dá)式。
(2)使用include指令時(shí),被包含的文件內(nèi)容會(huì)原封不動(dòng)地插入包含頁(yè)中,然后JSP編譯器再將合成后的文件最終編譯成一個(gè)Java文件;使用<jsp:include>動(dòng)作標(biāo)識(shí)包含文件時(shí),當(dāng)該標(biāo)識(shí)被執(zhí)行時(shí),程序會(huì)將請(qǐng)求轉(zhuǎn)發(fā)(注意是轉(zhuǎn)發(fā),而不是請(qǐng)求重定向)到被包含的頁(yè)面,并將執(zhí)行結(jié)果輸出到瀏覽器中,然后返回包含頁(yè)繼續(xù)執(zhí)行后面的代碼。因?yàn)榉?wù)器執(zhí)行的是多個(gè)文件,所以JSP編譯器會(huì)分別對(duì)這些文件進(jìn)行編譯。
(3)在應(yīng)用include指令包含文件時(shí),由于被包含的文件最終會(huì)生成一個(gè)文件,所以在被包含文件、包含文件中不能有重名的變量或方法;而在應(yīng)用<jsp:include>動(dòng)作標(biāo)識(shí)包含文件時(shí),由于每個(gè)文件是單獨(dú)編譯的,所以在被包含文件和包含文件中重名的變量和方法是不相沖突的。
5.5.2 請(qǐng)求轉(zhuǎn)發(fā)標(biāo)識(shí)<jsp:forward>
通過<jsp:forward>動(dòng)作標(biāo)識(shí)可以將請(qǐng)求轉(zhuǎn)發(fā)到其他的Web資源,例如,另一個(gè)JSP頁(yè)面、HTML頁(yè)面、Servlet等。執(zhí)行請(qǐng)求轉(zhuǎn)發(fā)后,當(dāng)前頁(yè)面將不再被執(zhí)行,而是去執(zhí)行該標(biāo)識(shí)指定的目標(biāo)頁(yè)面。執(zhí)行請(qǐng)求轉(zhuǎn)發(fā)的基本流程如圖5.11所示。

圖5.11 執(zhí)行請(qǐng)求轉(zhuǎn)發(fā)的基本流程
<jsp:forward>動(dòng)作標(biāo)識(shí)的語(yǔ)法格式如下:
<jsp:forward page="url"/>
或

參數(shù)說明:
page:用于指定請(qǐng)求轉(zhuǎn)發(fā)的目標(biāo)頁(yè)面。該屬性值可以是一個(gè)指定文件路徑的字符串,也可以是表示文件路徑的JSP表達(dá)式。但是請(qǐng)求被轉(zhuǎn)向的目標(biāo)文件必須是內(nèi)部的資源,即當(dāng)前應(yīng)用中的資源。
子動(dòng)作標(biāo)識(shí)<jsp:param>:用于向轉(zhuǎn)向的目標(biāo)文件中傳遞參數(shù)。關(guān)于<jsp:param>標(biāo)識(shí)的詳細(xì)介紹請(qǐng)參見5.5.3節(jié)。
【例5.23】 應(yīng)用<jsp:forward>標(biāo)識(shí)將頁(yè)面轉(zhuǎn)發(fā)到用戶登錄頁(yè)面。(實(shí)例位置:資源包\TM\sl\5\6)
(1)創(chuàng)建一個(gè)名稱為index.jsp的文件,該文件為中轉(zhuǎn)頁(yè),用于通過<jsp:forward>動(dòng)作標(biāo)識(shí)將頁(yè)面轉(zhuǎn)發(fā)到用戶登錄頁(yè)面(login.jsp)。index.jsp文件的具體代碼如下:

(2)編寫login.jsp文件,在該文件中添加用于收集用戶登錄信息的表單及表單元素。具體代碼如下:

運(yùn)行實(shí)例,將顯示如圖5.12所示的用戶登錄頁(yè)面。

圖5.12 請(qǐng)求轉(zhuǎn)發(fā)至登錄頁(yè)面
5.5.3 傳遞參數(shù)標(biāo)識(shí)<jsp:param>
JSP的動(dòng)作標(biāo)識(shí)<jsp:param>可以作為其他標(biāo)識(shí)的子標(biāo)識(shí),用于為其他標(biāo)識(shí)傳遞參數(shù)。語(yǔ)法格式如下:
<jsp:param name="參數(shù)名" value="參數(shù)值" />
參數(shù)說明:
name:用于指定參數(shù)名稱。
value:用于設(shè)置對(duì)應(yīng)的參數(shù)值。
【例5.24】 通過<jsp:param>標(biāo)識(shí)為<jsp:forward>標(biāo)識(shí)指定參數(shù),可以使用下面的代碼:

在上面的代碼中,實(shí)現(xiàn)了在請(qǐng)求轉(zhuǎn)發(fā)到modify.jsp頁(yè)面的同時(shí),傳遞了參數(shù)userId,其參數(shù)值為7。
說明
通過<jsp:param>動(dòng)作標(biāo)識(shí)指定的參數(shù),將以“參數(shù)名=值”的形式加入請(qǐng)求中。它的功能與在文件名后面直接加“?參數(shù)名=參數(shù)值”是相同的。
- Embedded Linux Projects Using Yocto Project Cookbook
- 現(xiàn)代C++編程:從入門到實(shí)踐
- Reporting with Visual Studio and Crystal Reports
- Java程序設(shè)計(jì)實(shí)戰(zhàn)教程
- 造個(gè)小程序:與微信一起干件正經(jīng)事兒
- Android群英傳
- Spring+Spring MVC+MyBatis從零開始學(xué)
- 零基礎(chǔ)輕松學(xué)C++:青少年趣味編程(全彩版)
- Exploring SE for Android
- Magento 2 Beginners Guide
- C語(yǔ)言程序設(shè)計(jì)實(shí)踐
- PHP 8從入門到精通(視頻教學(xué)版)
- Python機(jī)器學(xué)習(xí)與量化投資
- ROS機(jī)器人編程實(shí)戰(zhàn)
- 軟硬件綜合系統(tǒng)軟件需求建模及可靠性綜合試驗(yàn)、分析、評(píng)價(jià)技術(shù)