第4章JSP基本語法_第1頁
第4章JSP基本語法_第2頁
第4章JSP基本語法_第3頁
第4章JSP基本語法_第4頁
第4章JSP基本語法_第5頁
已閱讀5頁,還剩76頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第4章章 JSP基本語法基本語法JSP語法指令元素(DIRECTIVE) 例如: 腳本元素(SCRIPTING)動(dòng)作元素(ACTION) 例如: ,JSP語法分為三種不同的類型 本章學(xué)習(xí)目標(biāo): 掌握J(rèn)SP的腳本元素:“隱藏注釋”、“聲明”、“表達(dá)式” 掌握J(rèn)SP的指令元素:page、include 掌握J(rèn)SP的動(dòng)作元素:、 掌握include指令和的區(qū)別 掌握J(rèn)SP的動(dòng)作元素:、和 了解JSP的動(dòng)作元素:4.1 JSP文件的結(jié)構(gòu) 在傳統(tǒng)的的網(wǎng)頁HTML(*.htm、*.html)中加入Java程序片斷,就構(gòu)成了JSP網(wǎng)頁(*.JSP)。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請(qǐng)求時(shí),首先執(zhí)行其中的

2、程序片斷,然后將執(zhí)行結(jié)果以HTML格式返回給客戶端。JSP文件結(jié)構(gòu) HTML、CSS、JavaScriptXMLJSP腳本元素:聲明、表達(dá)式、腳本元素:聲明、表達(dá)式、Java程序程序片段(片段(Scriplets)、隱藏注釋)、隱藏注釋指令元素(指令元素(page、include、taglib)動(dòng)作元素(動(dòng)作元素(include、useBean、param、forward、setProperty、getProperty)靜態(tài)部分靜態(tài)部分動(dòng)態(tài)部分動(dòng)態(tài)部分以下是一段簡單的JSP程序,其中包含了最基本的Java語法及重要的JSP網(wǎng)頁結(jié)構(gòu)?!纠?-1】 第一個(gè)JSP程序helloJSP.jsp我的第一

3、個(gè)JSP程序! 4.1.1 創(chuàng)建第一個(gè)JSP文件 在瀏覽器中查看此網(wǎng)頁,并刷新,其結(jié)果如圖4-1所示。 圖4-1 helloJSP.jsp執(zhí)行結(jié)果4.1.2分析JSP文件的組成元素helloJSP.jsp網(wǎng)頁例子的結(jié)構(gòu)page指令這行代碼為page指令,page是JSP指令元素的一種批注區(qū)塊里的程序代碼,程序執(zhí)行的過程中,這些標(biāo)識(shí)的程序代碼都將被忽略。批注在程序中可有可無,然而為了程序日后便于維護(hù),為程序加上良好的批注,是一個(gè)優(yōu)秀的程序員必須養(yǎng)成的習(xí)慣。數(shù)據(jù)輸出out對(duì)象進(jìn)行指定字符串的輸出。out是JSP中的默認(rèn)對(duì)象,主要用來輸出數(shù)據(jù)到客戶端網(wǎng)頁上。println則是out對(duì)象提供將字符串等

4、數(shù)據(jù)輸出網(wǎng)頁的方法,接受一個(gè)特定類型的參數(shù),并且將參數(shù)的內(nèi)容輸出到網(wǎng)頁上。且其中每一行完整的程序語句,均必須以分號(hào)(;)作為結(jié)束。而下面的這行代碼使用的是表達(dá)式,也是腳本元素的一部分,在表達(dá)式中調(diào)用count方法,計(jì)算訪問該頁面的人數(shù),并在頁面上輸出結(jié)果。 聲明這段代碼表示的是聲明,這里聲明了一個(gè)公有的變量number,還聲明了一個(gè)共有的方法count。這里還需要注意的是,聲明是腳本元素的一部分,在后面的4.2節(jié)中將詳細(xì)為讀者介紹腳本元素。 JSP原始代碼中包含了JSP元素和Template(模板) data兩類 Template data指的是JSP引擎不處理的部分,即標(biāo)記以外的部分,例如代

5、碼中的HTML的內(nèi)容等 ,這些數(shù)據(jù)會(huì)直接傳送到客戶端的瀏覽器 JSP元素則是指將由JSP引擎直接處理的部分,這一部分必須符合JSP語法,否則會(huì)導(dǎo)致編譯錯(cuò)誤。 4.2 JSP的腳本元素 JSP的腳本,即Scripting Elements,包含以下4部分(1)隱藏注釋(Hidden Comment) (2)聲明(Declaration) (3)腳本段(ScriptLets) (4)表達(dá)式(Expression) 4.2.1隱藏注釋(Hidden Comment) JSP 語法格式如下: 不發(fā)送到客戶端。 注意:隱藏注釋內(nèi)容可以寫任意字符串,但是在注釋內(nèi)容中不能使用“-%”,如果要使用“-%”,則

6、必須寫成“-%” JSP語句中的隱藏注釋鑲嵌在JSP程序的源代碼中,使用隱藏注釋的目的并不是提醒用戶,而是為了: 使程序設(shè)計(jì)人員和開發(fā)人員閱讀程序方便,增強(qiáng)程序的可讀性。 在增強(qiáng)程序可讀性的同時(shí),又顧及程序系統(tǒng)的安全性。如果用戶通過Web瀏覽器查看該JSP頁面,是看不到隱藏注釋的內(nèi)容的。 “隱藏注釋”寫在JSP程序代碼中,但不發(fā)送到客戶端。 【例4-2】 隱藏注釋hidden-comment.jsp隱藏注釋示例隱藏注釋測試 將此程序執(zhí)行后,可在瀏覽器上看到如圖4-2所示結(jié)果。查看源文件,注釋的語句沒有顯示出來。圖4-2 hidden-comment.jsp頁面運(yùn)行效果隱藏注釋和HTML注釋的比

7、較 HTML注釋語法格式如下: !- 注釋 - 這種注釋發(fā)送到客戶端,但不直接顯示,在源代碼中可以查看到。【例4-3】 HTML注釋html-notes.jspHTML注釋未顯示上一行的注釋。HTML注釋 將此程序執(zhí)行后,可在瀏覽器上看到如圖4-3所示結(jié)果。查看源文件,注釋的語句會(huì)顯示出來。圖4-3 html-notes.jsp頁面運(yùn)行效果 【例4-4】比較兩種注釋方式comparison-notes.jspScriptlets中的注釋由于Scriptlets包含Java代碼,所以Java中的注釋規(guī)則在Scriptlets中也適用。常用的Java注釋使用“/”表示單行注釋,使用“/* */”表

8、示多行注釋。例如也可以這樣4.2.2聲明語句(Declaration) 可以在JSP頁中定義方法或變量,這些方法和變量可被同一頁面的其他代碼訪問。在大多數(shù)情況下,應(yīng)該在JavaBean中定義方法,然而有時(shí)候在網(wǎng)頁內(nèi)定義方法可能更方便一些,尤其是當(dāng)代碼只用于一頁時(shí)。 JSP 語法格式如下: 在JSP里,聲明是一段Java代碼,它用來定義在產(chǎn)生的類文件中類的屬性和方法。聲明后的變量和方法可以在JSP的任意地方使用,可以聲明方法,也可以聲明變量。注意:聲明并不在JSP頁內(nèi)產(chǎn)生任何輸出。它們僅僅用于定義,而不生成輸出結(jié)果。要生成輸出結(jié)果,應(yīng)該用JSP表達(dá)式或腳本段 在聲明方法或變量時(shí),應(yīng)該注意以下方面

9、: 聲明必須以“;”結(jié)尾,在這一點(diǎn)上JSP語法中的Scriptlet語句有同樣的規(guī)則,但是JSP語法中的表達(dá)式就不能以“;”結(jié)尾。 可以直接使用在中被包含進(jìn)來的已經(jīng)聲明的變量和方法,不需要對(duì)它們重新進(jìn)行聲明。 一個(gè)聲明僅在一個(gè)頁面中有效,對(duì)于一些在每個(gè)頁面都用得到的聲明,最好把它們寫成一個(gè)單獨(dú)的文件,然后用或語句把該文件及文件中的各個(gè)元素包含進(jìn)來。 由于聲明不會(huì)有任何輸出,因此它們往往和JSP表達(dá)式或Scriptlet結(jié)合在一起使用。 JSP的變量可以分為局部變量和全局變量,在JSP中聲明變量時(shí),要注意變量的定義域。 在程序片斷中聲明的變量,即在中聲明的變量是JSP的局部變量,它們對(duì)外部函數(shù)是

10、不可見的。 在中聲明的變量是全局變量,這種變量在整個(gè)JSP頁面內(nèi)都有效。因?yàn)镴SP引擎將JSP頁面編譯成Java文件時(shí),將這些變量做為類的成員變量,這些變量的內(nèi)存空間直到服務(wù)器關(guān)閉后才釋放。 在中聲明的方法,該方法在整個(gè)JSP頁面內(nèi)有效,但是在該方法內(nèi)定義的變量只在該方法內(nèi)有效。 【例4-5】比較局部變量和全局變量的不同之處wellcome.jsp 【例4-6】 方法的聲明dec-method.jsp 4.2.3腳本段(Scriptlets) JSP 語法格式如下: 腳本段內(nèi)還能定義局部變量。 注意:腳本段內(nèi)不能定義方法,這與聲明不同,這是因?yàn)镴SP引擎會(huì)把腳本段內(nèi)的代碼放到Servlet內(nèi)的

