《JSP程序設(shè)計案例教程》課件ch5_第1頁
《JSP程序設(shè)計案例教程》課件ch5_第2頁
《JSP程序設(shè)計案例教程》課件ch5_第3頁
《JSP程序設(shè)計案例教程》課件ch5_第4頁
《JSP程序設(shè)計案例教程》課件ch5_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JAVABEAN技術(shù)

本章目標(biāo)Javabean概述第一個Javabean程序JavaBean頁面指令帶屬性的JavaBean數(shù)據(jù)庫連接公用類Javabean概述JavaBean是一種軟件組件模型。JavaBean組件是可以輕松重用并集成到應(yīng)用程序中的java類。任何繼承了特定習(xí)慣的java類都可以為JavaBean組件。在一個典型的JSP頁面中,大部分的Java代碼和商業(yè)邏輯將不會在內(nèi)嵌的代碼段中,相反它主要通過調(diào)用JavaBeans組件來實現(xiàn)將商業(yè)邏輯從頁面內(nèi)容中分隔出來,這有利于分工合作。Java專家可以專門負責(zé)商業(yè)邏輯和動態(tài)內(nèi)容,比如編寫和維護JavaBean的代碼,而HTML專家可以負責(zé)頁面的布局和內(nèi)容的表達 比如編寫和維護.jsp文件的代碼,這樣做可以做到責(zé)任明確,提高開發(fā)的效率。圖5-1JSP與JavaBean的交互第一個Javabean程序

編寫JavaBean就是編寫一個Java類,所以只要會寫類就能編寫一個Bean.【程序代碼】FirstBean.javapackagebookshop;publicclassFirstBean{ publicintadd(inta,intb){returna+b;} }圖5-2文件夾結(jié)構(gòu)【程序代碼】Firstbean.jsp<jsp:useBeanid="firstbean"class="bookshop.FirstBean"scope="session"/><%@pagecontentType="text/html;charset=GBK"%><fontsize="8">3+2=<%=firstbean.add(3,2)%></font>圖5-2文件夾結(jié)構(gòu)

注意:Javabean必須放置于包中,如FirstBean對應(yīng)的包為bookshopJavabean應(yīng)放在WEB-INF\classes\下與包名相對應(yīng)的目錄下,如\WEB-INF\classes\bookshop

JavaBean頁面指令通過下面的格式可以在JSP中聲明使用JavaBean組件:<jsp:useBeanid=”beanName”class=”classname”scope=”scope”/>jsp:usebean元素標(biāo)明在該頁面中將使用一個存儲在特定域內(nèi)的可以訪問的bean.1.id="beanInstanceName"在所定義的范圍中確認(rèn)Bean的變量,使之能在后面的程序中使用此變量名來分辨不同的Bean,這個變量名對大小寫敏感,必須符合所使用的腳本語言的規(guī)定,這個規(guī)定在JavaLanguage規(guī)范已經(jīng)寫明。如果Bean已經(jīng)在別的“<jsp:useBean>”標(biāo)記中創(chuàng)建,則當(dāng)使用這個已經(jīng)創(chuàng)建過Bean時,id的值必須與原來的那個id值一致;否則則意味著創(chuàng)建了同一個類的兩個不同的對象。

(2)scope="page|request|session|application"Bean存在的范圍以及id變量名的有效范圍。缺省值是page,以下是詳細說明:page 能在包含“<jsp:useBean>”元素的JSP文件以及此文件中的所有靜態(tài)包含文件中使用這個Bean,直到頁面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個文件為止。request 在任何執(zhí)行相同請求的Jsp文件中使用這個Bean,直到頁面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個文件為止。能夠使用Request對象訪問這個Bean,比如request.getAttribute(beanInstanceName)。session 從創(chuàng)建Bean開始,就能在任何使用相同session的jsp文件中使用這個Bean。這個Bean存在于整個Session生存周期內(nèi),任何在分享此Session的Jsp文件都能使用同一Bean。注意在創(chuàng)建這個Bean的Jsp文件中“<%@page%>”指令中必須指定“session="true"”。Application從創(chuàng)建Bean開始,就能在任何使用相同application的Jsp文件中使用Bean。這個Bean存在于整個application生存周期內(nèi),任何在分享此application的Jsp文件都能使用同一Bean.(3)class="package.class"

使用new關(guān)鍵字以及class構(gòu)造器從一個class中實例化一個bean。這個class不能是抽象的,必須有一個公用的,沒有參數(shù)的構(gòu)造器。這個package的名字區(qū)別大小寫。

(4)type="package.class"

