官术网_书友最值得收藏!

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ù)值”是相同的。

主站蜘蛛池模板: 绥中县| 江山市| 饶河县| 饶阳县| 聊城市| 扎囊县| 光泽县| 永靖县| 眉山市| 柯坪县| 安徽省| 紫阳县| 德庆县| 闸北区| 共和县| 建德市| 平舆县| 牙克石市| 阿荣旗| 灵丘县| 赫章县| 通渭县| 蓬溪县| 三明市| 九龙县| 汾西县| 衡山县| 察哈| 准格尔旗| 兴文县| 西乌| 油尖旺区| 罗城| 太谷县| 余江县| 土默特右旗| 海安县| 娄烦县| 广丰县| 济南市| 舟山市|