11、方法內(nèi),而方法是不能被嵌套定義的。 如果要使用“%”,則必須寫成“%” 一個(gè)Scriptlet能夠包含多個(gè)JSP語句、方法、變量、表達(dá)式。有了Scriptlet,用戶可以進(jìn)行以下操作。 聲明將要用到的變量或方法。 編寫JSP表達(dá)式。 使用任何隱含的對(duì)象和任何用聲明過的對(duì)象。 編寫JSP語句 (如果使用Java語言,這些語句必須遵從Java Language Specification,即Java語言規(guī)范)。 填寫任何文本和HTML標(biāo)記,注意JSP元素必須在Scriptlet之外。 【例4-7】程序scriptlets.jsp混合了靜態(tài)HTML代碼和Scriptlet 。 注意: 如果要在Scr

12、iptlet內(nèi)部使用字符“%”,必須寫成“%”。 腳本段內(nèi)不能定義方法,這與聲明不同,這是因?yàn)镴SP引擎會(huì)把腳本段內(nèi)的代碼放到Servlet內(nèi)的方法內(nèi),而方法是不能被嵌套定義的。 4.2.4表達(dá)式(Expression) 用于在頁面上輸出信息,語法格式如下: 計(jì)算Java表達(dá)式得到的結(jié)果被轉(zhuǎn)換成字符串,然后插入到頁面。表達(dá)式值頁面被請(qǐng)求時(shí)進(jìn)行,例如: /輸出系統(tǒng)當(dāng)前時(shí)間 /輸出Hello /輸出9 表達(dá)式的值在執(zhí)行后會(huì)被自動(dòng)轉(zhuǎn)化為字符串,然后顯示出來。 在JSP頁面中使用表達(dá)式時(shí)請(qǐng)注意以下兩點(diǎn): 不能用分號(hào)“;”作為表達(dá)式的結(jié)束符,這一點(diǎn)與Scriptlet不同,同樣的表達(dá)式用在Scriptl