如果這個Bean已經(jīng)在指定的范圍中存在,那么賦予這個Bean一個的數(shù)據(jù)開庫類型。如果使用type屬性的同時沒有使用class或beanName,Bean將不會被實例化。注意package和class的名稱區(qū)分大小寫。 如果沒有這樣的bean存在,該語句創(chuàng)建該bean,并把它作為域?qū)ο髮傩员4?。屬性id的值決定了bean在域中的的名字。下面的元素創(chuàng)建了一個Currency的實例,把它作為session對象屬性存儲起來,使得bean在整個會話期間可用。<jsp:useBeanid=”currency”class=”util.Currency”scope=”session”/>JavaBean的刪除如果不再需要,JavaBean也可以被刪除屬性范圍刪除的方法pagepageContext.removeAttribute(Stringname)requestrequest.removeAttribute(Stringname)sessionsession.removeAttribute(Stringname)applicationapplication.removeAttribute(Stringname)設(shè)置屬性<jsp:setProperty>標(biāo)簽和<jsp:useBean>標(biāo)簽一起協(xié)作,用來設(shè)置JavaBean的屬性。其語法格式如下:<jsp:setPropertyname="beanInstanceName"{ property="*"|property="propertyName"param="parameterName"|property="propertyName"value="{string|<%=expression%>}"/>}屬性 說明name 通過<jsp:useBean>實例化的bean名稱property

bean屬性的名字,如果property屬性有值“*”,標(biāo)記就會在請求對象中瀏覽所有的參數(shù)去尋找所匹配的請求參數(shù)的名稱,并且在bean中輸入屬性名稱和類型。請求中的值被賦給每個所匹配的bean屬性,除非請求參數(shù)有值,否則,不會改變bean的屬性param 當(dāng)從請求參數(shù)中設(shè)置bean的屬性時,bean的屬性名稱不必與請求參數(shù)中所定義的名稱相同。用這個屬性來定義請求參數(shù)的名稱,要用它的值來設(shè)置bean的屬性。如果沒有定義param值,就認(rèn)為請求參數(shù)的名稱與bean屬性的名稱相同。如果沒有該名稱的請求參數(shù),或者它的值為“”,則這個動作對beann沒有影響value 要賦給bean屬性的值。它可以是一個請求時的屬性,或者可以接受一個表達式作為它的值。(一個標(biāo)記不能夠同時具有param和value屬性)讀取屬性<jsp:getProperty>檢索Bean屬性的值,將此值轉(zhuǎn)換成字符串,并插入輸出結(jié)果中。在使用前bean必須被實例化。語法如下:<jsp:getPropertyname="name"property="propertyName"/>其中:Name:bean的名稱Property:要取值的屬性名Name應(yīng)該與useBean中的id一致。例5-2該例子實現(xiàn)一個簡單的計數(shù)器。這個計數(shù)器有簡單的int類型的count屬性。它用來統(tǒng)計當(dāng)前bean屬性被訪問的次數(shù)。另外它也包含了相應(yīng)的設(shè)置獲取屬性的方法。(1)編寫Javabean文件Counter.java【程序代碼】Counter.javapackagebookshop;publicclassCounter{intcount=0;publicintgetCount(){returncount;}publicvoidsetCount(intcount){this.count=count;}publicvoidaddCount(){count++;}}【程序說明】如果類的成員變量的名字是xxx,那么為了更改或獲取成員變量的值,在類中使用兩個方法:getXxx(),用來獲取屬性xxx。setXxx(),用來修改屬性xxx。如本例中的getCount()與setCount()方法,請注意方法中屬性count對應(yīng)的首字符c一定要大寫。對于boolean類型的成員變量,允許使用is代替get。類中方法的訪問屬性必須是public的。Javabean如果有構(gòu)造函數(shù),那么這個構(gòu)造函數(shù)是public的,并且是無參數(shù)的。(2)編寫JSP文件,調(diào)用Javabean【程序代碼】counter.jsp<!--初始化Counterbean,名為counter--><jsp:useBeanid="counter"scope="session"class="bookshop.Counter"/><%counter.addCount();%>當(dāng)前計數(shù)為:<jsp:getPropertyname="counter"property="count"/><BR>圖5-4文件夾結(jié)構(gòu)數(shù)據(jù)庫訪問公用類數(shù)據(jù)庫訪問是Web應(yīng)用中一項頻繁的工作,為此,我們編寫一個訪問數(shù)據(jù)庫的類,以增強代碼的重復(fù)利用率,這也是模塊化的具體體現(xiàn)。在實際中有可能一段代碼在幾百個地方應(yīng)用,如數(shù)據(jù)庫的連接代碼,每一個JSP文件需要進行數(shù)據(jù)庫操作都要使用這段數(shù)據(jù)庫的連接代碼。如果將這段代碼寫入JavaBean中,通過JavaBean去連接,由JSP文件調(diào)用,這就實現(xiàn)了代碼的重用,體現(xiàn)了JavaBean的好處,若要修改連接數(shù)據(jù)庫的類型,只需更改一處。[程序代碼DBHandle.java][程序代碼5-3.jsp]應(yīng)用實例用戶登錄模塊

在網(wǎng)上書店中在提交訂單或要進入會員中心管理個人信息時,必須先登錄。本模塊用戶登錄的過程為:運行l(wèi)ogin.jsp,輸入用戶名dave、口令123,如圖5-8所示。單擊登錄,成功登錄后顯示歡迎頁面,如圖5-9所示。而如果輸入非法的戶或口令,登錄失敗提示如圖5-10所示。如果未登錄直接去訪問main.jsp,則提示尚未登錄,如圖5-11所示。login.jsp數(shù)據(jù)庫

doLogin.jspUser.javaDB

溫馨提示

  • 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

提交評論