web開發(fā)技術(shù)課件老師的第四章jsp與javabean_第1頁
web開發(fā)技術(shù)課件老師的第四章jsp與javabean_第2頁
web開發(fā)技術(shù)課件老師的第四章jsp與javabean_第3頁
web開發(fā)技術(shù)課件老師的第四章jsp與javabean_第4頁
web開發(fā)技術(shù)課件老師的第四章jsp與javabean_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Web開發(fā)技術(shù)第四章 JSP與JavaBean編程本章主要內(nèi)容JavaBean的由來與特點一個簡單的JavaBean程序JavaBean的組成與規(guī)范在JSP頁面中使用JavaBeanJavaBean的范圍一個較為復(fù)雜的例子JavaBean的由來在JSP網(wǎng)頁開發(fā)的初級階段,需要將Java代碼嵌入到網(wǎng)頁之中,對頁面中的一些業(yè)務(wù)進行處理,如字符串處理、數(shù)據(jù)庫操作等。如下圖。但將大量Java代碼嵌入到JSP頁面中,必定會給修改和維護帶來困難。并且不能達到代碼重用的效果,不能體現(xiàn)面向?qū)ο蟮拈_發(fā)模式。JavaBean的由來如果使HTML代碼與Java代碼相隔離,將Java代碼單獨封裝成一個個類,然后在JS

2、P頁面中調(diào)用之,則可以簡化JSP頁面,提高代碼重用性。這種使用Java代碼封裝的類,就是一個JavaBean組件。應(yīng)用JavaBean與JSP整合的開發(fā)模式如下圖。什么是JavaBean?JavaBean是指一段特殊的Java類,是一種組件技術(shù)。它可以將內(nèi)部動作(如事務(wù)邏輯、數(shù)據(jù)庫操作等)封裝起來,用戶看不到它是如何運行的。它提供屬性接口供JSP程序使用,實現(xiàn)了業(yè)務(wù)邏輯和前臺程序的分離。它遵循一些定義方法的規(guī)范,從而能夠使得不同的bean之間可以良好通訊。JavaBean可分為可視化組件和非可視化組件兩種??梢暬M件可以是簡單的GUI元素,如按鈕或文本框,也可以是復(fù)雜的,如報表組件;非可視化組

3、件沒有GUI表現(xiàn)形式,用于封裝業(yè)務(wù)邏輯、數(shù)據(jù)庫操作等。其最大的優(yōu)點在于可以實現(xiàn)代碼的可重用性。 JavaBean的特點易于維護、使用、編寫??蓪崿F(xiàn)代碼的重用性。可移植性強,但僅限于Java工作平臺。便于傳輸,不限于本地還是網(wǎng)絡(luò)。可以以其他部件的模式進行工作。本章主要內(nèi)容JavaBean的由來與特點一個簡單的JavaBean程序JavaBean的組成與規(guī)范在JSP頁面中使用JavaBeanJavaBean的范圍一個較為復(fù)雜的例子一個簡單的JavaBean程序package ch4;import java.io.*;public class SampleBean1private String st

4、r;public SampleBean1();public void setStr(String str) this.str = str;public String getStr()return str;這是一個基本的JavaBean例子:第一條語句的package用來定義自己的包,package語句必須是源代碼的第一條語句。第二條語句使用import關(guān)鍵字將系統(tǒng)包java.io中所有的類包含進來。首先, SampleBean1是一個公共的Java類。然后,它有一個無參的構(gòu)造方法:public SampleBean1() ;最后,設(shè)定屬性str的值時,使用setStr方法。取得屬性str的值時

5、,使用getStr方法。SampleBean1.java一個簡單的JavaBean程序編寫完JavaBean程序后,像所有的Java程序一樣,需要對之進行編譯。打開DOS窗口,使用javac SampleBean1.java進行編譯,如果編譯成功,將在SampleBean1.java所在目錄下產(chǎn)生一個class文件。本章主要內(nèi)容JavaBean的由來與特點一個簡單的JavaBean程序JavaBean的組成與規(guī)范在JSP頁面中使用JavaBeanJavaBean的范圍一個較為復(fù)雜的例子JavaBean的組成一個JavaBean由3部分組成:屬性:屬性在JavaBean中不只是傳統(tǒng)的面向?qū)ο蟮母?/p>