13、et中時(shí),就需要以分號(hào)來作為一句Scriptlet語句的結(jié)尾。 有時(shí)候表達(dá)式也能作為其他JSP元素的屬性值,一個(gè)表達(dá)式能夠變得很復(fù)雜,它可能由一個(gè)或者多個(gè)表達(dá)式組成,這些表達(dá)式的順序是從左到右。 注意: JSP的表達(dá)式中沒有分號(hào),除非在加引號(hào)的字符串部分才使用分號(hào)。 如Current time: 表達(dá)式實(shí)際上是被轉(zhuǎn)換成out.println()方法中的內(nèi)容。如: 相當(dāng)于JSP頁面中的: 錯(cuò)誤4.3 JSP指令元素 JSP有三個(gè)指令元素,page,include和taglib。這些指令元素是針對(duì)JSP引擎的,并不會(huì)直接產(chǎn)生任何看得見的輸出。它們包含在“”里。兩個(gè)主要的指令是page與includ

14、e,taglib指令只有在使用標(biāo)簽庫編程時(shí)才使用。4.3.1 Page指令 “Page”指令用于定義JSP文件中的全局屬性。 JSP 語法格式如下: Language屬性屬性language屬性用來設(shè)定編寫JSP網(wǎng)頁使用的程序語法,目前處理JSP網(wǎng)頁服務(wù)器中的JSP引擎都只支持Java,因此這個(gè)屬性的默認(rèn)值為Java。 Extends屬性屬性 extends=“package.class”,extends屬性定義了由JSP頁面產(chǎn)生的servlet的父類,一般來說,這個(gè)屬性不會(huì)用到,但是當(dāng)需要實(shí)現(xiàn)一些特殊功能時(shí),也是比較方便的。 Import屬性屬性 import屬性用來指定所要加載的非預(yù)設(shè)Ja

