版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章JavaBean組件技術(shù)5.1
JavaBean簡介
5.2.JavaBean屬性5.3JavaBean的作用域5.4使用JavaBean計算圓的周長與面積5.1
JavaBean簡介
5.1.1為什么要使用JavaBean5.1.2JavaBean的形式和要素JavaBean是使用Java語言描述的軟件組件模型,簡單地說,它就是一個可以重復(fù)使用的Java類。JavaBean可分為可視化組件和非可視化組件,其中可視化組件包括簡單的GUI元素〔例如,文本框、按鈕〕及一些報表組件等。非可視化組件是在實際開發(fā)中經(jīng)常被使用到的并且在應(yīng)用程序中起著至關(guān)重要的作用。其主要功能是用來封裝業(yè)務(wù)邏輯〔功能實現(xiàn)〕、數(shù)據(jù)庫操作〔例如,數(shù)據(jù)處理、連接數(shù)據(jù)庫〕等。返回JavaBean是Java程序的一種,所使用的語法和其它類似的Java程序一致。在程序中使用JavaBean具有以下優(yōu)點:
在實際的開發(fā)過程中,通常會出現(xiàn)重復(fù)的代碼或者段落,此時就會大大降低程序的可重用性并且浪費時間。使用JavaBean就可以大大簡化程序的設(shè)計過程并且方便了其它程序的重復(fù)使用。
為什么要使用JavaBeanJavaBean在效勞器端的應(yīng)用具有非常強大的優(yōu)勢,非可視化的JavaBean可以非常好地實現(xiàn)控制邏輯、業(yè)務(wù)邏輯、表示層之間的別離,從而大大降低了它們之間的耦合度。非可視化的JavaBean現(xiàn)在多用于后臺處理,這樣會使系統(tǒng)具有一定的靈活性。〔1〕可以實現(xiàn)代碼的重復(fù)利用。〔2〕易編寫、易維護、易使用?!?〕它可以壓縮在jar文件中,以更小的體積在網(wǎng)絡(luò)中應(yīng)用〔4〕完全是Java語言編寫,可以在任何安裝了Java運行環(huán)境的平臺上的使用,而不需要重新編譯。返回編寫JavaBean就是編寫一個Java的類,這個類創(chuàng)立的一個對象稱做一個Bean。為了能讓使用這個bean的應(yīng)用程序構(gòu)建工具〔比方JSP引擎〕知道這個bean的屬性和方法,只需在類的方法命名上遵守以下規(guī)那么:JavaBean的形式和要素〔1〕〔1〕如果類的成員變量的名字是xxx,那么為了更改或獲取成員變量的值,即更改或獲取屬性,在類中可以使用兩個方法:●getXXX():用來獲取屬性xxx?!駍etXXX():用來修改屬性xxx.。〔2〕對于boolean類型的成員變量,即布爾邏輯類型的屬性,允許使用"is“代替上面的"get"和"set"。〔3〕類中方法的訪問屬性都必須是public的。〔4〕類中如果有構(gòu)造方法,那么這個構(gòu)造方法也是public的并且沒有參數(shù)。JavaBean的形式和要素〔2〕JavaBean例如:importjava.io.Serializable;publicclassJavaBeanDemoimplementsSerializable{//實現(xiàn)了Serializable接口JavaBeanDemo(){}//無參的構(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簡單屬性5.2.2索引屬性5.2.3束縛屬性5.2.4限制屬性在JavaBean的設(shè)計中按照其屬性的不同作用可以把該Bean分為4類,分別是簡單屬性設(shè)置〔Simple〕、索引屬性設(shè)置〔Indexed〕、束縛屬性設(shè)置〔Bound〕、限制屬性設(shè)置〔Constrained〕。返回簡單屬性JavaBean的簡單屬性〔Simple屬性〕表示為一般數(shù)據(jù)類型的變量并且getXXX()和setXXX()方法是以屬性來命名的。例如:publicclassHello{ Hello(){} //無參構(gòu)造方法
privateStringname; //定義String類型的簡單屬性name
privatebooleaninfo;
publicStringgetName(){ //簡單屬性的getXxx()方法
returnname; }
publicvoidsetName(Stringname){ //簡單屬性的setXxx()方法
this.name=name; }
publicbooleanisInfo(){ //布爾類型的取值方法
returninfo; }
publicvoidsetInfo(booleaninfo){ //布爾類型的setXxx方法
this.info=info;}}
返回索引屬性JavaBean的索引屬性〔Indexed屬性〕表示一個數(shù)組值或者一個集合,與Simple屬性一樣可以使用getXXX()和setXXX()方法來獲取值,例如:public
int[]array=new
int[8];
public
int[]getArray(){ //返回整個數(shù)組
returnarray; }
public
voidsetArray(int[]array){ //為整個數(shù)組賦值
this.array=array; }
public
voidsetArray(intindex,intvalue){ //為數(shù)組中的某個元素賦值
this.array[index]=value; }
public
intgetArray(intindex){ //返回數(shù)組中的某個值
returnarray[index]; }
使用Indexed屬性除了表示數(shù)組之外,還可以表示集合類。
返回束縛屬性束縛屬性〔Bound〕也稱為關(guān)聯(lián)屬性,它是當(dāng)該種屬性的值發(fā)生變化時,要通知其它的對象。每次屬性值改變時,這種屬性就觸發(fā)一個PropertyChange事件(在Java程序中,事件也是一個對象)。事件中封裝了屬性名、屬性的原值、屬性變化后的新值。這種事件是傳遞到其它的Bean,至于接收事件的Bean應(yīng)做什么動作由其自己定義。包含關(guān)聯(lián)屬性的Bean必須具有以下的功能:〔1〕允許事件監(jiān)聽器注冊和注銷與其有關(guān)的屬性修改事件;〔2〕當(dāng)修改一個關(guān)聯(lián)屬性時,可以在相關(guān)的監(jiān)聽器上觸發(fā)屬性修改事件。利用java.beans.PropertyChangeSupport類創(chuàng)立出PropertyChangeSupport類的對象,從而可以用于管理注冊的監(jiān)聽器列表和屬性修改事件通知的發(fā)送。JavaBean還需要實現(xiàn)addPropertyChangeLinster()方法和removePropertyChangeLinster()方法,以便添加和取消屬性變化的監(jiān)聽器。返回限制屬性限制屬性〔constrained〕是指當(dāng)這個屬性的值要發(fā)生變化時,與這個屬性已建立了某種連接的其它外部Java對象可否決該屬性值的改變〔限制屬性的監(jiān)聽者通過拋出PropertyVetoException來阻止該屬性值的改變〕,Bean本身也可以否決該Bean屬性值的改變。一個限制屬性有兩種監(jiān)聽者:屬性變化監(jiān)聽者和取消屬性改變的監(jiān)聽者。取消屬性改變的監(jiān)聽者在自己的對象代碼中有相應(yīng)的控制語句,在監(jiān)聽到有限制屬性要發(fā)生變化時,在控制語句中判斷是否應(yīng)否決這個屬性值的改變。
利用java.beans.VetoableChangeSupport類的fireVetoableChange()方法傳遞屬性名稱、改變前的值和改變后的值等信息。JavaBean還需要實現(xiàn)addVetoableChangeLinster()方法和removeVetoableChangeLinster()方法,以便添加和取消屬性變化的監(jiān)聽器。注意:由于限制屬性使用了錯誤處理,編程的時候要特別注意異常的處理方式。返回5.3JavaBean的作用域返回5.3.1page作用域5.3.2request作用域5.3.3session作用域5.3.4application作用域5.3.5JavaBean獲取作用域數(shù)據(jù)appliactionsessionpagerequestpage作用域page作用域在這4種類型中范圍是最小的,客戶端每次請求訪問時都會創(chuàng)立一個JavaBean對象。JavaBean對象的有效范圍是客戶請求訪問的當(dāng)前頁面文件,當(dāng)客戶執(zhí)行當(dāng)前的頁面文件完畢后JavaBean對象結(jié)束生命。在page范圍內(nèi),每次訪問頁面文件時都會生成新的JavaBean對象,原有的JavaBean對象已經(jīng)結(jié)束生命期。返回request作用域當(dāng)scope為request時,JavaBean對象被創(chuàng)立后,它將存在于整個request的生命周期內(nèi),request對象是一個內(nèi)建對象,使用它的getParameter方法可以獲取表單中的數(shù)據(jù)信息。Request范圍的JavaBean與request對象有著很大的關(guān)系,它的存取范圍除了page外,還包括使用動作元素<jsp:include>和<jsp:forward>包含的網(wǎng)頁,所有通過這兩個操作指令連接在一起的JSP程序都可以共享同一個JavaBean對象。返回session作用域返回當(dāng)scope為session時,JavaBean對象被創(chuàng)立后,它將存在于整個session的生命周期內(nèi),session對象是一個內(nèi)建對象,當(dāng)用戶使用瀏覽器訪問某個網(wǎng)頁時,就創(chuàng)立了一個代表該鏈接的session對象,同一個session中的文件共享這個JavaBean對象。客戶對應(yīng)的session生命期結(jié)束時JavaBean對象的生命也結(jié)束了。在同一個瀏覽器內(nèi),JavaBean對象就存在于一個session中。當(dāng)重新翻開新的瀏覽器時,就會開始一個新的session。每個session中擁有各自的JavaBean對象。application作用域返回當(dāng)scope為application時,JavaBean對象被創(chuàng)立后,它將存在于整個主機或虛擬主機的生命周期內(nèi),application范圍是JavaBean的生命周期最長的。同一個主機或虛擬主機中的所有文件共享這個JavaBean對象。如果效勞器不重新啟動,scope為application的JavaBean對象會一直存放在內(nèi)存中,隨時處理客戶的請求,直到效勞器關(guān)閉,它在內(nèi)存中占用的資源才會被釋放。在此期間,效勞器并不會創(chuàng)立新的JavaBean組件,而是創(chuàng)立源對象的一個同步拷貝,任何拷貝對象發(fā)生改變都會使源對象隨之改變,不過這個改變不會影響其它已經(jīng)存在的拷貝對象。JavaBean獲取作用域數(shù)據(jù)〔1〕通過下面的實例說明4個作用域:首先,創(chuàng)立一個JavaBean:“Scope.java〞。packagescope;publicclassScope{ publicScope(){}//無參的構(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〞的頁面文件,用來顯示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〕程序運行結(jié)果如圖1所示:
關(guān)閉該瀏覽器,重新翻開新的瀏覽器后的結(jié)果如圖2所示:圖1圖2返回5.4使用JavaBean計算圓的周長與面積〔1〕〔1〕創(chuàng)立名稱為“Circle.java〞的JavaBean,該類文件主要實現(xiàn)了圓的數(shù)學(xué)計算操作,代碼如下:packagecircle;publicclassCircle{
privateintradius=1; //定義私有變量radius表示圓的半徑
publicCircle(){} //無參的構(gòu)造函數(shù)
publicintgetRadius() {
returnradius;//返回變量radius }
publicvoidsetRadius(intrRadius) { radius=rRadius;//給變量radius賦值 }
publicdoublecircleLength(){
returnMath.PI*radius*2.0; //計算圓的周長 }
publicdoublecircleArea(){
returnMath.PI*radius*radius; //計算圓的面積 }}5.4使用JavaBean計算圓的周長與面積〔2〕〔2〕創(chuàng)立名稱為“radi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度環(huán)保項目研發(fā)合作協(xié)議
- 2024臨時工合同模板
- 2024年度倉儲合同倉儲物及倉儲期限
- 2024年度軟件定制開發(fā)合同
- 2024年 衛(wèi)星發(fā)射與運營服務(wù)合同
- 2024年商標(biāo)轉(zhuǎn)讓合同注意事項
- 2024年度碳排放權(quán)交易合同交易數(shù)量與交易價格
- 2(2024版)網(wǎng)絡(luò)安全風(fēng)險評估合同
- 2024年度物業(yè)管理合同:住宅小區(qū)物業(yè)管理服務(wù)
- 2024年合作伙伴尋找居間合同 with 合作意向及中介費用的規(guī)定
- 2024-2025學(xué)年上海市普陀區(qū)八年級(上)期中數(shù)學(xué)試卷
- 假期補課協(xié)議書
- 電子商務(wù)支付結(jié)算系統(tǒng)開發(fā)合同
- 服務(wù)質(zhì)量、保證措施
- (必練)廣東省軍隊文職(經(jīng)濟學(xué))近年考試真題試題庫(含答案)
- 含羞草天氣課件
- 2024年安全生產(chǎn)知識競賽考試題庫及答案(共五套)
- 22《鳥的天堂》課件
- 農(nóng)業(yè)灌溉裝置市場環(huán)境與對策分析
- 新疆烏魯木齊市第十一中學(xué)2024-2025學(xué)年八年級上學(xué)期期中道德與法治試卷
- 部編版小學(xué)五年級上冊道法課程綱要(知識清單)
評論
0/150
提交評論