第03章--JSP語(yǔ)法詳解1_第1頁(yè)
第03章--JSP語(yǔ)法詳解1_第2頁(yè)
第03章--JSP語(yǔ)法詳解1_第3頁(yè)
第03章--JSP語(yǔ)法詳解1_第4頁(yè)
第03章--JSP語(yǔ)法詳解1_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、119:59:06第第3章章 JSP語(yǔ)法詳解語(yǔ)法詳解 3.1 JSP文件的組成 3.3 JSP腳本元素 3.4 JSP指令元素 3.5 JSP動(dòng)作元素 3.2 JSP注釋方式 219:59:06一個(gè)簡(jiǎn)單的JSP頁(yè)面:JSP頁(yè)的創(chuàng)建頁(yè)的創(chuàng)建 第一個(gè)JSP程序 運(yùn)行效果:319:59:06JSP轉(zhuǎn)義字符轉(zhuǎn)義字符 轉(zhuǎn)義字符是以“”開(kāi)頭的特殊字符,在屏幕上是不能顯示的,而且在程序中無(wú)法用一般形式的字符表示,只能用這種特殊形式表示。常見(jiàn)的轉(zhuǎn)義字符如表所示: 字符形式描述n換行符,將當(dāng)前位置移到下一行開(kāi)頭,與元素是相同的t制表符,跳轉(zhuǎn)到下一個(gè)tab位置b退格符,將當(dāng)前位置移到前一列r回車符,將當(dāng)前位置移到

2、本行開(kāi)頭f換頁(yè)符,將當(dāng)前位置移到下頁(yè)開(kāi)頭反斜杠字符“”單引號(hào)字符”雙引號(hào)字符419:59:063.2 JSP注釋方式注釋方式 3.2.1 HTML注釋 3.2.2 JSP隱藏注釋 3.2.3 腳本段注釋 注釋語(yǔ)句可以幫助程序員識(shí)別和理解程序代碼。在JSP頁(yè)面中主要存在3種注釋方式,分別為HTML注釋、JSP隱藏注釋及腳本段注釋 519:59:06HTML注釋注釋 HTML注釋的語(yǔ)法格式如下: !-comment - HTML注釋將被發(fā)送到客戶端,但不直接顯示,用戶在客戶端源代碼中可以查看到。 例如: 619:59:06JSP隱藏注釋隱藏注釋 JSP注釋語(yǔ)句在傳輸?shù)娇蛻舳说倪^(guò)程中會(huì)被過(guò)濾掉,不會(huì)

3、發(fā)送到客戶端。JSP隱藏注釋語(yǔ)法格式如下: 例如: 719:59:06腳本段注釋腳本段注釋 腳本段中包括兩種注釋方式:?jiǎn)涡凶⑨尯投嘈凶⑨?1單行注釋 單行注釋是以“/”符號(hào)后面的所有內(nèi)容為注釋內(nèi)容,服務(wù)器對(duì)該內(nèi)容不能進(jìn)行任何操作。腳本段在客戶端通過(guò)查看源代碼是不可見(jiàn)的,單行注釋的格式如下: / 注釋內(nèi)容 2多行注釋 多行注釋通過(guò)“/*”和“*/”符號(hào)進(jìn)行標(biāo)記,這兩個(gè)標(biāo)記必須成對(duì)出現(xiàn),在它們之間輸入的注釋內(nèi)容可以換行。多行注釋格式如下: /*注釋內(nèi)容1注釋內(nèi)容2 注釋內(nèi)容3*/ 819:59:063.3 JSP腳本元素腳本元素 3.3.1 聲明語(yǔ)句 3.3.2 腳本段 3.3.3 JSP表達(dá)式

4、JSP中腳本元素包括3部分,在JSP頁(yè)面中需要通過(guò)特殊的約定來(lái)表示這些元素,并且對(duì)于客戶端這些元素是不可見(jiàn)的,它們都是由服務(wù)器執(zhí)行。 919:59:06聲明語(yǔ)句聲明語(yǔ)句 聲明語(yǔ)句(Declaration)在JSP頁(yè)面中定義方法和變量,其聲明格式如下: 在頁(yè)面中通過(guò)聲明元素聲明的方法和變量,在整個(gè)頁(yè)面內(nèi)都有效,它們將稱為JSP頁(yè)面被轉(zhuǎn)換為類文件后中的方法和屬性,并且他們會(huì)被多個(gè)線程即多個(gè)用戶共享。也就是說(shuō),其中的任何一個(gè)線程對(duì)聲明的變量或方法的修改都會(huì)改變它們?cè)瓉?lái)的狀態(tài)。它們的生命周期從創(chuàng)建到服務(wù)器關(guān)閉后結(jié)束。 注意:在“%”與“!”之間不要空格。聲明的語(yǔ)法與在Java語(yǔ)言中聲明變量和方法是一樣