15、va包或類 。 默認(rèn)加載的包類有java.lang.*、javax.servlet.*、javax.servlet.jsp.*和javax.servlet.http.* 載入非預(yù)設(shè)包,如加載了2個(gè)包java.util.*和java.io.*,以逗號(hào)作分隔。 Session屬性屬性session屬性的屬性值可為true或false,用來設(shè)定JSP網(wǎng)頁是否使用內(nèi)建的session對(duì)象與功能,默認(rèn)值為true。Session對(duì)象的類型是javax.servlet.http.HttpSession。 Buffer屬性屬性 設(shè)定JSP網(wǎng)頁所使用的緩沖區(qū)大小。 緩沖區(qū)是用來暫存一些要傳送給客戶端的數(shù)據(jù),默

16、認(rèn)值為8kb。 設(shè)定值none,表示不使用緩沖區(qū)的功能,直接將服務(wù)器響應(yīng)的輸出寫到客戶端的瀏覽器上。 設(shè)定緩沖區(qū)的大小值必須大于8kb: autoFlush說確定是否自動(dòng)刷新輸出緩沖,如果設(shè)成true,則當(dāng)輸出緩沖區(qū)滿的時(shí)候,刷新緩沖區(qū)而不是拋出一個(gè)異常 isThreadSafe屬性屬性 isThreadSafe屬性的屬性值可為true或false缺省值是true,用來設(shè)置JSP文件是否能多線程使用。如果被設(shè)置為true,那么多個(gè)客戶請(qǐng)求發(fā)向JSP引擎時(shí),可以一次被處理。JSP程序員要處理同步時(shí)共享的狀態(tài),以保證同步時(shí)確實(shí)是安全的。如果設(shè)置成false,則采用單線程模式控制客戶端訪問該頁。 I

17、nfo屬性屬性 設(shè)定一個(gè)代表當(dāng)前這個(gè)JSP網(wǎng)頁的信息。 設(shè)定內(nèi)容可在程序中使用getServletInfo()方法來取得。 設(shè)定info屬性: contentType=“mineType” 定義MIME類型和JSP網(wǎng)頁的編碼方式 ErrorPage 設(shè)定當(dāng)前網(wǎng)頁產(chǎn)生例外錯(cuò)誤時(shí),可取得與顯示這個(gè)例外錯(cuò)誤信息的另一個(gè)網(wǎng)頁地址: 當(dāng)目前的網(wǎng)頁發(fā)生例外錯(cuò)誤時(shí),網(wǎng)頁被重定向到error.jsp ,error.jsp中可直接使用exception對(duì)象來獲取相關(guān)的錯(cuò)誤信息。 isErrorPage 用來設(shè)定網(wǎng)頁是否可顯示其它網(wǎng)頁所產(chǎn)生的例外信息,此屬性的默認(rèn)值為false。 “”指令作用于整個(gè)JSP頁面,同

18、樣包括靜態(tài)的包含文件。但是“”指令不能作用于動(dòng)態(tài)的包含文件,比如 “”。 可以在一個(gè)頁面中用上多個(gè)“”指令,但是其中的屬性只能用一次,不過也有例外,那就是import屬性。因?yàn)閕mport屬性和Java中的import語句類似(參照J(rèn)ava Language,import語句引入得是Java語言中的類),所以此屬性就能多用幾次。 無論把“”指令放在JSP的文件的哪個(gè)地方,它的作用范圍都是整個(gè)JSP頁面。不過,為了JSP程序的可讀性,以及好的編程習(xí)慣,最好還是把它放在JSP文件的頂部。 【例4-8】 中文編碼示范setCharset.jsp。 【例4-9】 setInfo.jsp簡單示范了inf

