版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 第九講 JSP與JavaBeans教學(xué)目的 本講講述JSP中怎樣使用JavaBeans 。1 編寫javabeans和使用javabeans 。2 beans的存放目錄 第九講 JSP與JavaBeans 在談?wù)摻M件之前讓我們看一個通俗的事情:組裝電視機。組裝一臺電視機時,人們可以選擇多個組件,例如電阻、電容、顯象管等,一個組裝電視機的人不必關(guān)心顯象管是怎么研制的,只要根據(jù)說明書了解其中的屬性和功能就可以了。不同的電視機可以安裝相同的顯象管,顯象管的功能完全相同,但他們是在不同的電視機里面,一臺電視機的顯象管發(fā)生了故障并不影響其它的電視機;也可能兩臺電視安裝了一個共享的組件:天線,如果天線發(fā)
2、生了故障,兩臺電視機都受到同樣的影響。 “可視化組件編程”非常成功的一個例子就是微軟公司的VB。人們在使用VB編寫程序時,經(jīng)常把一個按鈕組件或文本框組件拖放到你的應(yīng)用程序窗體中,并了解這個按鈕的名字、它有哪些功能、方法等,而且你還可以重新更改它的名字,當(dāng)你創(chuàng)建生成應(yīng)用程序時,這個按鈕的名字被保存了下來。但是,微軟的組件只適用于微軟的操作平臺上,不能為其它的平臺所使用。按著Sun公司的定義,JavaBeans是一個可重復(fù)使用的軟件組件。實際上JavaBeans是一種Java類,通過封裝屬性和方法成為具有某種功能或者處理某個業(yè)務(wù)的對象,簡稱beans。由于javabeans是基于java語言的,因
3、此javabeans不依賴平臺,具有以下特點:(1)可以實現(xiàn)代碼的重復(fù)利用(2)易編寫、易維護、易使用(3)可以在任何安裝了Java運行環(huán)境的平臺上的使用,而不需要重新編譯。我們已經(jīng)知道,一個基本的JSP頁面就是由普通的HTML標(biāo)簽和java程序片組成,如果程序片和HTML大量交互在一起,就顯得頁面混雜,不易維護。JSP頁面應(yīng)當(dāng)將數(shù)據(jù)的處理過程指派給一個或幾個beans來完成,我們只需在JSP頁面中調(diào)用這個beans即可。不提倡大量的數(shù)據(jù)處理都用java程序片來完成。在JSP頁面中調(diào)用beans,可有效的分離的靜態(tài)工作部分和動態(tài)工作部分。9.1 編寫javabeans和使用javabeans9
4、.1.1 編寫beansJavabeans分為可視組件和非可視組件。在JSP中主要使用非可視組件。對于非可視組件,我們不必去設(shè)計它的外觀,主要關(guān)心它的屬性和方法。編寫javabeans就是編寫一個java的類,所以你只要會寫類就能編寫一個beans,這個類創(chuàng)建的一個對象稱做一個beans。為了能讓使用這個beans的應(yīng)用程序構(gòu)建工具(比如JSP引擎)知道這個beans的屬性和方法,只需在類的方法命名上遵守以下規(guī)則:(1)如果類的成員變量的名字是xxx,那么為了更改或獲取成員變量的值,即更改或獲取屬性,在類中就需要有兩個方法:getXxx():用來獲取屬性xxx。setXxx():用來修改屬性x
5、xx.。續(xù)前頁: public int getRadius() return radius; public void setRadius(int newRadius) radius=newRadius; public double circleArea() return Math.PI*radius*radius; public double circlLength() return 2.0*Math.PI*radius; 將上述java文件保存為Circle.java,并編譯通過,得到字節(jié)碼文件Circle.class。9.1.2 使用beans 為了在JSP頁面中使用benas,我們必須使
6、用JSP動作標(biāo)簽:useBeanuseBean格式: 或下面就useBean標(biāo)簽中scope取值的不同情況闡述如下:scope取值page JSP引擎分配給每個客戶的beans是互不相同的,也就是說,盡管每個客戶的beans的功能相同,但它們占有不同的內(nèi)存空間。該beans的有效范圍是當(dāng)前頁面,當(dāng)客戶離開這個頁面時,JSP引擎取消分配給該客戶的beans。scope取值session JSP引擎分配給每個客戶的beans是互不相同的,該beans的有效范圍是客戶的會話期間,也就是說,如果客戶在多個頁面中相互連接,每個頁面都含有一個useBeans標(biāo)簽,這些useBean標(biāo)簽中id的值相同,并且
7、scope的值都是session,那么,該客戶在這些頁面得到的beans是相同的一個。如果客戶在某個頁面更改了這個beans的屬性,其它頁面的這個beans的屬性也將發(fā)生同樣的變化。當(dāng)客戶關(guān)閉瀏覽器時,JSP引擎取消分配給客戶的beans。scope取值request JSP引擎分配給每個客戶的beans是互不相同的,該beans的有效范圍是request期間??蛻粼诰W(wǎng)站的訪問期間可能請求過多個頁面,如果這些頁面含有socope取值是request的useBeans標(biāo)簽,那么pageCotent對象在每個頁面分配給客戶的beans也是互不相同的。JSP引擎對請求作出響應(yīng)之后,取消分配給客戶的這
8、個beans。scope取值application JSP引擎為每個客戶分配一個共享的beans,也就是說,所有客戶共享這個beans,如果一個客戶改變這個beans的某個屬性的值,那么所有客戶的這個beans的屬性值都發(fā)生了變化。這個beans直到服務(wù)器關(guān)閉才被取消.。注:當(dāng)使用作用域是session的beans時,要保證客戶端支持Cooker. 為了使服務(wù)器的所有web服務(wù)目錄下的JSP頁面文件都能使用我們的beans,我們必須將上面編譯通過生成的字節(jié)碼類文件:Circle.class拷貝到JSP引擎的classes文件夾下,即D:tomcatJakarta-tomcat-4.0class
9、es下,如圖9.1所示。 另外,在使用beans的JSP頁面中,必須有如下的import指令: 圖9.1 在JSP引擎放置beans的目錄 在下面的例子1中,負(fù)責(zé)創(chuàng)建beans的類是上述的Circle類,創(chuàng)建的beans的名字是girl,girl的scope取值page。例子1useBeans.jsp: 圓的半徑是: 圓的周長是: 圓的面積是: 在下面的例子2中我們將beans的scope的值設(shè)為session 創(chuàng)建的beans的名字是girl,創(chuàng)建該beans的類文件仍然是上述的Circle.class。在beans1.jsp 頁面中,girl的半徑radius的值是1(圖9.2),然后連接
10、到beans2.jsp頁面,顯示半徑radius的值,然后將girl的半徑radius的值更改為400(圖9.3),當(dāng)再刷新beans1.jsp時會發(fā)現(xiàn)radius的值已經(jīng)變成了400(圖9.4)。圖9.2 beans1.jsp效果圖9.3 beans2.jsp效果圖9.4 刷新beans1.jsp后效果beans2.jsp: 圓的半徑是: 修改后的圓的半徑是: 在下面的例子3中,將beans的scope的值設(shè)為application。當(dāng)?shù)谝粋€客戶訪問這個頁面時,顯示beans的屬性radius的值,然后把這個屬性的值修改為1000(圖9.5)。當(dāng)其它客戶訪問這個網(wǎng)頁時,看到的這個屬性的值都是
11、1000(圖9.6)。圖9.5 第一個客戶訪問appbeans.jsp效果圖9.6 后續(xù)客戶訪問appbeans.jsp的效果9.2 beans的存放目錄(1)任何web服務(wù)目錄都可使用的beans的存放位置 如果讓任何web服務(wù)目錄中的JSP頁面都可以使用某個beans,那么創(chuàng)建這個beans的字節(jié)碼文件需存放在Tomcat安裝目錄的classes目錄中,例如,本書所用機器的Tomcat安裝目錄就是:D:tomcatJakarta-tomcat-4.0classes,如圖9.1所示。 我們已經(jīng)知道,當(dāng)服務(wù)器上某個含有useBean動作標(biāo)簽的JSP頁面被加載執(zhí)行時,JSP引擎將首先根據(jù)id的名
12、字,在一個同步塊中,查找JSP引擎內(nèi)置pageContent對象中是否含有名字id和作用域scope的對象,如果這個對象存在,JSP引擎就分配一個這樣的對象給客戶,這樣,客戶就獲得了一個作用域是scope、名字是id的benas。如果在pageContent中沒有查找到指定作用域、名字是id的對象,就根據(jù)class指定的類創(chuàng)建一個名字是id的對象,并添加到pageContent內(nèi)置對象中,并指定該對象的作用域是scope,同時JSP引擎分配給客戶一個作用域是scope、名字是id的beans。 JSP引擎的內(nèi)置PageContenet對象用來存儲供服務(wù)器使用的數(shù)據(jù)信息,通過該對象向客戶提供不同
13、類型的各種數(shù)據(jù)對象。當(dāng)含有ussBeans標(biāo)簽的JSP頁面被執(zhí)行后,beans就被存放在pageContenet對象中,如果你更改了創(chuàng)建beans的java類文件后,pageContent對象中的beans并不能被更新,這是因為任何JSP頁面再次被訪問執(zhí)行時,總是先到pageContenet中查找beans。而pageContent對象直到服務(wù)器關(guān)閉才釋放它存儲的數(shù)據(jù)對象。(2)只對examples服務(wù)目錄可用的beans的存放目錄 examples是默認(rèn)web服務(wù)目錄之一,如圖9.7圖9.7 存放beans的目錄 如果想讓某個beans只對examples目錄下的JSP頁面可用,那么創(chuàng)建該b
14、eans的字節(jié)碼文件需存放在webapps/example/Web-inf/classes目錄中,如圖9.7所示。 存放在該目錄中的beans和存放在上面(1)中所述的目錄中的beans有所不同的是:JSP引擎首先檢查webapps/example/Web-inf/classes目錄中的創(chuàng)建該beans的字節(jié)碼文件是否被修改過,如果重新修改過,就會用新的字節(jié)碼文件創(chuàng)建一個beans,beans的名字是id,并添加到pageContent內(nèi)置對象中,并指定該對象的作用域是scope,同時JSP引擎分配給客戶一個作用域是scope、名字是id的beans。 如果經(jīng)常調(diào)試beans,可以把beans
15、放在webapps/example/Web-inf/classes。需要注意的是,當(dāng)用戶請求服務(wù)時,由于服務(wù)器引擎每次都要檢查字節(jié)碼文件是否被修改過,將降低服務(wù)器的運行效率。 下面是創(chuàng)建beans的java文件,將該文件編譯通過,把字節(jié)碼文件CircleTest.class存放到/webapps/example/Web-inf/classes目錄中。import java.io.*;public class CircleTest int radius; public CircleTest() radius=6500; public int getRadius() return radius; public void setRadius(int newRadius) radius=newRadius; public double c
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中考沖刺個人決心書
- 中秋晚會來賓致辭范文(10篇)
- 中學(xué)生競選班長演講稿
- 中班家訪小結(jié)
- 密度應(yīng)用課件教學(xué)課件
- 2025年高考語文復(fù)習(xí)知識清單第十章作文專題10議論文寫作課內(nèi)素材積累(學(xué)生版+解析)
- 渝長一標(biāo)段動火作業(yè)方案
- 超聲霧化課件教學(xué)課件
- 三年級數(shù)學(xué)計算題專項練習(xí)匯編及答案集錦
- 維修保證金協(xié)議書(2篇)
- 干燥綜合癥PPT課件 (2)
- 道路保通專項安全方案
- 河道整治綠化工程技術(shù)標(biāo)
- 護理人員彈性排班制度
- 武漢大學(xué)學(xué)生成績單
- 施工現(xiàn)場臨時用電安全專項施工方案
- 硅鋼片縱剪機組維護保養(yǎng)規(guī)范1
- 護理不良事件分析-跌倒-根因分析法
- 腫瘤細(xì)胞信號轉(zhuǎn)導(dǎo)ppt課件
- 能耗制動控制線路電路圖及工作原理PPT課件
- 《千字文》全文(帶拼音)
評論
0/150
提交評論