5、的。 1019:59:06示例:網(wǎng)站計(jì)數(shù)器示例:網(wǎng)站計(jì)數(shù)器網(wǎng)站計(jì)數(shù)器網(wǎng)站計(jì)數(shù)器本網(wǎng)頁(yè)訪問(wèn)次數(shù)是:本網(wǎng)頁(yè)訪問(wèn)次數(shù)是:次次1119:59:06腳本段腳本段 腳本段(Scriptlets)就是JSP代碼片段或腳本片段,嵌在“”標(biāo)記中。在腳本段中可以定義變量、調(diào)用的方法和進(jìn)行各種表達(dá)式運(yùn)算,且每行語(yǔ)句后面加入分號(hào)。這種Java代碼在Web服務(wù)器響應(yīng)請(qǐng)求時(shí)會(huì)運(yùn)行。腳本段使用格式如下: 說(shuō)明:腳本程序的使用比較靈活,實(shí)現(xiàn)的功能是JSP表達(dá)式無(wú)法實(shí)現(xiàn)的。 1219:59:06JSP表達(dá)式表達(dá)式 JSP表達(dá)式用來(lái)把Java數(shù)據(jù)向頁(yè)面直接輸出信息,其使用格式如下: JSP表達(dá)式與JSP頁(yè)面中嵌入到腳本段中的ou

6、t.print()方法實(shí)現(xiàn)的功能相同。如果表達(dá)式輸出的是一個(gè)對(duì)象,則該對(duì)象的toString()方法被調(diào)用,表達(dá)式將輸出toString()方法返回的內(nèi)容。 例如: 運(yùn)行結(jié)果:1319:59:063.4 JSP指令元素指令元素 3.4.1 頁(yè)面指令元素:page 3.4.2 包含指令元素:include 3.4.3 提供動(dòng)作指令元素:taglib JSP指令元素主要包括3種:Page指令、Include指令及taglib指令。以“”標(biāo)記開(kāi)始,以“%”標(biāo)記結(jié)束。 1419:59:06頁(yè)面指令元素:頁(yè)面指令元素:page(1) page指令即頁(yè)面指令,用于定義JSP文件中有效的屬性。該指令可以放在

7、JSP頁(yè)面中的任意位置。Page指令包含多種屬性,通過(guò)設(shè)置這些屬性可以影響到當(dāng)前的JSP頁(yè)面。Page指令中除import屬性外,其他屬性只能在指令中出現(xiàn)一次。Page指令語(yǔ)法格式如下: 1519:59:06頁(yè)面指令元素:頁(yè)面指令元素:page(2) page指令各屬性所具有的功能如下: language:設(shè)置當(dāng)前頁(yè)面中編寫(xiě)JSP腳本使用的語(yǔ)言。 import:用于向JSP文件中導(dǎo)入需要用戶的類包。在Page指令中可多次使用該屬性來(lái) 導(dǎo)入多個(gè)包 。contentType:設(shè)置響應(yīng)結(jié)果的MIME類型。默認(rèn)MIME類型是text/html,默認(rèn)字符編碼 為ISO-8859-1。當(dāng)多次使用Page指

8、令時(shí),該屬性只有第一次使用有效 。 session:說(shuō)明當(dāng)前頁(yè)面是否支持session ,默認(rèn)值為ture ,表示支持session 。 buffer:設(shè)置out對(duì)象使用的緩沖區(qū)的大小。如設(shè)置為none,說(shuō)明不使用緩存,而直接 通過(guò)out對(duì)象進(jìn)行輸出;如果將該屬性指定為數(shù)值,則輸出緩沖區(qū)的大小不 應(yīng)小于該值。默認(rèn)值為8KB 。 autoFlush:設(shè)置輸出流的緩沖區(qū)是否自動(dòng)清除。默認(rèn)設(shè)置值為true,說(shuō)明當(dāng)緩沖區(qū)已滿 時(shí),自動(dòng)將其中的內(nèi)容輸出到客戶端。如果設(shè)置為false,則當(dāng)緩沖區(qū)中的 內(nèi)容超出其設(shè)置的大小時(shí),會(huì)產(chǎn)生“JSP Buffer overflow”溢出異常 。isThreadSaf