19、o屬性的設(shè)置方式。 【例4-10】 說明了出錯(cuò)頁面pageError.jsp如何從error.jsp取得發(fā)生的錯(cuò)誤信息。 4.3.2 include指令 include指令:向當(dāng)前頁中插入一個(gè)靜態(tài)文件的內(nèi)容。 JSP 語法格式如下: 或 include指令將會(huì)在JSP編譯時(shí)插入被包含文件的內(nèi)容,被包含的文件內(nèi)容常常是代碼段,因此代碼片斷的后綴名最好時(shí)以“f”(fragment的第一個(gè)字母)結(jié)尾,例如,“.htmlf”、”.jspf”等,這么做的好處是避免JSP編譯器對(duì)該文件內(nèi)容進(jìn)行語法檢查。 如果要改變filename的內(nèi)容,不需重新編譯JSP文件, 它的執(zhí)行效率高。 include指令將會(huì)在

20、JSP編譯時(shí)插入一個(gè)文件,而這個(gè)包含過程是靜態(tài)的。所謂靜態(tài)的是指file屬性值不能是一個(gè)變量,例如,下面為file屬性賦值方式是不合法的。 % include file=“”% 也不可以在file所指定的文件后添加任何參數(shù),下面的這行代碼是不合法的。 由于使用include指令,可以把一個(gè)復(fù)雜的JSP頁面分成若干簡單的部分,這樣大大增加了JSP頁面的管理性。當(dāng)要對(duì)頁面進(jìn)行更改時(shí),只需要更改對(duì)應(yīng)的部分就可以了。 被包含文件可以是JSP文件、HTML文件、文本文件、inc文件等。如果包含的文件包含可執(zhí)行代碼,那么這個(gè)包含的文件的代碼將會(huì)被執(zhí)行。 在通常情況下把頁面分成多個(gè)區(qū),典型的JSP分區(qū)方法如

21、圖所示。頭部Header.jsp左邊side.jsp菜單頁面主體:body.jsp功能區(qū)尾部:footer.jsp版權(quán)聲明等 【例4-11】 文件include.jsp中靜態(tài)包含了四個(gè)文件 動(dòng)作語法包括, , ,和。 4.4 JSP動(dòng)作元素 分類項(xiàng)目功能說明JavaBean 使用JavaBean 設(shè)定JavaBean的屬性值 取得JavaBean的屬性值 設(shè)定傳送參數(shù) 一般元素載入Java Applet或JavaBean 網(wǎng)頁重新導(dǎo)向 載入HTML或JSP文件 XML(2.0新增)設(shè)定卷標(biāo)屬性 動(dòng)態(tài)設(shè)定XML卷標(biāo)主體 動(dòng)態(tài)設(shè)定XML卷標(biāo) 4.4.1 包含一個(gè)靜態(tài)或動(dòng)態(tài)文件. JSP 語法格式如

22、下:1jsp:include page=relativeURL | flush=true / 的屬性1page=relativeURL | 參數(shù)為一相對(duì)路徑,或者是代表相對(duì)路徑的表達(dá)式。 2flush=“true” 表示緩沖區(qū)可用,緩沖區(qū)不可用時(shí)設(shè)置為false 。 例:下面的例子表示將hello.jsp包含到當(dāng)前的頁面中來。下面的例子表示將login.jsp包含到當(dāng)前的頁面中來,同時(shí)設(shè)置參數(shù)username=myvalue: 子句能讓你傳遞一個(gè)或多個(gè)參數(shù)給動(dòng)態(tài)頁面。 標(biāo)簽允許你包含動(dòng)態(tài)文件和靜態(tài)文件,但是這兩種包含文件的結(jié)果是不同的,如果文件僅僅是靜態(tài)文件,那么這種包含僅僅是把包含文件的內(nèi)容

