版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章JSP和JavaBean
本章將詳細(xì)介紹什么是JavaBean,以及如何定義JavaBean。還將介紹如何在JSP中調(diào)用JavaBean,如何設(shè)置并獲得JavaBean屬性以及設(shè)置JavaBean的范圍,最后還將介紹如何移除JavaBean。通過(guò)本章的學(xué)習(xí),讀者應(yīng)該能夠完成如下幾個(gè)目標(biāo)。熟練掌握定義JavaBean
熟練掌握在JSP中調(diào)用JavaBean
熟練掌握設(shè)置并獲得JavaBean屬性熟練掌握設(shè)置JavaBean的范圍熟練掌握移除JavaBean8.1.1JavaBean簡(jiǎn)介JavaBean是為Java語(yǔ)言設(shè)計(jì)的軟件組件模型,具有可重復(fù)使用和跨平臺(tái)的特點(diǎn)??梢酝ㄟ^(guò)JavaBean來(lái)封裝業(yè)務(wù)邏輯,進(jìn)行數(shù)據(jù)庫(kù)操作等。從而很好的實(shí)現(xiàn)業(yè)務(wù)邏輯和前后臺(tái)程序的分離。
JavaBean其實(shí)就是一個(gè)簡(jiǎn)單的Java類(lèi),這也就意味著,Java類(lèi)的一切特征,JavaBean也都具有。JavaBean同樣可以使用封裝、繼承、多態(tài)等特性。
JavaBean可以分為兩類(lèi),一類(lèi)是有用戶(hù)接口(UI)的JavaBean,一類(lèi)是沒(méi)有用戶(hù)接口的JavaBean。一般在JSP中使用的都是沒(méi)有用戶(hù)接口的JavaBean,因此本章所介紹的JavaBean都是指沒(méi)有用戶(hù)接口的JavaBean。這類(lèi)JavaBean只是簡(jiǎn)單的進(jìn)行業(yè)務(wù)封裝,如數(shù)據(jù)運(yùn)算和處理、數(shù)據(jù)庫(kù)操作等。8.1.1JavaBean簡(jiǎn)介
一個(gè)標(biāo)準(zhǔn)的JavaBean應(yīng)該具有如下幾個(gè)特點(diǎn)。1、JavaBean必須是一個(gè)公開(kāi)的類(lèi),也就是說(shuō)JavaBean的類(lèi)訪(fǎng)問(wèn)權(quán)限必須是public的。2、JavaBean必須具有一個(gè)無(wú)參數(shù)的構(gòu)造方法。如果在JavaBean中定義了自定義的有參構(gòu)造方法,就必須添加一個(gè)無(wú)參數(shù)構(gòu)造方法,否則將無(wú)法設(shè)置屬性;如果沒(méi)有定義自定義的有參構(gòu)造方法,則可以利用編譯器自動(dòng)添加的無(wú)參構(gòu)造方法。3、JavaBean一般將屬性設(shè)置成私有的,通過(guò)使用getXXX()方法和setXXX()方法來(lái)進(jìn)行屬性的取得和設(shè)置。8.1.2定義JavaBean02 //一個(gè)簡(jiǎn)單的JavaBean示例03 publicclassUserBean{04 //用戶(hù)名屬性05 privateStringusername;06 //用戶(hù)密碼屬性08 privateStringpassword;08 //獲得用戶(hù)名09 publicStringgetUsername(){10 returnusername;11 }12 //設(shè)置用戶(hù)名13 publicvoidsetUsername(Stringusername){14 this.username=username;15 }16 //獲得用戶(hù)密碼18 publicStringgetPassword(){18 returnpassword;19 }20 //設(shè)置用戶(hù)密碼21 publicvoidsetPassword(Stringpassword){22 this.password=password;23 }24 }聲明了該類(lèi)的訪(fǎng)問(wèn)權(quán)限為Public,符合JavaBean定義的第一個(gè)特點(diǎn)。代碼中沒(méi)有定義自定義的有參構(gòu)造方法,符合JavaBean定義的第二個(gè)特點(diǎn)。JavaBean中的兩個(gè)屬性,其訪(fǎng)問(wèn)級(jí)別為private,然后通過(guò)添加相應(yīng)的getXXX()方法和setXXX()方法來(lái)進(jìn)行屬性的取得和設(shè)置。符合JavaBean定義的第三個(gè)特點(diǎn)8.1.3在JSP中調(diào)用JavaBean在JSP中調(diào)用JavaBean,有如下兩個(gè)優(yōu)點(diǎn)。1、提高代碼的可復(fù)用性。對(duì)于通常使用的業(yè)務(wù)邏輯代碼,如數(shù)據(jù)運(yùn)算和處理、數(shù)據(jù)庫(kù)操作等,可以封裝到JavaBean中。在JSP文件中可以多次的調(diào)用JavaBean中的方法來(lái)實(shí)現(xiàn)快速的程序開(kāi)發(fā)。2、將HTML代碼和Java代碼進(jìn)行分離,程序利于開(kāi)發(fā)維護(hù)。將業(yè)務(wù)邏輯進(jìn)行封裝,使得業(yè)務(wù)邏輯代碼和顯示代碼想分離,不會(huì)互相干擾。避免了代碼有多有復(fù)雜的問(wèn)題,方便了日后的維護(hù)。要想要JSP中調(diào)用JavaBean,就需要使用到<jsp:useBean>動(dòng)作指令,其語(yǔ)法格式如下。<jsp:useBeanid="對(duì)象名稱(chēng)"scope="儲(chǔ)存范圍"class="類(lèi)名"></jsp:useBean>其中id屬性表示該JavaBean實(shí)例化后的對(duì)象名稱(chēng)。scope屬性用來(lái)指定該JavaBean的范圍,也就是指JavaBean實(shí)例化后的對(duì)象儲(chǔ)存范圍。范圍的取值有如下四種,分別是page、request、session和application。class屬性用來(lái)指定JavaBean的類(lèi)名,這里所指的類(lèi)名包括包名和類(lèi)名。調(diào)用JavaBean的示例<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>通過(guò)useBean動(dòng)作指令調(diào)用JavaBean</title></head><body><%--通過(guò)useBean動(dòng)作指令調(diào)用JavaBean--%><jsp:useBeanid="user"scope="page"class="com.javaweb.ch08.UserBean"></jsp:useBean><%//設(shè)置User的usernamen屬性
user.setUsername("James");
//設(shè)置User的password屬性
user.setPassword("1234");//打印輸出User的usernamen屬性
out.println("用戶(hù)名:"+user.getUsername()+"<br>");//打印輸出User的password屬性
out.println("用戶(hù)名:"+user.getPassword());%></body></html>通過(guò)<jsp:useBean>指令調(diào)用名為UserBean的JavaBean,并設(shè)置其實(shí)例化對(duì)象名為user,其存儲(chǔ)范圍為Page范圍。user.setUsername(“James”)和user.setPassword(“1234”)語(yǔ)句分別設(shè)置其屬性值。out.println("用戶(hù)名:"+user.getUsername()+"<br>");out.println("用戶(hù)名:"+user.getPassword());通過(guò)實(shí)例化對(duì)象名user分別獲得其屬性并輸出在頁(yè)面上。8.2設(shè)置JavaBean屬性
JSP中提供了一個(gè)<jsp:setProperty>動(dòng)作指令來(lái)設(shè)置JavaBean屬性,其有如下四種語(yǔ)法格式。<jsp:setPropertyname="實(shí)例化對(duì)象名"property="*"/><jsp:setPropertyname="實(shí)例化對(duì)象名"property="屬性名稱(chēng)"/><jsp:setPropertyname="實(shí)例化對(duì)象名"property="屬性名稱(chēng)"param="參數(shù)名稱(chēng)"/><jsp:setPropertyname="實(shí)例化對(duì)象名"property="屬性名稱(chēng)"value="屬性值"/>其中name屬性使用設(shè)置實(shí)例化對(duì)象名,和<jsp:useBean>中的id屬性保持一致。property屬性用來(lái)指定JavaBean屬性名稱(chēng)。param屬性用來(lái)指定接受參數(shù)名稱(chēng),value屬性用來(lái)指定屬性值。8.2.1根據(jù)所有參數(shù)設(shè)置JavaBean屬性第一種<jsp:setProperty>動(dòng)作指令用來(lái)根據(jù)所有參數(shù)設(shè)置JavaBean屬性,其語(yǔ)法格式如下。<jsp:setPropertyname="實(shí)例化對(duì)象名"property="*"/>其中“*”表示根據(jù)表單傳遞的所有參數(shù)來(lái)設(shè)置JavaBean的屬性。比如通過(guò)表單傳遞了兩個(gè)參數(shù),如username和password,這時(shí)就可以自動(dòng)的對(duì)JavaBean中的username屬性以及password屬性進(jìn)行賦值。這里必須注意的是,表單的參數(shù)必須和JavaBean中的屬性名稱(chēng)保持大小寫(xiě)一致,否則無(wú)法進(jìn)行賦值操作。根據(jù)參數(shù)設(shè)置JavaBean屬性的示例。該實(shí)例包含兩個(gè)實(shí)例,一個(gè)是用來(lái)傳遞參數(shù)的用戶(hù)表單useform.jsp,一個(gè)是設(shè)置JabaBean屬性頁(yè)面。Useform.jsp<html><head><title>用戶(hù)表單</title></head><body><center><fontsize=4color=blue>用戶(hù)表單</font></center><hr><formmethod="post"action="setpropertyDemo.jsp"><fontcolor=green>
用戶(hù)名:<inputtype=textname="username"size=10maxlength=10><br>
密碼:<inputtype=textname="password"size=10maxlength=10><br><inputtype=submitvalue="提交"><inputtype=resetvalue="清除"></form></font></body></html>setPropertyDemo.jsp<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>設(shè)置JavaBean的屬性</title></head><body><%--通過(guò)useBean動(dòng)作指令調(diào)用JavaBean--%><jsp:useBeanid="user"scope="page"class="com.javaweb.ch08.UserBean"></jsp:useBean><%--根據(jù)所有的參數(shù)設(shè)置JavaBean中的屬性--%><jsp:setPropertyname="user"property="*"/>//打印輸出User的usernamen屬性
out.println("用戶(hù)名:"+user.getUsername()+"<br>");//打印輸出User的password屬性
out.println(“用戶(hù)密碼:"+user.getPassword());%></body></html>通過(guò)<jsp:useBean>指令調(diào)用名為UserBean的JavaBean,并設(shè)置其實(shí)例化對(duì)象名為user,其存儲(chǔ)范圍為Page范圍。<jsp:setPropertyname=“user”property=“*”/>動(dòng)作指令來(lái)根據(jù)所有參數(shù)設(shè)置JavaBean屬性。out.println("用戶(hù)名:"+user.getUsername()+"<br>");out.println("用戶(hù)名:"+user.getPassword());通過(guò)實(shí)例化對(duì)象名user分別獲得其屬性并輸出在頁(yè)面上。8.2.2根據(jù)指定參數(shù)設(shè)置JavaBean屬性第二種<jsp:setProperty>動(dòng)作指令用來(lái)根據(jù)指定參數(shù)設(shè)置JavaBean屬性,其語(yǔ)法格式如下。<jsp:setPropertyname=“實(shí)例化對(duì)象名”
property=“屬性名稱(chēng)"/>第二種<jsp:setProperty>動(dòng)作指令相比第一種<jsp:setProperty>動(dòng)作指令具有更好的彈性。第一種<jsp:setProperty>動(dòng)作指令要求設(shè)置所有的參數(shù),而第二種<jsp:setProperty>動(dòng)作指令可以用來(lái)設(shè)置指定的參數(shù)。比如通過(guò)表單傳遞了兩個(gè)參數(shù),如username和password,這時(shí)就可以指定只為JavaBean的username屬性賦值,也可以指定只為JavaBean的password屬性賦值。setPropertyDemo2.jsp<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>設(shè)置JavaBean的屬性</title></head><body><%--通過(guò)useBean動(dòng)作指令調(diào)用JavaBean--%><jsp:useBeanid="user"scope="page"class="com.javaweb.ch08.UserBean"></jsp:useBean><%--根據(jù)所有的參數(shù)設(shè)置JavaBean中的屬性--%><jsp:setPropertyname="user"property=“username"/>//打印輸出User的usernamen屬性
out.println("用戶(hù)名:"+user.getUsername()+"<br>");//打印輸出User的password屬性
out.println(“用戶(hù)密碼:"+user.getPassword());%></body></html>通過(guò)<jsp:useBean>指令調(diào)用名為UserBean的JavaBean,并設(shè)置其實(shí)例化對(duì)象名為user,其存儲(chǔ)范圍為Page范圍。<jsp:setPropertyname="user"property=“username"/>動(dòng)作指令來(lái)根據(jù)指定參數(shù)設(shè)置JavaBean屬性。out.println("用戶(hù)名:"+user.getUsername()+"<br>");out.println("用戶(hù)名:"+user.getPassword());通過(guò)實(shí)例化對(duì)象名user分別獲得其屬性并輸出在頁(yè)面上。8.2.3根據(jù)指定參數(shù)設(shè)置指定JavaBean屬性第三種<jsp:setProperty>動(dòng)作指令用來(lái)根據(jù)指定參數(shù)設(shè)置指定JavaBean屬性,其語(yǔ)法格式如下。<jsp:setPropertyname="實(shí)例化對(duì)象名"property="屬性名稱(chēng)"param="參數(shù)名稱(chēng)"/>第三種<jsp:setProperty>動(dòng)作指令相比前兩種<jsp:setProperty>動(dòng)作指令更加具有彈性。前面兩種<jsp:setProperty>動(dòng)作指令都需要設(shè)置參數(shù)和JavaBean屬性必須相同,而且必須保證大小寫(xiě)一致。而第三種<jsp:setProperty>動(dòng)作指令沒(méi)有此限制,因?yàn)榭梢酝ㄟ^(guò)其指定需要設(shè)置的JavaBean屬性。setPropertyDemo3.jsp<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>設(shè)置JavaBean的屬性</title></head><body><%--通過(guò)useBean動(dòng)作指令調(diào)用JavaBean--%><jsp:useBeanid="user"scope="page"class="com.javaweb.ch08.UserBean"></jsp:useBean><%--根據(jù)所有的參數(shù)設(shè)置JavaBean中的屬性--%><jsp:setPropertyname="user"property=“username“param=“username”/><jsp:setPropertyname="user"property=“password“param=“password”/>//打印輸出User的usernamen屬性
out.println("用戶(hù)名:"+user.getUsername()+"<br>");//打印輸出User的password屬性
out.println(“用戶(hù)密碼:"+user.getPassword());%></body></html>通過(guò)<jsp:useBean>指令調(diào)用名為UserBean的JavaBean,并設(shè)置其實(shí)例化對(duì)象名為user,其存儲(chǔ)范圍為Page范圍。<jsp:setPropertyname="user"property=“username“param=“username”/><jsp:setPropertyname=“user”property=“password“param=“password”/>上述兩條動(dòng)作指令用username和password來(lái)分別設(shè)置JavaBean的username和password兩個(gè)屬性。out.println("用戶(hù)名:"+user.getUsername()+"<br>");out.println("用戶(hù)名:"+user.getPassword());通過(guò)實(shí)例化對(duì)象名user分別獲得其屬性并輸出在頁(yè)面上。8.2.4設(shè)置指定JavaBean屬性為指定值第四種<jsp:setProperty>動(dòng)作指令用來(lái)設(shè)置指定JavaBean屬性為指定值,其語(yǔ)法格式如下。<jsp:setPropertyname="實(shí)例化對(duì)象名"property="屬性名稱(chēng)"value="屬性值"/>第四種<jsp:setProperty>動(dòng)作指令相比前三種<jsp:setProperty>動(dòng)作指令更加具有彈性。前面三種<jsp:setProperty>動(dòng)作指令都需要接受表單參數(shù),而第四種可以根據(jù)需要?jiǎng)討B(tài)的設(shè)置JavaBean屬性值。setPropertyDemo4.jsp<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>設(shè)置JavaBean的屬性</title></head><body><%--通過(guò)useBean動(dòng)作指令調(diào)用JavaBean--%><jsp:useBeanid="user"scope="page"class="com.javaweb.ch08.UserBean"></jsp:useBean><%--根據(jù)所有的參數(shù)設(shè)置JavaBean中的屬性--%><jsp:setPropertyname="user"property=“username“value=“abc”/><jsp:setPropertyname="user"property=“password“value=“123”/>//打印輸出User的usernamen屬性
out.println("用戶(hù)名:"+user.getUsername()+"<br>");//打印輸出User的password屬性
out.println(“用戶(hù)密碼:"+user.getPassword());%></
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 區(qū)域活動(dòng)家長(zhǎng)會(huì)
- 物聯(lián)網(wǎng)企業(yè)介紹
- 泡沫滅火演練講解
- 大學(xué)生職業(yè)生涯規(guī)劃
- 認(rèn)知與知覺(jué)障礙的作業(yè)治療
- 3.4沉淀溶解平衡 同步練習(xí)高二化學(xué)人教版(2019)選擇性必修1
- 初中物理教案課后反思
- 彩虹的盡頭教案反思
- 蝴蝶落我家說(shuō)課稿
- 汽車(chē)美容店加油站施工合同
- 鋁合金模板工程設(shè)計(jì)與施工專(zhuān)項(xiàng)方案技術(shù)交底
- 初中英語(yǔ)詞性講解課件
- 陜西中考物理備考策略課件
- 9F燃機(jī)燃機(jī)規(guī)程
- aiissti變頻器說(shuō)明書(shū)
- 綠化養(yǎng)護(hù)報(bào)價(jià)表
- 家校溝通案例七篇
- 大學(xué)生心理健康教育論文范文3000字(8篇)
- 新保險(xiǎn)法試題
- 退行性腰椎間盤(pán)病診療和階梯治療
- 新材料概論課件ppt 第7章 信息功能材料
評(píng)論
0/150
提交評(píng)論