9、e:默認(rèn)值為true,說(shuō)明當(dāng)前JSP頁(yè)被轉(zhuǎn)換為Servlet后,會(huì)以多線程的方式來(lái) 處理來(lái)自多個(gè)用戶的請(qǐng)求;如果設(shè)置為false,則轉(zhuǎn)換后的Servlet會(huì)實(shí)現(xiàn) SigleThreadModel接口,該Servlet將以單線程的方式來(lái)處理用戶請(qǐng)求,即 其他請(qǐng)求必須等待直到前一個(gè)請(qǐng)求被處理結(jié)束。 1619:59:06頁(yè)面指令元素:頁(yè)面指令元素:page(3) page指令各屬性所具有的功能(續(xù)): info:設(shè)置為任意字符串,如當(dāng)前頁(yè)面的作者或其他相關(guān)的頁(yè)面信息??梢酝ㄟ^(guò) Servlet.getServletInfo()方法來(lái)獲取設(shè)置的字符串 。 errorPage:指定一個(gè)當(dāng)前頁(yè)面出現(xiàn)異常時(shí)所

10、要調(diào)用的頁(yè)面。如果屬性值是以“/”開(kāi)頭的 路徑,則將在當(dāng)前Web應(yīng)用的根目錄下查找文件;否則,將當(dāng)前頁(yè)面的目 錄下查找文件 。 isErrorPage:設(shè)置為true,說(shuō)明在當(dāng)前頁(yè)面中可以使用excpetion異常對(duì)象。若在其他頁(yè)面 中通過(guò)errorPage屬性指定了該頁(yè)面,則當(dāng)調(diào)用頁(yè)面出現(xiàn)異常時(shí)候,會(huì)跳轉(zhuǎn) 到該頁(yè)面,并且在該頁(yè)面中可以通過(guò)exception對(duì)象輸出錯(cuò)誤信息。相反, 如果將該屬性設(shè)置為false,則在當(dāng)前頁(yè)面中不能使用execption對(duì)象。該屬 性默認(rèn)值為false 。 isELlgnored:可以使JSP容器忽略表達(dá)式語(yǔ)言“$”。其值只能是ture或false。設(shè)置為tru

11、e 則忽略表達(dá)式語(yǔ)言;設(shè)置為false,則不忽略表達(dá)式語(yǔ)言 。 extends:設(shè)置當(dāng)前JSP頁(yè)產(chǎn)生的Servlet是繼承哪個(gè)父類。在JSP中通常不會(huì)設(shè)置該 屬性,JSP容器會(huì)提供轉(zhuǎn)換后的Servlet繼承的父類。并且如果設(shè)置該屬性, 一些改動(dòng)會(huì)影響JSP的編譯能力 。pageEncoding:用來(lái)設(shè)置JSP頁(yè)字符的編碼,默認(rèn)值是“ISO-8859-1” 。1719:59:06包含指令元素:包含指令元素:include include指令用于在當(dāng)前的JSP頁(yè)面中在當(dāng)前使用該指令的位置嵌入其他的文件,如果被包含文件有可以執(zhí)行的代碼,則顯示代碼執(zhí)行結(jié)果。include指令的語(yǔ)法格式如下: incl

12、ude指令只存在file屬性,表示此file的路徑,路徑名指的是相對(duì)路徑,不需要指定端口、協(xié)議或域名等。該屬性不支持任何表達(dá)式,也不允許傳遞任何參數(shù)。 注意:如果該屬性值以“/”開(kāi)頭,那么指定的是一個(gè)絕對(duì)路徑,將在當(dāng)前應(yīng)用的根目錄下查找文件,如果是以文件名稱或文件夾名開(kāi)頭,那么指定的相對(duì)路徑將在當(dāng)前頁(yè)面的目錄上查找文件。 1819:59:06include示例:示例:1919:59:06提供動(dòng)作指令提供動(dòng)作指令( (標(biāo)簽庫(kù)指令標(biāo)簽庫(kù)指令) )元素:元素:taglib taglib指令可以在頁(yè)面中使用這些基本標(biāo)記或自定義的標(biāo)記來(lái)完成特殊的功能,在JSP頁(yè)面中啟動(dòng)客戶端定制行為。taglib指令語(yǔ)