23、加到JSP文件中去,這個(gè)被包含的文件不會(huì)被JSP編譯執(zhí)行。相反地,如果被包含文件是動(dòng)態(tài)文件,那么這個(gè)被包含文件會(huì)被JSP編譯器執(zhí)行。 如果被包含文件是動(dòng)態(tài)的,那么還可以用傳遞參數(shù)名和參數(shù)值。 JSP中include指令與include動(dòng)作的區(qū)別簡單說來: include指令是指把其它頁面的JAVA代碼(源碼)加進(jìn)來,跟本頁面的代碼合并在一起,相當(dāng)于把源碼從那個(gè)頁面復(fù)制到本頁面中來,然后再編譯。并且由于本頁面編譯時(shí)已經(jīng)包含了別的文件的源碼,所以以后其它頁面更改時(shí),本頁面并不理會(huì),因?yàn)橐呀?jīng)編譯過了。 動(dòng)作是指兩個(gè)頁面的代碼運(yùn)行完以后,再把包含的那個(gè)頁面運(yùn)行后的HTML結(jié)果頁面加到本頁面運(yùn)行后的HT

24、ML結(jié)果頁面中來。所以是運(yùn)行時(shí)包含,并且還可以傳遞參數(shù)給被包含的頁面。 【例4-12】 通過一個(gè)具體的例子來闡述動(dòng)作元素的用法。文件jsp_include.jsp靜態(tài)包含文件static.html,動(dòng)態(tài)包含action.jsp。 和指令不同的是, 包含的內(nèi)容可以是動(dòng)態(tài)改變的,它在執(zhí)行時(shí)才確定,而前者包含的內(nèi)容是固定不變的,一經(jīng)編譯,就不能改變 表兩種include的異同語法狀態(tài)對(duì)象描述編譯時(shí)包含靜態(tài)JSP引擎將對(duì)所包含的文件進(jìn)行語法分析運(yùn)行時(shí)包含靜態(tài)和動(dòng)態(tài)JSP引擎將不對(duì)所包含的文件進(jìn)行語法分析 主要用于將客戶端的請(qǐng)求從一個(gè)JSP頁面跳轉(zhuǎn)到另一個(gè)JSP頁面。 JSP 語法格式如下:1jsp:f

25、orward page=relativeURL | / 2jsp:forward page=relativeURL | jsp:param name=parameterName value=parameterValue | / (“”指可以有多個(gè)“”標(biāo)記。)4.4.2 屬性: 1、page=relativeURL | 這里是一個(gè)表達(dá)式或是一個(gè)字符串用于說明你將要定向的文件或URL。這個(gè)文件可以是JSP,程序段,或者其它能夠處理request對(duì)象的文件(如asp,cgi,php)。 2.jsp:param name=parameterName value=parameterValue | / 向

26、一個(gè)動(dòng)態(tài)文件發(fā)送一個(gè)或多個(gè)參數(shù),這個(gè)文件必須是動(dòng)態(tài)文件。如果想傳遞多個(gè)參數(shù),可以在一個(gè)JSP文件中使用多個(gè)“”;“name”指定參數(shù)名,“value”指定參數(shù)值。注意 “”標(biāo)簽從一個(gè)JSP文件向另一個(gè)文件傳遞一個(gè)包 含 用 戶 請(qǐng) 求 的request對(duì)象。“”標(biāo)簽以后的代碼,將不能執(zhí)行。 執(zhí)行時(shí)查看瀏覽器地址欄,跳轉(zhuǎn)后地址并沒有發(fā)生變化。 【例4-13】 usingForward.jsp重定向到頁面forwardTo.jsp可以很清楚地了解操作元素的使用方法與功能。 操作典型的使用就是登錄。如進(jìn)行權(quán)限驗(yàn)證的頁面。當(dāng)驗(yàn)證通過后,就把頁面forword到登錄成功的頁面;當(dāng)驗(yàn)證不通過時(shí),就把頁面f