6、念里的屬性,它同時還得到了屬性讀取和屬性寫入的API的支持。屬性值可以通過調(diào)用適當(dāng)?shù)姆椒ㄟM行讀寫。如:可能有一個名字屬性,這個屬性的值可能需要調(diào)用String getName()方法讀取,而寫入屬性值可能要需要調(diào)用void setName(String str)的方法。方法:JavaBean提供讓客戶使用的public方法,但應(yīng)當(dāng)認識到,Bean設(shè)計人員希望看到絕大部分的功能反映在屬性和事件中,而不是在人工調(diào)用和各個方法中。事件:JavaBean與其他組件交流信息的主要方式是發(fā)送和接受事件??梢詫⑹录С止δ芸醋魇羌呻娐分械妮斎胼敵鲆_:工程師將引腳連接在一起組成系統(tǒng),讓組件進行通訊。有些引

7、腳用于輸入,有些引腳用于輸出,相當(dāng)于事件中的發(fā)送事件和接收事件。JavaBean的規(guī)范JavaBean作為一個特殊的類,具有自己獨有的特性,在編寫時,需要遵循一定的規(guī)范。一個標(biāo)準(zhǔn)的JavaBean應(yīng)該具有以下規(guī)范:JavaBean類必須有一個沒有參數(shù)的構(gòu)造方法;JavaBean類所有的屬性應(yīng)該定義為私有的(private);JavaBean類中方法的屬性必須是公共的(public);JavaBean類中定義方法setXxx()和getXxx()來對屬性進行操作。Xxx為首寫字母大寫的私有屬性名。對于布爾類型的屬性,允許使用is代替set和get。本章主要內(nèi)容JavaBean的由來與特點一個簡單

8、的JavaBean程序JavaBean的組成與規(guī)范在JSP頁面中使用JavaBeanJavaBean的范圍一個較為復(fù)雜的例子在JSP頁面中使用JavaBeanJavaBean編譯好之后,我們就需要在JSP中調(diào)用它。在JSP頁面中是通過指令:、和來應(yīng)用JavaBean的,他們分別用于創(chuàng)建和查找JavaBean的實例對象、設(shè)置JavaBean對象的屬性以及讀取JavaBean對象的屬性。指令用于創(chuàng)建一個Bean實例并指定它的名字和作用范圍。即如果使用,就可以定義Bean的名稱、類型以及使用期限等內(nèi)容。在JSP頁面中,使用JavaBean前首先要聲明JavaBean。JavaBean的聲明通過動作來

9、實現(xiàn),其語法格式如下: 一、指令【說明】id:在你所定義的范圍中確認Bean的變量,你能在后面的程序中使用此變量名來分辨不同的Bean。scope:指定JavaBean的作用范圍(生命周期),默認值為page??扇〉闹涤校篴pplication:在整個應(yīng)用程序范圍內(nèi)有效;page:在當(dāng)前頁面范圍內(nèi)有效;request:在當(dāng)前請求范圍內(nèi)有效;session:在當(dāng)前會話范圍內(nèi)有效。class:指定JavaBean的類路徑和類名。如:class=“ch4. SampleBean1” ,ch4是包名, SampleBean1是類名。type:定義Bean對象的類型。beanName:指定Bean的名字

10、。如果提供了type屬性和beanName屬性,允許省略class屬性。 指令例4.1:使用一個簡單的JSP頁面來演示的用法。本例包含兩個文件:SampleBean1.java和sample1.jsp部署程序:首先應(yīng)該對SampleBean1.java利用javac命令進行編譯,生成SampleBean1.class文件。這個.class文件應(yīng)該放在何處?在WEB-INF目錄下創(chuàng)建一個子目錄classes(此處目錄名必須為classes),這個子目錄存放的就是JSP網(wǎng)頁要用到的class文件。由于本例中的包為ch4,所以應(yīng)該在classes目錄下再創(chuàng)建一個子目錄ch4,最后將SampleBea