13、法格式如下: taglib元素具有兩個(gè)屬性: uri:指定標(biāo)簽庫(kù)存放位置。 prefix:該屬性指定了標(biāo)簽的前綴,此前綴不能使用已被sun公司聲 明保留字。前綴名不能為jsp、jspx、java、javax、servlet、 sun、和sunw。 2019:59:063.5 JSP動(dòng)作元素動(dòng)作元素 3.5.1 包含文件: 3.5.2 請(qǐng)求轉(zhuǎn)發(fā): 3.5.3 聲明使用JavaBean: 3.5.4 設(shè)置JavaBean屬性值: 3.5.5 獲取JavaBean屬性值: 3.5.6 聲明使用Java插件:與 3.5.7 參數(shù)傳遞:與 3.5.8 其他動(dòng)作元素 2119:59:06包含文件:包含文件

14、: (1) 該元素允許包含動(dòng)態(tài)或靜態(tài)文件,如果包含的文件是靜態(tài)的,它僅僅是把包含文件的內(nèi)容加到JSP文件中去。包含靜態(tài)文件的使用格式如下: 如果包含的文件是動(dòng)態(tài)的。這個(gè)被包含文件也會(huì)被JSP編譯器執(zhí)行,并且在編譯時(shí)可以傳遞參數(shù)。包含動(dòng)態(tài)文件使用格式如下: 2219:59:06包含文件:包含文件: (2) 屬性及子元素 page屬性:該屬性指定了被包含文件的路徑,其值可以是相 對(duì)路徑的表達(dá)式。當(dāng)路徑是以“/”開(kāi)頭時(shí),則按 照當(dāng)前應(yīng)用的路徑查找該文件;如果路徑是以文 件名或目錄名稱開(kāi)頭,那么,將按照當(dāng)前的路徑 查找被包含的文件。 flush屬性:該屬性標(biāo)識(shí)當(dāng)輸出緩沖區(qū)滿時(shí),是否清空緩沖區(qū) 該屬性默

15、認(rèn)值為false,通常情況下設(shè)置為true。 子元素:該子元素可以向被包含的動(dòng)作頁(yè)面中 傳遞參數(shù)。 2319:59:06包含文件:包含文件: (3) 與include指令的區(qū)別 (1)是直接包含源代碼,包含請(qǐng)求的 HTML代碼,并且支持JSP表達(dá)式和Struts應(yīng)用中的請(qǐng)求模式。(2)通過(guò)包含一個(gè)JSP頁(yè)面,在包含的頁(yè)面中相關(guān)的 response操作都被忽略,也就是說(shuō)當(dāng)前操作不能通過(guò)response對(duì)象重定向到其他頁(yè)面。如果用包含的JSP頁(yè)面,在該頁(yè)面中所有的response操作都會(huì)正常運(yùn)行。(3)元素請(qǐng)求代碼時(shí),可以帶參數(shù),而不可以帶參數(shù)。(4)從執(zhí)行速度角度上講,比請(qǐng)求速度快, 因?yàn)閮H處理

16、一個(gè)請(qǐng)求,而處理兩個(gè)請(qǐng)求(兩個(gè)servlet)。(5)從實(shí)際應(yīng)用角度上講,用于檢測(cè)用戶是否登錄、網(wǎng)站標(biāo)識(shí)或網(wǎng)站的一些靜態(tài)不變的信息;而用于發(fā)送一個(gè)請(qǐng)求,并接收返回的HTML,并可以加入?yún)?shù)。 09:13:59Include指令和動(dòng)作的區(qū)別:示例指令和動(dòng)作的區(qū)別:示例date.jsp document.write(); Include指令和動(dòng)作的區(qū)別:示例指令和動(dòng)作的區(qū)別:示例test.jsp 把把date.jsp頁(yè)面用頁(yè)面用include插入插入test.jsp頁(yè)面中頁(yè)面中include的兩種用法%- -%- -% jsp:include page= flush=false/ 有關(guān)jsp中in

