版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章JavaBean組件技術(shù)5.1
JavaBean簡(jiǎn)介
5.2.JavaBean屬性5.3JavaBean的作用域5.4使用JavaBean計(jì)算圓的周長(zhǎng)與面積5.1
JavaBean簡(jiǎn)介
5.1.1為什么要使用JavaBean5.1.2JavaBean的形式和要素JavaBean是使用Java語(yǔ)言描述的軟件組件模型,簡(jiǎn)單地說(shuō),它就是一個(gè)可以重復(fù)使用的Java類。JavaBean可分為可視化組件和非可視化組件,其中可視化組件包括簡(jiǎn)單的GUI元素〔例如,文本框、按鈕〕及一些報(bào)表組件等。非可視化組件是在實(shí)際開發(fā)中經(jīng)常被使用到的并且在應(yīng)用程序中起著至關(guān)重要的作用。其主要功能是用來(lái)封裝業(yè)務(wù)邏輯〔功能實(shí)現(xiàn)〕、數(shù)據(jù)庫(kù)操作〔例如,數(shù)據(jù)處理、連接數(shù)據(jù)庫(kù)〕等。返回JavaBean是Java程序的一種,所使用的語(yǔ)法和其它類似的Java程序一致。在程序中使用JavaBean具有以下優(yōu)點(diǎn):
在實(shí)際的開發(fā)過(guò)程中,通常會(huì)出現(xiàn)重復(fù)的代碼或者段落,此時(shí)就會(huì)大大降低程序的可重用性并且浪費(fèi)時(shí)間。使用JavaBean就可以大大簡(jiǎn)化程序的設(shè)計(jì)過(guò)程并且方便了其它程序的重復(fù)使用。
為什么要使用JavaBeanJavaBean在效勞器端的應(yīng)用具有非常強(qiáng)大的優(yōu)勢(shì),非可視化的JavaBean可以非常好地實(shí)現(xiàn)控制邏輯、業(yè)務(wù)邏輯、表示層之間的別離,從而大大降低了它們之間的耦合度。非可視化的JavaBean現(xiàn)在多用于后臺(tái)處理,這樣會(huì)使系統(tǒng)具有一定的靈活性?!?〕可以實(shí)現(xiàn)代碼的重復(fù)利用?!?〕易編寫、易維護(hù)、易使用?!?〕它可以壓縮在jar文件中,以更小的體積在網(wǎng)絡(luò)中應(yīng)用〔4〕完全是Java語(yǔ)言編寫,可以在任何安裝了Java運(yùn)行環(huán)境的平臺(tái)上的使用,而不需要重新編譯。返回編寫JavaBean就是編寫一個(gè)Java的類,這個(gè)類創(chuàng)立的一個(gè)對(duì)象稱做一個(gè)Bean。為了能讓使用這個(gè)bean的應(yīng)用程序構(gòu)建工具〔比方JSP引擎〕知道這個(gè)bean的屬性和方法,只需在類的方法命名上遵守以下規(guī)那么:JavaBean的形式和要素〔1〕〔1〕如果類的成員變量的名字是xxx,那么為了更改或獲取成員變量的值,即更改或獲取屬性,在類中可以使用兩個(gè)方法:●getXXX():用來(lái)獲取屬性xxx。●setXXX():用來(lái)修改屬性xxx.。〔2〕對(duì)于boolean類型的成員變量,即布爾邏輯類型的屬性,允許使用"is“代替上面的"get"和"set"?!?〕類中方法的訪問(wèn)屬性都必須是public的?!?〕類中如果有構(gòu)造方法,那么這個(gè)構(gòu)造方法也是public的并且沒(méi)有參數(shù)。JavaBean的形式和要素〔2〕JavaBean例如:importjava.io.Serializable;publicclassJavaBeanDemoimplementsSerializable{//實(shí)現(xiàn)了Serializable接口JavaBeanDemo(){}//無(wú)參的構(gòu)造方法private
intid;//私有屬性Idprivate
Stringname;//私有屬性namepublic
intgetId(){
returnId;} public
voidsetId(intid){//set()方法
this.id=id;}public
StringgetName(){//get()方法
returnname;}public
voidsetName(Stringname){
this.name=name;}}返回5.2JavaBean屬性5.2.1簡(jiǎn)單屬性5.2.2索引屬性5.2.3束縛屬性5.2.4限制屬性在JavaBean的設(shè)計(jì)中按照其屬性的不同作用可以把該Bean分為4類,分別是簡(jiǎn)單屬性設(shè)置〔Simple〕、索引屬性設(shè)置〔Indexed〕、束縛屬性設(shè)置〔Bound〕、限制屬性設(shè)置〔Constrained〕。返回簡(jiǎn)單屬性JavaBean的簡(jiǎn)單屬性〔Simple屬性〕表示為一般數(shù)據(jù)類型的變量并且getXXX()和setXXX()方法是以屬性來(lái)命名的。例如:publicclassHello{ Hello(){} //無(wú)參構(gòu)造方法
privateStringname; //定義String類型的簡(jiǎn)單屬性name
privatebooleaninfo;
publicStringgetName(){ //簡(jiǎn)單屬性的getXxx()方法
returnname; }
publicvoidsetName(Stringname){ //簡(jiǎn)單屬性的setXxx()方法
this.name=name; }
publicbooleanisInfo(){ //布爾類型的取值方法
returninfo; }
publicvoidsetInfo(booleaninfo){ //布爾類型的setXxx方法
this.info=info;}}
返回索引屬性JavaBean的索引屬性〔Indexed屬性〕表示一個(gè)數(shù)組值或者一個(gè)集合,與Simple屬性一樣可以使用getXXX()和setXXX()方法來(lái)獲取值,例如:public
int[]array=new
int[8];
public
int[]getArray(){ //返回整個(gè)數(shù)組
returnarray; }
public
voidsetArray(int[]array){ //為整個(gè)數(shù)組賦值
this.array=array; }
public
voidsetArray(intindex,intvalue){ //為數(shù)組中的某個(gè)元素賦值
this.array[index]=value; }
public
intgetArray(intindex){ //返回?cái)?shù)組中的某個(gè)值
returnarray[index]; }
使用Indexed屬性除了表示數(shù)組之外,還可以表示集合類。
返回束縛屬性束縛屬性〔Bound〕也稱為關(guān)聯(lián)屬性,它是當(dāng)該種屬性的值發(fā)生變化時(shí),要通知其它的對(duì)象。每次屬性值改變時(shí),這種屬性就觸發(fā)一個(gè)PropertyChange事件(在Java程序中,事件也是一個(gè)對(duì)象)。事件中封裝了屬性名、屬性的原值、屬性變化后的新值。這種事件是傳遞到其它的Bean,至于接收事件的Bean應(yīng)做什么動(dòng)作由其自己定義。包含關(guān)聯(lián)屬性的Bean必須具有以下的功能:〔1〕允許事件監(jiān)聽器注冊(cè)和注銷與其有關(guān)的屬性修改事件;〔2〕當(dāng)修改一個(gè)關(guān)聯(lián)屬性時(shí),可以在相關(guān)的監(jiān)聽器上觸發(fā)屬性修改事件。利用java.beans.PropertyChangeSupport類創(chuàng)立出PropertyChangeSupport類的對(duì)象,從而可以用于管理注冊(cè)的監(jiān)聽器列表和屬性修改事件通知的發(fā)送。JavaBean還需要實(shí)現(xiàn)addPropertyChangeLinster()方法和removePropertyChangeLinster()方法,以便添加和取消屬性變化的監(jiān)聽器。返回限制屬性限制屬性〔constrained〕是指當(dāng)這個(gè)屬性的值要發(fā)生變化時(shí),與這個(gè)屬性已建立了某種連接的其它外部Java對(duì)象可否決該屬性值的改變〔限制屬性的監(jiān)聽者通過(guò)拋出PropertyVetoException來(lái)阻止該屬性值的改變〕,Bean本身也可以否決該Bean屬性值的改變。一個(gè)限制屬性有兩種監(jiān)聽者:屬性變化監(jiān)聽者和取消屬性改變的監(jiān)聽者。取消屬性改變的監(jiān)聽者在自己的對(duì)象代碼中有相應(yīng)的控制語(yǔ)句,在監(jiān)聽到有限制屬性要發(fā)生變化時(shí),在控制語(yǔ)句中判斷是否應(yīng)否決這個(gè)屬性值的改變。
利用java.beans.VetoableChangeSupport類的fireVetoableChange()方法傳遞屬性名稱、改變前的值和改變后的值等信息。JavaBean還需要實(shí)現(xiàn)addVetoableChangeLinster()方法和removeVetoableChangeLinster()方法,以便添加和取消屬性變化的監(jiān)聽器。注意:由于限制屬性使用了錯(cuò)誤處理,編程的時(shí)候要特別注意異常的處理方式。返回5.3JavaBean的作用域返回5.3.1page作用域5.3.2request作用域5.3.3session作用域5.3.4application作用域5.3.5JavaBean獲取作用域數(shù)據(jù)appliactionsessionpagerequestpage作用域page作用域在這4種類型中范圍是最小的,客戶端每次請(qǐng)求訪問(wèn)時(shí)都會(huì)創(chuàng)立一個(gè)JavaBean對(duì)象。JavaBean對(duì)象的有效范圍是客戶請(qǐng)求訪問(wèn)的當(dāng)前頁(yè)面文件,當(dāng)客戶執(zhí)行當(dāng)前的頁(yè)面文件完畢后JavaBean對(duì)象結(jié)束生命。在page范圍內(nèi),每次訪問(wèn)頁(yè)面文件時(shí)都會(huì)生成新的JavaBean對(duì)象,原有的JavaBean對(duì)象已經(jīng)結(jié)束生命期。返回request作用域當(dāng)scope為request時(shí),JavaBean對(duì)象被創(chuàng)立后,它將存在于整個(gè)request的生命周期內(nèi),request對(duì)象是一個(gè)內(nèi)建對(duì)象,使用它的getParameter方法可以獲取表單中的數(shù)據(jù)信息。Request范圍的JavaBean與request對(duì)象有著很大的關(guān)系,它的存取范圍除了page外,還包括使用動(dòng)作元素<jsp:include>和<jsp:forward>包含的網(wǎng)頁(yè),所有通過(guò)這兩個(gè)操作指令連接在一起的JSP程序都可以共享同一個(gè)JavaBean對(duì)象。返回session作用域返回當(dāng)scope為session時(shí),JavaBean對(duì)象被創(chuàng)立后,它將存在于整個(gè)session的生命周期內(nèi),session對(duì)象是一個(gè)內(nèi)建對(duì)象,當(dāng)用戶使用瀏覽器訪問(wèn)某個(gè)網(wǎng)頁(yè)時(shí),就創(chuàng)立了一個(gè)代表該鏈接的session對(duì)象,同一個(gè)session中的文件共享這個(gè)JavaBean對(duì)象。客戶對(duì)應(yīng)的session生命期結(jié)束時(shí)JavaBean對(duì)象的生命也結(jié)束了。在同一個(gè)瀏覽器內(nèi),JavaBean對(duì)象就存在于一個(gè)session中。當(dāng)重新翻開新的瀏覽器時(shí),就會(huì)開始一個(gè)新的session。每個(gè)session中擁有各自的JavaBean對(duì)象。application作用域返回當(dāng)scope為application時(shí),JavaBean對(duì)象被創(chuàng)立后,它將存在于整個(gè)主機(jī)或虛擬主機(jī)的生命周期內(nèi),application范圍是JavaBean的生命周期最長(zhǎng)的。同一個(gè)主機(jī)或虛擬主機(jī)中的所有文件共享這個(gè)JavaBean對(duì)象。如果效勞器不重新啟動(dòng),scope為application的JavaBean對(duì)象會(huì)一直存放在內(nèi)存中,隨時(shí)處理客戶的請(qǐng)求,直到效勞器關(guān)閉,它在內(nèi)存中占用的資源才會(huì)被釋放。在此期間,效勞器并不會(huì)創(chuàng)立新的JavaBean組件,而是創(chuàng)立源對(duì)象的一個(gè)同步拷貝,任何拷貝對(duì)象發(fā)生改變都會(huì)使源對(duì)象隨之改變,不過(guò)這個(gè)改變不會(huì)影響其它已經(jīng)存在的拷貝對(duì)象。JavaBean獲取作用域數(shù)據(jù)〔1〕通過(guò)下面的實(shí)例說(shuō)明4個(gè)作用域:首先,創(chuàng)立一個(gè)JavaBean:“Scope.java〞。packagescope;publicclassScope{ publicScope(){}//無(wú)參的構(gòu)造函數(shù)
privateintnumber=0;//初始化變量number的值為0
publicintgetNmuber(){//增加并返回變量number的值
number++;
returnnumber;}
publicvoidsetNumber(intnewNumber){
this.number=newNumber;//給變量number賦新值 }}JavaBean獲取作用域數(shù)據(jù)〔2〕然后,創(chuàng)立名稱為“scope.jsp〞的頁(yè)面文件,用來(lái)顯示JavaBean存在的范圍的具體區(qū)別。主要代碼:<body><jsp:useBeanid="pageScope"scope="page"class="scope.Scope"/><%out.println("使用page獲取的數(shù)據(jù)為:"+pageScope.getNmuber());%><jsp:useBeanid="requestScope"scope="request"class="scope.Scope"/><%out.println("使用request獲取的數(shù)據(jù)為:"+requestScope.getNmuber());%><jsp:useBeanid="sessionScope"scope="session"class="scope.Scope"/><%out.println("使用session獲取的數(shù)據(jù)為:"+sessionScope.getNmuber());%><jsp:useBeanid="applicationScope"scope="application"class="scope.Scope"/><%out.println(“使用application獲取的數(shù)據(jù)為:〞+applicationScope.getNmuber());%></body>JavaBean獲取作用域數(shù)據(jù)〔3〕程序運(yùn)行結(jié)果如圖1所示:
關(guān)閉該瀏覽器,重新翻開新的瀏覽器后的結(jié)果如圖2所示:圖1圖2返回5.4使用JavaBean計(jì)算圓的周長(zhǎng)與面積〔1〕〔1〕創(chuàng)立名稱為“Circle.java〞的JavaBean,該類文件主要實(shí)現(xiàn)了圓的數(shù)學(xué)計(jì)算操作,代碼如下:packagecircle;publicclassCircle{
privateintradius=1; //定義私有變量radius表示圓的半徑
publicCircle(){} //無(wú)參的構(gòu)造函數(shù)
publicintgetRadius() {
returnradius;//返回變量radius }
publicvoidsetRadius(intrRadius) { radius=rRadius;//給變量radius賦值 }
publicdoublecircleLength(){
returnMath.PI*radius*2.0; //計(jì)算圓的周長(zhǎng) }
publicdoublecircleArea(){
returnMath.PI*radius*radius; //計(jì)算圓的面積 }}5.4使用JavaBean計(jì)算圓的周長(zhǎng)與面積〔2〕〔2〕創(chuàng)立名稱為“radi
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)械設(shè)計(jì)課程設(shè)計(jì)在線閱讀
- 落葉落葉的作文7篇
- 小學(xué)生倡議書 4篇范本
- 局考勤管理制度范本
- 鑄鐵篦子井蓋銷售
- 2024年正規(guī)開發(fā)商房屋合同書樣本
- 綠化植物購(gòu)銷合同范本
- 中原地產(chǎn)房屋買賣合同的稅費(fèi)與貸款
- 個(gè)人之間的借款合同范本的格式
- 數(shù)字媒體廣告代理
- Unit-3-UI-The-Road-to-Success-高中英語(yǔ)新教材外研版(選擇性必修第一冊(cè))
- 部編2024版歷史七年級(jí)上冊(cè)第三單元《第13課 東漢的興衰》教案
- 腦卒中后吞咽障礙患者進(jìn)食護(hù)理團(tuán)體標(biāo)準(zhǔn)
- 期中 (試題) -2024-2025學(xué)年譯林版(三起)英語(yǔ)四年級(jí)上冊(cè)
- 蘇教版(2024)科學(xué)一年級(jí)上冊(cè)教學(xué)設(shè)計(jì)(附教材目錄)
- 2024人教版道法七年級(jí)上冊(cè)第二單元:成長(zhǎng)的時(shí)空大單元整體教學(xué)設(shè)計(jì)
- 【課件】Unit+3(單元解讀課件)七年級(jí)英語(yǔ)上冊(cè)(人教版2024)
- 2024中國(guó)移動(dòng)總部春季校園招聘易考易錯(cuò)模擬試題(共200題)試卷后附參考答案
- 《別了“不列顛尼亞”》《縣委書記的榜樣-焦裕祿》對(duì)比閱讀+課件++2023-2024學(xué)年統(tǒng)編版高中語(yǔ)文選擇性必修上冊(cè)
- 2024年注冊(cè)安全工程師考試題庫(kù)及完整答案【歷年真題】
- 鄉(xiāng)村醫(yī)生預(yù)防接種培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論