27、orword到登錄頁面。 【例4-14】 login.jsp是用戶登錄界面,checklogin.jsp是登錄驗(yàn)證界面,如果驗(yàn)證成功,它把頁面forword到success.jsp頁面,如果不成功,它把頁面forword到login.jsp頁面進(jìn)行重新驗(yàn)證。 4.4.3 傳遞參數(shù)給JSP程序。 語法: 元素使用時(shí)必須要設(shè)定其name屬性屬性表示傳遞參數(shù)的名稱,value屬性用來設(shè)定該參數(shù)的值。 JSP操作元素和HTML不同,設(shè)定元素的屬性時(shí)必須加上雙引號(hào) 。 在JSP程序中以如下的程序代碼來獲取該參數(shù)的值。 request.getParameter(“參數(shù)名稱); 操作元素的使用必須配合、以及

28、等元素。4.4.4 、 和動(dòng)作 所謂JavaBean,其實(shí)是一個(gè)Java類,封裝了一些常用的復(fù)雜的操作,一般可以使用JavaBean進(jìn)行數(shù)據(jù)庫連接、實(shí)現(xiàn)業(yè)務(wù)邏輯等,可以使得前臺(tái)顯示和后臺(tái)業(yè)務(wù)邏輯更好地分離。使用JavaBean有利于代碼重用,提高程序結(jié)構(gòu)清晰性,這些Java類放在“WEB-INF/classes”目錄內(nèi),可以使用進(jìn)行實(shí)例化,并指定一個(gè)名字和作用域。 JSP 語法格式如下: optional properties tags 屬 性用 法id命名引用該Bean的變量。如果能夠找到id和scope相同的Bean實(shí)例,jsp:useBean動(dòng)作將使用已有的Bean實(shí)例而不是創(chuàng)建新的實(shí)例

29、class指定Bean的完整包名scope指定Bean在哪種上下文內(nèi)可用,可以取page,request,session和application四個(gè)值之一 page(是默認(rèn)值)表示該Bean只在當(dāng)前頁面內(nèi)可用(保存在當(dāng)前頁面的PageContext內(nèi)) request表示該Bean在當(dāng)前的客戶請(qǐng)求內(nèi)有效(保存在ServletRequest對(duì)象內(nèi)) session表示該Bean對(duì)當(dāng)前HttpSession內(nèi)的所有頁面都有效 application表示該Bean對(duì)所有具有相同ServletContext的頁面都有效scope之所以很重要,是因?yàn)閖sp:useBean只有在不存在具有相同id和sco

30、pe的對(duì)象時(shí)才會(huì)實(shí)例化新的對(duì)象;如果已有id和scope都相同的對(duì)象則直接使用已有的對(duì)象,此時(shí)jsp:useBean開始標(biāo)記和結(jié)束標(biāo)記之間的任何內(nèi)容都將被忽略type指定引用該對(duì)象的變量的類型,它必須是Bean類的名字、超類名字、該類所實(shí)現(xiàn)的接口名字之一。請(qǐng)記住變量的名字是由id屬性指定的beanName指定Bean的名字。如果提供了type屬性和beanName屬性,允許省略class屬性屬性以及用法 1id=bean_Name 在所定義的范圍中確認(rèn)Bean的變量,使之能在后面的程序中使用此變量名來分辨不同的Bean ,這個(gè)變量名對(duì)大小寫敏感,必須符合所使用的腳本語言的規(guī)定,這個(gè)規(guī)定在Jav

31、a Language 規(guī)范 已 經(jīng) 寫 明 。 如 果 B e a n 已 經(jīng) 在 別 的“”標(biāo)記中創(chuàng)建,則當(dāng)使用這個(gè)已經(jīng)創(chuàng)建過Bean時(shí),id的值必須與原來的那個(gè)id值一致;否則則意味著創(chuàng)建了同一個(gè)類的兩個(gè)不同的對(duì)象。 2scope=page | request | session | application Bean存在的范圍以及id變量名的有效范圍。缺省值是page,以下是詳細(xì)說明: page - 能在包含“”元素的JSP文件以及此文件中的所有靜態(tài)包含文件中使用這個(gè)Bean,直到頁面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個(gè)文件為止。 request - 在任何執(zhí)行相同請(qǐng)求的JSP文件中使用這