17、clude的兩種用法.敬請(qǐng)關(guān)注。2619:59:07使用include動(dòng)作還是include指令? 對(duì)不經(jīng)常變化的內(nèi)容,用include指令是合適的,如果需要的內(nèi)容是經(jīng)常變化的,則需要?jiǎng)幼髟? 使用include指令,如果被包含的文件發(fā)生改變,那么,用到它的所有Jsp頁(yè)面都需要更新。僅當(dāng)include動(dòng)作不能滿足要求時(shí),我們才應(yīng)該使用include指令。2719:59:07既然include指令產(chǎn)生難以維護(hù)的代碼,為什么還要使用它?因?yàn)閕nclude指令更為強(qiáng)大。include指令允許所包含的文件中含有影響主頁(yè)面的Jsp代碼,比如響應(yīng)報(bào)頭的設(shè)置和字段、方法的定義。例子:/subpage.js

18、p/mainpage.jsp 當(dāng)然使用include動(dòng)作時(shí)這是不可能的,因?yàn)閚um變量未定義,主頁(yè)面不能成功的轉(zhuǎn)換成servlet。2819:59:07請(qǐng)求轉(zhuǎn)發(fā):請(qǐng)求轉(zhuǎn)發(fā): 該元素用于將客戶端請(qǐng)求從一個(gè)頁(yè)面轉(zhuǎn)發(fā)到另一個(gè)JSP頁(yè)面、HTML或相關(guān)的資源文件中。當(dāng)該元素被執(zhí)行后,當(dāng)前頁(yè)面將不再被執(zhí)行,而是去執(zhí)行該元素指定的目標(biāo)頁(yè)面。使用格式如下: 如果轉(zhuǎn)發(fā)目標(biāo)是一個(gè)動(dòng)態(tài)文件,還可以向該文件中傳遞多個(gè)參數(shù),具體使用格式如下: 參數(shù)及元素說(shuō)明: page屬性:該屬性指定了目標(biāo)文件的路徑。 元素:該元素用來(lái)向動(dòng)態(tài)的目標(biāo)文件中傳遞參數(shù)。 請(qǐng)求轉(zhuǎn)發(fā)和請(qǐng)求重定向請(qǐng)求轉(zhuǎn)發(fā)和請(qǐng)求重定向本質(zhì)區(qū)別: n 請(qǐng)求轉(zhuǎn)發(fā):存

19、儲(chǔ)在request中的信息會(huì)被保留并被帶到目標(biāo)頁(yè)面中。n 請(qǐng)求重定向:重新生成一個(gè)request請(qǐng)求,然后將請(qǐng)求重定向到指定URL,存儲(chǔ)在request對(duì)象中的信息都會(huì)丟失。表象區(qū)別:n 請(qǐng)求轉(zhuǎn)發(fā):地址欄中看不到目標(biāo)頁(yè)面n 請(qǐng)求重定向:地址欄中可以看到目標(biāo)頁(yè)面用途上的區(qū)別:請(qǐng)求轉(zhuǎn)發(fā):只能將請(qǐng)求轉(zhuǎn)發(fā)給同一個(gè)WEB應(yīng)用中的組件。重定向:重定向還可以重新定向到同一站點(diǎn)不同應(yīng)用程序中的資源,甚至可以定向到一絕對(duì)的URL。執(zhí)行上的區(qū)別:重定向跳轉(zhuǎn)后必須加上return,要不然頁(yè)面雖然跳轉(zhuǎn)了,但是還會(huì)執(zhí)行跳轉(zhuǎn)后面的語(yǔ)句,轉(zhuǎn)發(fā)是執(zhí)行了跳轉(zhuǎn)頁(yè)面,下面的代碼就不會(huì)在執(zhí)行了。jsp:forward示例示例forw

