版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第5章使用JavaBean,第5章 使用JavaBean,第5章使用JavaBean,學(xué)習(xí)目的與要求:,使用JavaBean可以使頁面顯示和業(yè)務(wù)邏輯處理有效的分離,并使Bean成為有效重復(fù)利用的組件,進(jìn)一步實(shí)現(xiàn)代碼重用,方便應(yīng)用系統(tǒng)維護(hù)。 理解JavaBean的概念和特點(diǎn),掌握編寫、編譯、調(diào)試、布置Bean的方法; 掌握表單與Bean的交互方法;程序片中使用JavaBean的方法; 掌握計數(shù)器、購物車Bean的編寫技術(shù)。,第5章使用JavaBean,本章主要內(nèi)容,5.1 JavaBean的基本概念 5.2 創(chuàng)建與使用JavaBean 5.3 JavaBean的輔助類 5.4 jsp與JavaB
2、ean模式實(shí)例 5.5 上機(jī)實(shí)訓(xùn) 5.6 本 章 習(xí) 題,第5章使用JavaBean,5.1 JavaBean的基本概念,JSP+JavaBean是JSP開發(fā)的一種典型模式,Sun的JavaBean技術(shù)為JSP開發(fā)提供了極大的方便,使得頁面與數(shù)據(jù)處理實(shí)現(xiàn)了真正地分離 5.1.1 什么是JavaBean JavaBean是Java程序設(shè)計中的一種組件技術(shù)。Sun公司把JavaBean定義為一個可重復(fù)使用的軟件組件,類似于電腦CPU、硬盤等組件。從程序員編程的角度看,實(shí)際上JavaBean組件就是Java開發(fā)中的一個類,通過封裝屬性和方法成為具有某種功能和接口的類,簡稱Bean。,第5章使用Jav
3、aBean,5.1 JavaBean的基本概念,5.1.2 JavaBean規(guī)范 JavaBean分為可視化組件和非可視化組件。 非可視化的JavaBean越來越顯示出優(yōu)勢,被廣泛地使用在JSP編程中。非可視化的JavaBean的一些規(guī)定: 1. JavaBean的構(gòu)造方法 JavaBean就是符合一定條件的Java類,該類必須聲明為public類,可供其他類實(shí)例化。類中如果有構(gòu)造方法,必須聲明為public類型且無參數(shù)。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.1.2 JavaBean規(guī)范 2. JavaBean的屬性與方法 JavaBean的屬性必須聲明為pri
4、vate,方法必須聲明為public訪問類型。 JavaBean中用一組set方法設(shè)置Bean的私有屬性值,get方法獲得Bean的私有屬性值。set和get方法名稱與屬性名稱之間必須對應(yīng),也就是:如果屬性名稱為xxx,那么set和get方法的名稱必須為setXxx()和getXxx(),set和get為前綴與屬性名字首字母大寫組成set和get方法名稱。對于boolean類型的屬性,允許使用is代替方法名稱中的set和get前綴。 創(chuàng)建Bean必須帶有包名。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.1.2 JavaBean規(guī)范 例如,myBeanOne定義格式如下
5、: package mybean; import java.io.*; public class myBeanOne String name; boolean flag; public myBeanOne() name=; flag=true; ,第5章使用JavaBean,5.1 JavaBean的基本概念,5.1.2 JavaBean規(guī)范 public setName(String s) name=s; public String getName() return name; public setFlag(boolean flag) this.flag=flag; public boole
6、an getFlag() return flag; ,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 創(chuàng)建與使用JavaBean 5.2.1 創(chuàng)建JavaBean(演示創(chuàng)建、編譯Bean) 創(chuàng)建JavaBean要經(jīng)過編寫代碼、編譯源文件、配置JavaBean這樣一個過程,這個過程可以借助Java開發(fā)工具,也可以使用記事本等簡單文本編輯器編寫代碼,JDK6.0下編譯并在Tomcat6.0環(huán)境下測試。 注意:編寫B(tài)ean可以在該類中先加入main函數(shù),調(diào)試通過再將main函數(shù)再注釋掉,然后再將字節(jié)碼文件部署到tomcat6.0環(huán)境中,就可以直接在JSP中調(diào)用了,這樣可以有效
7、地降低Bean的調(diào)試難度。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 創(chuàng)建與使用JavaBean 5.2.2 布置JavaBean 要想在JSP中使用JavaBean,JSP引擎必須創(chuàng)建一個JavaBean對象,然后在JSP頁面中才能調(diào)用這個創(chuàng)建的JavaBean。為了讓Tomcat6.0找到JavaBean的字節(jié)碼,字節(jié)碼文件必須保存在特定的目錄中,這就是JavaBean的布置。 布置JavaBean首先要在當(dāng)前Web服務(wù)目錄中建立:WEB-INFclasses子目錄,用戶要注意目錄名稱的大小寫,然后在根據(jù)JavaBean的包名創(chuàng)建對應(yīng)的子目錄,并將JavaBe
8、an的字節(jié)碼文件復(fù)制到包對應(yīng)的子目錄中即可。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 創(chuàng)建與使用JavaBean 例如MyRectangle的包名為mybean.maths,則創(chuàng)建的目錄結(jié)構(gòu)如圖所示,然后將MyRectangl.class文件復(fù)制到ch5WEB_INFclassesmybeanmaths子目錄中。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 創(chuàng)建與使用JavaBean 5.2.3 在JSP中使用JavaBean 在JSP中提供了、和動作標(biāo)記來實(shí)現(xiàn)對JavaBean的操作,也可以在程序片中操作Bean。使用Bean首先要
9、在JSP頁面中使用import指令將Bean引入,例如引入MyRectangle,格式如下: ,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 創(chuàng)建與使用JavaBean 5.2.3 在JSP中使用JavaBean 1. 動作標(biāo)記 要想在JSP頁面中使用Bean,必須首先使用動作標(biāo)記在頁面中定義一個JavaBean的實(shí)例,這個被定義實(shí)例有一定的生存范圍及一個唯一的id,JSP頁面通過id來識別Bean,也可以在程序片中通過id.method形式來調(diào)用Bean中的set和get方法。下面是useBean動作標(biāo)記的使用格式: ,第5章使用JavaBean,5.1 JavaB
10、ean的基本概念,5.2 創(chuàng)建與使用JavaBean 5.2.3 在JSP中使用JavaBean 2.動作標(biāo)記 使用動作標(biāo)記可以在JSP頁面中得到Bean實(shí)例的屬性值,并將其轉(zhuǎn)換為String類型的字符串,發(fā)送到客戶端。使用動作標(biāo)記,必須先聲明Bean的實(shí)例,并保證Bean中有對應(yīng)的getXxx()方法。,第5章使用JavaBean,5.1 JavaBean的基本概念,5.2 創(chuàng)建與使用JavaBean 5.2.3 在JSP中使用JavaBean 下面演示一個實(shí)例,第5章使用JavaBean,MyRectangle.java package mybean.maths; import java.
11、io.*; public class MyRectangle double length; double width; double area; public MyRectangle()/無參數(shù)構(gòu)造函數(shù) length=0; width=0; ,第5章使用JavaBean,public void setLength(double length) /設(shè)置長 this.length=length; public double getLength()/得到長 return length; public void setWidth(double width)/設(shè)置寬 this.width=width;
12、public double getWidth()/得到寬 return width; public double getArea()/求矩形面積 double faceArea=length*width; return faceArea; ,第5章使用JavaBean,ch5_1.jsp 例5.1一個bean的示例 ,第5章使用JavaBean, getProperty動作輸出矩形的面積是: 表達(dá)式輸出矩形的面積是: ,第5章使用JavaBean,5.2 創(chuàng)建與使用JavaBean,5.2.3 在JSP中使用JavaBean 3.動作標(biāo)記 使用動作標(biāo)記可以在JSP頁面中設(shè)置Bean的屬性,但必
13、須保證Bean有對應(yīng)的setXxx方法。setProperty動作標(biāo)記設(shè)置Bean的屬性有2種方式。 (1) 第一種,使用表達(dá)式或字符串為Bean的屬性賦值。 使用格式如下: / 表達(dá)式的數(shù)據(jù)類型必須和bean的屬性類型相一致,第5章使用JavaBean,5.2 創(chuàng)建與使用JavaBean,5.2.3 在JSP中使用JavaBean (1) 第一種,使用表達(dá)式或字符串為Bean的屬性賦值。 使用字符串為bean的屬性賦值,格式如下: value=字符串賦值方式,這個字符串會自動被轉(zhuǎn)化為屬性的數(shù)據(jù)類型。自動轉(zhuǎn)化會調(diào)用Java語言的數(shù)據(jù)類型的方法,例如Integer.parseInt(String
14、 s)、Long.parseLong(String s)等。這些方法都可能發(fā)生NumberFormatException異常,例如調(diào)用Integer.parseInt(123a)方法時會發(fā)生異常。,第5章使用JavaBean,【例5.2】setPropery動作指令使用的表達(dá)式賦值示例。頁面效果如圖所示。,第5章使用JavaBean,Student.java,源文件內(nèi)容如下: package mybean.maths; import java.io.*; public class Student String name=null; long number; String sex=null; d
15、ouble height,weight; public Student() name=yang“;number=123; sex=k“;height=170;weight=80; public String getName()return name; public void setName(String s)name=s; public long getNumber()return number;,第5章使用JavaBean,public void setNumber(long num)number=num; public String getSex()return sex; public v
16、oid setSex(String s)sex=s; public double getHeight()return height; public void setHeight(double height)this.height=height; public double getWeight()return weight; public void setWeight(double weight) this.weight=weight; ,第5章使用JavaBean,ch5_2.jsp 例5.2 setProperty動作指令示例 ,第5章使用JavaBean,/ / getProperty動作
17、指令輸出學(xué)生信息: 學(xué)生姓名: 學(xué)生學(xué)號: 學(xué)生性別: 學(xué)生身高: 學(xué)生體重: ,第5章使用JavaBean,5.2 創(chuàng)建與使用JavaBean,5.2.3 在JSP中使用JavaBean (2)第二種,使用表單的參數(shù)值為Bean的屬性賦值。 在Web程序設(shè)計中,客戶端通常是使用表單與應(yīng)用程序交互的,HTML表單中提交的信息存放在request對象中,并且以名稱-值對的形式進(jìn)行傳遞。使用setProperty動作標(biāo)記,可以實(shí)現(xiàn)HTML表單元素與JavaBean屬性的映射,從而實(shí)現(xiàn)Bean屬性與表單輸入?yún)?shù)之間的交互。使用這種方法為Bean的屬性賦值格式如下: 或: ,第5章使用JavaBean
18、,使用表單參數(shù)值為bean屬性賦值,第5章使用JavaBean,LoginBean.java package mybean.maths;import java.io.*; public class LoginBean private String loginName=null; private String password=null; public void LoginBean() public void setLoginName(String s)loginName=s; public String getLoginName()return loginName; public void s
19、etPassword(String s)password=s; public String getPassword()return password; public boolean check() if(yang.equals(loginName) ,第5章使用JavaBean,ch5_3.jsp 例5.3 與表單參數(shù)值進(jìn)行交互 輸入用戶名稱: 輸入用戶密碼: 確認(rèn)用戶信息: ,第5章使用JavaBean,ch5_3_show.jsp 例5.3 bean與表單參數(shù)交互示例 歡迎 進(jìn)入考生報名系統(tǒng)。 登錄失敗,單擊 這里重新登錄 您登錄的信息是:用戶名稱: 用戶密碼: ,第5章使用JavaBea
20、n,5.3 JavaBean的輔助類,一、什么是JavaBean的輔助類? 編寫B(tài)ean除了要使用import語句引入Java的標(biāo)準(zhǔn)類,可能還需要自己編寫的其他類。用戶自己編寫的被Bean引用的類稱之為Bean的輔助類。 二、如何使用JavaBean的輔助類? 此時用戶即可以將這些類和創(chuàng)建Bean的類編寫在一個Java源文件中,也可以單獨(dú)編寫然后引入。不管采用那種形式,都要將源文件編譯后產(chǎn)生的全部字節(jié)碼文件復(fù)制到Web服務(wù)目錄classes的相應(yīng)的目錄中。,第5章使用JavaBean,5.4 jsp與JavaBean模式實(shí)例,5.4.2 購物車Bean 在電子商務(wù)網(wǎng)站中,用戶選擇商品首先要放入
21、購物車中,對于購物車中的商品,用戶可以根據(jù)需要進(jìn)行商品數(shù)量的更改、商品的刪除等操作,購物車就像一臺虛擬的超市購物小推車。電子商務(wù)應(yīng)用程序中的購物車,其本質(zhì)是一個Scope為session的JavaBean,用于保存用戶會話期間選定商品的關(guān)鍵字和數(shù)量信息,并提供訪問信息的接口,允許用戶增加、刪除和修改關(guān)鍵字及對應(yīng)數(shù)量。 購物車是電子商務(wù)Web應(yīng)用程序開發(fā)的關(guān)鍵技術(shù)之一。下面以一個網(wǎng)上書店為例,介紹購物車編程。,第5章使用JavaBean,5.4 jsp與JavaBean模式實(shí)例,5.4.2 購物車Bean Hashtable,即散列表,是java.util包中的一個類,用于存儲“關(guān)鍵字/值”對,
22、一般使用String對象作為關(guān)鍵字,其他對象作為關(guān)鍵字的關(guān)聯(lián)的值。使用Hashtable類必須先導(dǎo)入java.util包。下面是它的一些常用的方法: (1) Hashtable():聲明和構(gòu)造一個散列表對象,語句如下; Hashtable myGoods=new Hashtable(); (2) put(key,value):把關(guān)鍵字和值對插入散列表中,語句如下: String goods_id=123;,第5章使用JavaBean,5.4 jsp與JavaBean模式實(shí)例,5.4.2 購物車Bean (3) containsKey(key):判斷關(guān)鍵散列表中是否有某 (4) get(key)
23、:獲得關(guān)鍵字相關(guān)聯(lián)的對象,有則返回關(guān)鍵字關(guān)聯(lián)值,否則返回null。關(guān)鍵字, (5) remove(key):刪除指定key及key的值,如果刪除成功返回被刪除關(guān)鍵字關(guān)聯(lián)的值,刪除失敗返回null。有返回true,否則返回false, (6) keys():返回散列表中關(guān)鍵字的枚舉,返回值為Enumeration類型。 (7) size():返回散列表中的項數(shù),返回值是int類型數(shù)據(jù)。,第5章使用JavaBean,5.4 jsp與JavaBean模式實(shí)例,5.4.2 購物車Bean Hashtable使用枚舉接口(Enumeration)來遍歷元素序列。hasMoreElements()如果還有
24、更多的元素可以查看,則返回true,否則返回false;nextElement()方法返回要查看的下一個元素,如果hasMoreElements()返回false不能調(diào)用nextElement()方法。 Hashtable list= Hashtable(); Enumeration enumkeys=list.keys(); while(enumkeys.hasMoreElements() String goods=(String)enumkeys.nextElement(); do something with goods; ,第5章使用JavaBean,主頁面,第5章使用JavaBean
25、,購物車頁面 增加和刪除購物車商品頁面,第5章使用JavaBean,Goods.java package mybean.maths; public class Goods String goods_id=null;String goods_name=null; double goods_price; public String getGoods_id() return goods_id; public void setGoods_id(String goods_id) this.goods_id = goods_id; public String getGoods_name() return
26、goods_name; public void setGoods_name(String goods_name) this.goods_name = goods_name; public double getGoods_price() return goods_price; public void setGoods_price(double goods_price) this.goods_price = goods_price; ,第5章使用JavaBean,shoppingCart.java package mybean.maths; import java.util.*; import j
27、ava.io.*; public class shoppingCart implements Serializable Hashtable myGoods=new Hashtable(); public shoppingCart()/構(gòu)造函數(shù) /只存關(guān)鍵字和數(shù)量,其它價格等信息從GoodList中得到,第5章使用JavaBean,public void addGoods(String goods_id,int goods_count ) /商品放入購物車,商品存在則累加,否則新建。 if(myGoods.containsKey(goods_id) int iTemp=(Integer)myGo
28、ods.get(goods_id).intValue(); iTemp=iTemp+goods_count; myGoods.put(goods_id,new Integer(iTemp); else myGoods.put(goods_id, new Integer(goods_count); ,第5章使用JavaBean,public boolean minusGoods(String goods_id,int goods_count) /商品從購物車中拿出 if(myGoods.containsKey(goods_id) /存在該商品,則減數(shù)量 int iTemp=(Integer)my
29、Goods.get(goods_id).intValue(); iTemp=iTemp-goods_count; if(iTemp=0) deleteGoods(goods_id); elsemyGoods.put(goods_id, new Integer(iTemp); return true; else/不存在該商品 return false; ,第5章使用JavaBean,public boolean deleteGoods(String goods_id) /刪除購物車中的一件商品 if(myGoods.remove(goods_id)=null) return false; els
30、e return true; public Hashtable listMyGoods() /得到購物車中所有的商品 return myGoods; ,第5章使用JavaBean,ch5_6_book.jsp文件主要部分代碼: 我要查看購物車 for(Goods me:goodsList) out.print(); out.print( +me.getGoods_id()+); out.print(+me.getGoods_name()+); out.print(+me.getGoods_price()+); out.print(我要購買); out.print(); ,第5章使用JavaBe
31、an,主頁面,第5章使用JavaBean,ch5_6_buy.jsp 我要繼續(xù)購買 goodsList=glApp.getGoodL(); Goods gds=null;/有參數(shù)值則顯示第一個表格 if(request.getParameter(goods_id)!=null) String goods_id=request.getParameter(goods_id); out.print(); out.print(); out.print(您要買的書是:); out.print(); out.print(序號); out.print(書名); out.print(單價); out.prin
32、t(本數(shù)); out.print();,第5章使用JavaBean,gds=searchGood(goodsList,goods_id); out.print(); out.print(+goods_id+); out.print(+gds.getGoods_name()+); out.print(+gds.getGoods_price()+); out.print(); out.print(+); out.print(); out.print(); out.print(); out.print(); ,第5章使用JavaBean,double all_price=0; out.print()
33、; out.print(); out.print(您的購物車中有下列書目:); out.print(); out.print(序號); out.print(書名); out.print(數(shù)目); out.print(單價); out.print(總價); out.print(刪除); out.print(減少); out.print();,第5章使用JavaBean,/遍歷購物車中所有商品的key Hashtable list=spcart.listMyGoods(); Enumeration enumkeys=list.keys(); while(enumkeys.hasMoreElements() String goods=(String)enumkeys.nextElement(); goods=handleS
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保險經(jīng)紀(jì)人操作技能水平考核試卷含答案
- 房地產(chǎn)策劃師安全技能測試評優(yōu)考核試卷含答案
- 工業(yè)設(shè)計工藝師成果能力考核試卷含答案
- 互聯(lián)網(wǎng)服務(wù)場所管理員安全應(yīng)急水平考核試卷含答案
- 光伏組件制造工崗前安全宣教考核試卷含答案
- 網(wǎng)站性能優(yōu)化技術(shù)方法詳解
- 八下數(shù)學(xué)第一講:平行四邊形性質(zhì)探索-從概念到應(yīng)用的結(jié)構(gòu)化學(xué)習(xí)
- 《2026年》國企綜合管理崗位高頻面試題包含詳細(xì)解答
- 2026年及未來5年市場數(shù)據(jù)中國土壤咸化治理行業(yè)市場發(fā)展現(xiàn)狀及投資方向研究報告
- 2026年及未來5年市場數(shù)據(jù)中國家庭網(wǎng)關(guān)行業(yè)發(fā)展監(jiān)測及投資策略研究報告
- 癌癥患者生活質(zhì)量量表EORTC-QLQ-C30
- QCT55-2023汽車座椅舒適性試驗方法
- 孕產(chǎn)婦妊娠風(fēng)險評估表
- 消化系統(tǒng)疾病健康教育宣教
- 河南省洛陽市2023-2024學(xué)年九年級第一學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(人教版 含答案)
- Unit-3-Reading-and-thinking課文詳解課件-高中英語人教版必修第二冊
- 新版出口報關(guān)單模板
- 14K118 空調(diào)通風(fēng)管道的加固
- 加油站財務(wù)管理制度細(xì)則
- 全過程工程咨詢服務(wù)技術(shù)方案
- YS/T 1152-2016粗氫氧化鈷
評論
0/150
提交評論