32、個(gè)Bean,直到頁面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個(gè)文件為止。能夠使用Request對(duì)象訪問這個(gè)Bean,比如request.getAttribute(bean_Name)。其中 bean_Name是Bean實(shí)例化的名字。 session - 從創(chuàng)建Bean開始,就能在任何使用相同session的JSP文件中使用這個(gè)Bean。這個(gè)Bean存在于整個(gè)Session生存周期內(nèi),任何在分享此Session的JSP文件都能使用同一Bean。注意在創(chuàng)建這個(gè)Bean的JSP文件中“”指令中必須指定“session=”true“”,否則可能會(huì)導(dǎo)致致命錯(cuò)誤發(fā)生??梢允褂胹ession 對(duì)象訪問Bean 。

33、session.getValue (bean_Name);其中 bean_Name是Bean實(shí)例化的名字。 application - 從創(chuàng)建Bean開始,就能在任何使用相同application的JSP文件中使用Bean。這個(gè)Bean存在于整個(gè)application生存周期內(nèi),任何在分享此application的Jsp文件都能使用同一Bean。能夠使用application對(duì)象訪問這個(gè)Bean,比如application.getAttribute(bean_Name)。其中 bean_Name是Bean實(shí)例化的名字。 3class=package.class 使用new關(guān)鍵字以及class構(gòu)

34、造器從一個(gè)class中實(shí)例化一個(gè)bean。這個(gè)class不能是抽象的,必須有一個(gè)公用的,沒有參數(shù)的構(gòu)造器。這個(gè)package的名字區(qū)別大小寫。 如果該Bean不在作用域內(nèi),則將它實(shí)例化。也可以使用type屬性并結(jié)合class屬性來指定要將何種類型的Bean實(shí)例化。如果使用類屬性,不要同時(shí)指定Bean_name屬性。 4 .beanName .class文件的名稱、Bean包名或者包含該Bean的串行化文件(.ser文件)。僅當(dāng)Bean不存在于指定的作用域時(shí),才使用此屬性。還必須使用類型屬性來指定要將何種類型的Bean實(shí)例化。 BeanName屬性不能與class屬性一起使用。此值區(qū)分大小寫。

35、5.type 如果此屬性與class或者beanName屬性一起使用,它指定要實(shí)例化的Bean的類或接口。如果type屬性未能與class或者beanName屬性一起使用,則不將新的Bean實(shí)例化,而且type屬性指的是已在作用域內(nèi)的Bean。此值區(qū)分大小寫。 6. Properties tags 標(biāo)記列表,它設(shè)置實(shí)例化的Bean的初始特性值。 設(shè)置Bean的屬性值. JSP 語法格式如下:jsp:setProperty name=beanInstanceName property= * | property=propertyName“param=parameterName | propert

36、y=propertyName value=string | / 屬 性用 法name該屬性是必需的,它表示要設(shè)置的屬性是哪個(gè)Beanproperty該屬性是必需的,它表示要設(shè)置哪個(gè)屬性。有一個(gè)特殊用法:如果property的值是“*”,表示所有名字和Bean屬性名字匹配的請(qǐng)求參數(shù)都將被傳遞給相應(yīng)屬性的set方法value該屬性是可選的,它用來指定Bean屬性的值。字符串?dāng)?shù)據(jù)會(huì)在目標(biāo)類中通過標(biāo)準(zhǔn)的valueOf方法自動(dòng)轉(zhuǎn)換成數(shù)字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean類型的屬性值(比如true)通過Boolean.v

37、alueOf轉(zhuǎn)換,int和Integer類型的屬性值通過Integer.valueOf轉(zhuǎn)換。value和param不能同時(shí)使用,但可以使用其中任意一個(gè)param該屬性是可選的,它指定用哪個(gè)請(qǐng)求參數(shù)作為Bean屬性的值。如果當(dāng)前請(qǐng)求沒有參數(shù),則什么事情也不做,系統(tǒng)不會(huì)把null傳遞給Bean屬性的set方法。因此,可以讓Bean自己提供默認(rèn)屬性值,只有當(dāng)請(qǐng)求參數(shù)明確指定了新值時(shí)才修改默認(rèn)屬性值屬性 1name=beanInstanceName 該屬性對(duì)應(yīng)中的id,因此name要和的id一樣 。 2property=* 這是一種設(shè)置Bean屬性的快捷方式。儲(chǔ)存用戶在JSP輸入的所有值,用于匹配Bean中的屬性。J

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論