20、ord.jsp %- -%date.jsp 聲明使用聲明使用JavaBean: 該元素可以在JSP頁(yè)面中創(chuàng)建一個(gè)JavaBean實(shí)例,并且通過(guò)屬性的設(shè)置可以將該實(shí)例存儲(chǔ)到JSP中的指定范圍內(nèi)。使用格式如下:其他元素設(shè)置,如 聲明使用聲明使用JavaBean: 屬性說(shuō)明 id屬性:該屬性指定一個(gè)變量,在所定義的范圍內(nèi)或Scriptlet中將使用該變量來(lái)對(duì)所創(chuàng)建的JavaBean實(shí)例進(jìn)行引用。該變量必須符合Java中變量的命名規(guī)則。 scope屬性:該屬性指定了所創(chuàng)建JavaBean實(shí)例的存取范圍,默認(rèn)屬性值是“page”。元素被執(zhí)行時(shí),首先會(huì)在scope屬性指定的范圍來(lái)查找指定的JavaBean

21、實(shí)例,如果該實(shí)例已經(jīng)存在,則引用這個(gè)JavaBean,若不存在將重新創(chuàng)建,并將其保存在scope屬性指定的范圍內(nèi)。聲明使用聲明使用JavaBean:屬性名稱獲取方式描述page無(wú)指定創(chuàng)建的JavaBean實(shí)例只能夠在當(dāng)前的JSP文件中使用,包括通過(guò)include靜態(tài)指令包含的頁(yè)面中有效requestrequest對(duì)象的getAttribute(“id屬性”)方法獲取指定創(chuàng)建的JavBean實(shí)例可以在請(qǐng)求范圍內(nèi)進(jìn)行存取sessionsession對(duì)象的getAttribute (“id屬性”)方法獲取指定創(chuàng)建的JavBean實(shí)例可以在session范圍內(nèi)進(jìn)行存取applicationapplic

22、ation對(duì)象的getAttribute (“id屬性”)方法獲取指定創(chuàng)建的JavBean實(shí)例可以在application范圍內(nèi)進(jìn)行存取聲明使用聲明使用JavaBean: class屬性:該屬性指定了一個(gè)完整的類名,指定的類名不能是抽象的,它必須具有公共的、沒(méi)有參數(shù)的構(gòu)造方法。在沒(méi)有設(shè)置type屬性時(shí),必須設(shè)置class屬性。 程序首先會(huì)在session范圍內(nèi)查找是否存在名為userInfo的UserInfo類的實(shí)例,如果不存在,那么會(huì)通過(guò)new操作符實(shí)例化UserInfo來(lái)獲取一個(gè)實(shí)例,并以u(píng)serInfo為實(shí)例名稱存儲(chǔ)到session范圍內(nèi)。 聲明使用聲明使用JavaBean: type屬

23、性:該屬性用于設(shè)置由id屬性指定的變量類型,可以指定要?jiǎng)?chuàng)建實(shí)例的類本身、類的父類或是一個(gè)接口。如: 在session范圍內(nèi),如果已經(jīng)存在name實(shí)例,則將該實(shí)例轉(zhuǎn)換為type屬性指定的String類型,并賦值給id屬性指定的變量;若指定的實(shí)例不存在,則出現(xiàn)異常。 聲明使用聲明使用JavaBean: beanName屬性:該屬性可以是類文件、JavaBean實(shí)例或包含JavaBean的串行化文件(.ser文件)。當(dāng)JavaBean不存在指定范圍內(nèi)時(shí),才可以使用此屬性。它必須使用type屬性來(lái)指定要將何種類型的Bean實(shí)例化。(1)beanName屬性不能與class屬性一起使用,并且區(qū)分大小寫(xiě)。

24、(2)使用beanName主要用來(lái)實(shí)例化一個(gè)串行化的Bean,而不是用來(lái)從一個(gè)類創(chuàng)建一個(gè)全新的實(shí)例。如果Bean還沒(méi)有創(chuàng)建, beanName屬性傳給java.beans.instantiate()方法,由類裝載器對(duì)類進(jìn)行實(shí)例化。它首先假定存在一個(gè)串行化的Bean(帶擴(kuò)展名.ser),然后會(huì)將其激活。如果這個(gè)操作失敗,它就會(huì)實(shí)例化一個(gè)新的實(shí)例。 使用java.beans.Beans.instantiate方法,從一個(gè)class或連續(xù)模版中實(shí)例化一個(gè)Bean,同時(shí)指定Bean的類型。 beanName可以是package和class也可以是表達(dá)式,它的值會(huì)傳給Beans。 class屬性與typ