11、n1.class拷貝到ch4下。(注意:隨著包名的不同,在classes目錄下創(chuàng)建的子目錄也不同,如包名為“com.hust.dzc”,那么.class文件應(yīng)該存放的路徑為:WEB-INFclassescomhustdzc)。執(zhí)行程序:重新啟動Tomcat服務(wù)器,在瀏覽器地址欄中輸入 選擇要執(zhí)行的JSP文件。指令WEB目錄的標(biāo)準(zhǔn)結(jié)構(gòu):前面我們通過useBean從整體上對JavaBean有了一定的了解,JavaBean中有一些屬性,可以利用setXxx()和getXxx()方法對他們進行設(shè)置和獲取,除此之外,也可以用和對屬性進行設(shè)置和獲取,下面分別介紹這兩個指令。二、 指令指令:設(shè)定通過定義的B

12、ean對象的屬性。的語法格式有以下4種。 二、 指令指令name是必需的。它表示要設(shè)置屬性的是哪個Bean。property是必需的。它表示要設(shè)置哪個屬性。有一個特殊用法:如果property的值是“*”,表示所有名字和Bean屬性名字匹配的請求參數(shù)都將被傳遞給相應(yīng)的屬性set方法。value是可選的。該屬性用來指定Bean屬性的值。param是可選的。它指定用哪個請求參數(shù)作為Bean屬性的值。如果當(dāng)前請求沒有參數(shù),則什么事情也不做,系統(tǒng)不會把null傳遞給Bean屬性的set方法。因此,你可以讓Bean自己提供默認屬性值,只有當(dāng)請求參數(shù)明確指定了新值時才修改默認屬性值。value和param

13、不能同時使用,可以使用其中任意一個。用于從一個JavaBean中獲取某個屬性的值,無論原來這個屬性是什么類型的,都將被轉(zhuǎn)換為一個String類型的值。其語法格式如下:name:指定JavaBean的名稱,這個JavaBean必須首先使用指令進行過實例化。property:用于指定要讀取的JavaBean組件對象的屬性名稱。三、 指令如何使用和我們通過例4.2來學(xué)習(xí)如何使用這兩個指令。本例采用HTML+JSP+JavaBean架構(gòu)。首先運行HTML網(wǎng)頁sample2.html,要求用戶輸入姓名和性別;然后單擊“提交”按鈕,就會打開JSP頁面sample2.jsp,利用之調(diào)用JavaBean:Sa

14、mpleBean2,并顯示效果。在sample2.jsp中采用了四種方法對進行描述。本章主要內(nèi)容JavaBean的由來與特點一個簡單的JavaBean程序JavaBean的組成與規(guī)范在JSP頁面中使用JavaBeanJavaBean的范圍一個較為復(fù)雜的例子JavaBean的范圍在學(xué)習(xí)指令時,我們知道其中的scope屬性用來設(shè)定JavaBean存在的范圍。scope屬性可取page、request、session和application四個值,代表JavaBean具有不同的使用范圍。application:在整個應(yīng)用程序范圍內(nèi)有效;page:在當(dāng)前頁面范圍內(nèi)有效;request:在當(dāng)前請求范圍內(nèi)

15、有效;session:在當(dāng)前會話范圍內(nèi)有效。計數(shù)器實例我們通過一個計數(shù)器的例子來介紹。計數(shù)器是一般網(wǎng)站必備的工具,它用來統(tǒng)計有多少人次訪問網(wǎng)站。開發(fā)計數(shù)器的方法有很多,我們采用的方法非常簡單,就是利用JavaBean存在的范圍,以實例的形式演示這四種范圍的差別,最終確定使用哪種形式來開發(fā)計數(shù)器最為恰當(dāng)。實例中包含一個JavaBean程序和一個JSP頁面,其中JavaBean程序用來保存訪問量,并供JSP頁面調(diào)用顯示。SampleBean3.javaJavaBean程序SampleBean3.java的源代碼如下:package ch4;import java.io.*;public class