25、e屬性并用: class屬性與type屬性可以指定同一個(gè)類。格式如下:假定UserBase類是UserInfo類的父類,上述代碼的執(zhí)行流程如圖:userInfo是是UseBase類的對(duì)象,并賦值為類的對(duì)象,并賦值為null在在session范圍內(nèi)查找范圍內(nèi)查找userInfo實(shí)例對(duì)象實(shí)例對(duì)象判斷查詢判斷查詢的對(duì)象是否為的對(duì)象是否為null實(shí)例化實(shí)例化UserInfo對(duì)象并對(duì)象并賦值給賦值給userInfo對(duì)象對(duì)象將查找的將查找的userInfo對(duì)象對(duì)象賦值給賦值給UseBase類的對(duì)象類的對(duì)象將將userInfo對(duì)象保存在對(duì)象保存在session范圍內(nèi)范圍內(nèi)存在不存在圖圖3-8 class屬性

26、與屬性與type屬性并用執(zhí)行流程屬性并用執(zhí)行流程3919:59:07聲明使用聲明使用JavaBean:元素的使用: (1)不存在Body的格式如下: (2)存在Body的格式如下: Class與與type屬性并用:示例屬性并用:示例相當(dāng)于ClassA name=new ClassA();相當(dāng)于ClassB name=new ClassA(); beanName屬性與type屬性并用: beanName屬性與type屬性可以指定同一個(gè)類。格式如下: beanName屬性與type屬性并用和class屬性與type屬性并用的代碼執(zhí)行流程是完全相同的。聲明使用聲明使用JavaBean:元素的使用:

27、(1)不存在Body的格式如下: (2)存在Body的格式如下: 聲明使用聲明使用JavaBean: 這兩種使用方法是有區(qū)別的。 對(duì)于 元素的第2種使用格式,在頁(yè)面中應(yīng)用元素創(chuàng)建一個(gè)JavaBean時(shí),如果該JavaBean是第1次被實(shí)例化,那么元素體內(nèi)的內(nèi)容會(huì)被執(zhí)行,若已經(jīng)存在了指定的JavaBean實(shí)例,則元素內(nèi)的內(nèi)容就不再被執(zhí)行。 對(duì)于第1種使用格式,無(wú)論在指定的范圍內(nèi)是否已經(jīng)存在一個(gè)指定的JavaBean實(shí)例, 元素后面的內(nèi)容都會(huì)被執(zhí)行。 用戶注冊(cè)實(shí)例:用戶注冊(cè)實(shí)例:下面通過(guò)用戶注冊(cè)的實(shí)例來(lái)說(shuō)明如何使用元素: 在用戶注冊(cè)頁(yè)面中,將用戶注冊(cè)的表單信息填寫(xiě)完畢后,進(jìn)行提交表單操作,表單會(huì)被

28、提交到showUserInfo.jsp頁(yè)面,在該頁(yè)面中應(yīng)用元素將用戶輸入的信息賦值給由元素所創(chuàng)建的JavaBean中的對(duì)應(yīng)熟悉。具體實(shí)現(xiàn)步驟如下:(1)創(chuàng)建名稱為UserInfo.java類文件,用于存儲(chǔ)用戶注冊(cè)的基本信息。具體代碼如下:user.javapackage com.wy.model;public class UserInfo private String account = ;private String password = ;private String realname = ;private String email = ;private String sex = ;pub

29、lic String getAccount() return account;public void setAccount(String account) this.account = account;用戶注冊(cè)實(shí)例:用戶注冊(cè)實(shí)例:(2)創(chuàng)建用戶輸入注冊(cè)信息的頁(yè)面)創(chuàng)建用戶輸入注冊(cè)信息的頁(yè)面index.jsp,在該頁(yè)面中,在該頁(yè)面中的的form表單將被提交到表單將被提交到showUserInfo.jsp中,并且表單中的中,并且表單中的5個(gè)表單元素的名稱個(gè)表單元素的名稱account、password、realname、email和和sex與與UserInfo類中的類中的5個(gè)屬性是相同的,只有這樣

30、,才能應(yīng)個(gè)屬性是相同的,只有這樣,才能應(yīng)用用元素元素將表單元素與將表單元素與UserInfo類中的屬性進(jìn)行一一映射。用戶注冊(cè)類中的屬性進(jìn)行一一映射。用戶注冊(cè)信息的頁(yè)面信息的頁(yè)面index.jsp的關(guān)鍵代碼如下:的關(guān)鍵代碼如下:index.jsp 賬號(hào):賬號(hào):     密碼:密碼:     真實(shí)姓名:真實(shí)姓名:  Email地址:地址: (3)創(chuàng)建接收用戶注冊(cè))創(chuàng)建接收用戶注冊(cè)form表單的表單的JSP頁(yè)面頁(yè)面showUserInfo.jsp,在該頁(yè)面中顯示用戶注冊(cè)信息。,在該頁(yè)面中顯示用戶注冊(cè)信息。賬號(hào):

31、賬號(hào):密碼:密碼:4919:59:07設(shè)置設(shè)置JavaBean屬性值屬性值: :(1) 該元素通常情況下與元素一起使用,它調(diào)用JavaBean中的setXXX()方法,將請(qǐng)求中的參數(shù)賦值給由元素創(chuàng)建的JavaBean中對(duì)象的簡(jiǎn)單屬性或索引屬性。該屬性的使用格式如下: 元素的屬性 name:該屬性用來(lái)指定一個(gè)存在JSP中某個(gè)范圍中的JavaBean 實(shí)例。 5019:59:07設(shè)置設(shè)置JavaBean屬性值屬性值: :(2)元素的屬性 property=“*”:該屬性說(shuō)明request請(qǐng)求中的所有參數(shù)值將被一一 賦給JavaBean中與參數(shù)具有相同名字的屬性。 property=“屬性名稱”:該

32、屬性取值為JavaBean中的屬性時(shí),則只 會(huì)將request請(qǐng)求中與該JavaBean屬性同名的一個(gè) 參數(shù)的致賦給這個(gè)JavaBean屬性。 property=“屬性名稱” param=“參數(shù)名稱”:param屬性指定一個(gè) request請(qǐng)求中的參數(shù),property屬性指定JavaBean 中的某個(gè)屬性。該方法允許將請(qǐng)求中的參數(shù)賦值 給JavaBean中與該參數(shù)不同名的屬性。 property=“屬性名” value=“值”:value屬性指定的值可以是字符串 數(shù)值或標(biāo)識(shí)一個(gè)具體指的JSP表達(dá)式或EL表達(dá)式。該值將被賦值給property屬性指定的JavaBean屬性。 5119:59:0

33、7獲取獲取JavaBean屬性值:屬性值: 該屬性用來(lái)從指定的JavaBean中讀取指定的屬性值,并輸出到頁(yè)面中。該JavaBean必須具有g(shù)etXXX()方法。元素的使用格式如下: 元素的屬性 name屬性:該屬性用來(lái)指定一個(gè)存在某個(gè)JSP范圍中的 JavaBean實(shí)例。 property屬性:該屬性指定了要獲取由name屬性指定的 JavaBean中的哪個(gè)屬性值。 5219:59:07聲明使用聲明使用Java插件插件: :與與(1) 元素可以在頁(yè)面中插入Java Applet小程序或JavaBean,它們能夠在客戶端運(yùn)行,該元素會(huì)根據(jù)客戶端瀏覽器的版本轉(zhuǎn)換成或HTML元素。當(dāng)轉(zhuǎn)換失敗時(shí),元

34、素用來(lái)顯示用戶的提示信息。因此,與通常情況下一起使用,使用格式如下: jsp:param name=parameterName value=parameterValue | / text message for user 5319:59:07聲明使用聲明使用Java插件插件: :與與(2) 其中各參數(shù)意義如下:屬性與參數(shù)名稱含義type指定了所要加載插件對(duì)象的類型,可選值為“bean”和“applet”codecodebase用來(lái)指定code屬性指定的Java類文件所在的路徑。默認(rèn)值為當(dāng)前訪問(wèn)的JSP頁(yè)面路徑name指定了加載的Applet或JavaBean的名稱archive指定預(yù)先加載的存檔文件的路徑,多個(gè)路徑可用逗號(hào)進(jìn)行分隔align主要是加載的插件對(duì)象在頁(yè)面中顯示時(shí)的對(duì)齊方式。可選值為bottom、top、middle、left和rightheight加載的插件對(duì)象在頁(yè)面中顯示時(shí)的高度,單位為像素。支持JSP表達(dá)式或EL表達(dá)式width加載的插件對(duì)象在頁(yè)面中顯示

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論