16、 SampleBean3public SampleBean3() private int num = 0;public void setNum(int num) this.num = num; public int getNum() num+; return num; 程序中有一個變量num,是int類型,用來表示訪問的人次,初始值為0。在getNum()方法中將num變量加1,即當(dāng)這個方法被調(diào)用時,num值就會自動加1。將SampleBean3.java編譯形成.class文件。page范圍(例4.3)現(xiàn)在使用來調(diào)用JavaBean,語句為:由于scope屬性的默認值為page,所以此語句等

17、同于:通過例4.3發(fā)現(xiàn)頁面上的訪問人次都為1,這表明JavaBean中的num變量值一直為1。這是因為將JavaBean的范圍設(shè)定為page,表示它的生命周期只在一個頁面里,只能在一個頁面中存取它。當(dāng)進行例中的操作時,Tomcat服務(wù)器會將原來的JavaBean實例刪除掉,然后再重新產(chǎn)生一個新的JavaBean實例,所以JavaBean的num值始終為1。不管如何訪問,網(wǎng)頁上始終顯示1,顯然這個計數(shù)器沒有達到要求。request范圍(例4.4)request范圍除了這個網(wǎng)頁(page)外,還包括使用動作指令和包含的頁面。下面編寫一個簡單的JSP頁面sample4.jsp,如下: 程序中使用獲得

18、JavaBean中的num屬性值,相當(dāng)于執(zhí)行了getNum()方法。在sample5.jsp中使用將sample4.jsp包含進去。將sample4.jsp和sample5.jsp發(fā)布在Tomcat服務(wù)器中,在瀏覽器上訪問sample5.jsp頁面。request范圍(例4.4)運行效果顯示訪問人次是2,這是因為在sample5.jsp中首先調(diào)用getNum()方法使splBean的屬性值變?yōu)?,然后在包含的頁面sample4.jsp中又一次隱含調(diào)用了getNum()方法,所以最后顯示的訪問人次為2。這個例子演示了page范圍和request范圍的區(qū)別,但仍不適用于計數(shù)器的開發(fā)。session

19、范圍(例4.5)在內(nèi)置對象的學(xué)習(xí)中我們知道當(dāng)瀏覽器訪問某個頁面時,就進行了一個連接,與此同時創(chuàng)建了一個session對象,當(dāng)瀏覽器關(guān)閉后便自動結(jié)束session對象,所以我們常常使用session來記錄每個客戶的訪問狀態(tài)。將sample3.jsp中的scope屬性值改為session,另存為sample6.jsp。通過例4.5發(fā)現(xiàn)頁面經(jīng)過刷新、新建窗口的操作,訪問人次會接著上次的值進行增加。而經(jīng)過重新打開一個頁面訪問以及在網(wǎng)絡(luò)的另一臺機器進行訪問的操作,訪問人次是從1開始增加。這是因為這兩個操作使得session生命周期結(jié)束,服務(wù)器會產(chǎn)生一個新的JavaBean做計數(shù)工作。所以這種計數(shù)器也不是

20、所要求的。application范圍(例4.6)application對象的主要作用是為多個應(yīng)用程序保存信息,直至服務(wù)器關(guān)閉為止。當(dāng)多個客戶點擊同一個頁面時,JSP引擎會為每個客戶啟動一個線程,這些線程共享同一個application對象。任何一個客戶對此對象中數(shù)據(jù)的改變都會影響到其他客戶。將sample3.jsp中的scope屬性值改為application,另存為sample7.jsp。通過例4.6發(fā)現(xiàn)無論進行哪一種操作,網(wǎng)頁的訪問人次都會接著上次的值進行增加。由此可見,application范圍的JavaBean生命周期最長,只要Tomcat不重啟,它就永遠存在于服務(wù)器內(nèi)存中。所以使用application來開發(fā)計數(shù)器是最合適的。但如果服務(wù)器重

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論