Java Web程序設(shè)計(jì)項(xiàng)目實(shí)戰(zhàn)(微課版) 課件 項(xiàng)目五 JavaBean開(kāi)發(fā)模型_第1頁(yè)
Java Web程序設(shè)計(jì)項(xiàng)目實(shí)戰(zhàn)(微課版) 課件 項(xiàng)目五 JavaBean開(kāi)發(fā)模型_第2頁(yè)
Java Web程序設(shè)計(jì)項(xiàng)目實(shí)戰(zhàn)(微課版) 課件 項(xiàng)目五 JavaBean開(kāi)發(fā)模型_第3頁(yè)
Java Web程序設(shè)計(jì)項(xiàng)目實(shí)戰(zhàn)(微課版) 課件 項(xiàng)目五 JavaBean開(kāi)發(fā)模型_第4頁(yè)
Java Web程序設(shè)計(jì)項(xiàng)目實(shí)戰(zhàn)(微課版) 課件 項(xiàng)目五 JavaBean開(kāi)發(fā)模型_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目五JavaBean開(kāi)發(fā)模型

項(xiàng)目要

求本項(xiàng)目是JavaBean開(kāi)發(fā)模型的應(yīng)用,主要是完成JavaBean模型的創(chuàng)建和應(yīng)用,并能提高程序的可讀性、代碼的重用性、節(jié)省開(kāi)發(fā)時(shí)間。

項(xiàng)目分

析要完成項(xiàng)目任務(wù),至少需要具備兩個(gè)基本條件:一是掌握J(rèn)avaBean的創(chuàng)建和方法的應(yīng)用,二是掌握J(rèn)avaBean綜合應(yīng)用,該項(xiàng)目分3個(gè)任務(wù),分別是應(yīng)用JavaBean計(jì)算梯形的面積、應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能和應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)。

項(xiàng)目目

標(biāo)【知識(shí)目標(biāo)】掌握J(rèn)SP中編寫(xiě)JavaBean的方法,掌握J(rèn)avaBean數(shù)據(jù)庫(kù)訪問(wèn)和編碼轉(zhuǎn)換?!灸芰δ繕?biāo)】能編寫(xiě)和應(yīng)用JavaBean,用應(yīng)用JavaBean實(shí)現(xiàn)數(shù)據(jù)庫(kù)的封裝,并能解決中文亂碼?!舅刭|(zhì)目標(biāo)】培養(yǎng)學(xué)生代碼的規(guī)范嚴(yán)謹(jǐn)性,提高學(xué)生的分析問(wèn)題,解決問(wèn)題的能力。

知識(shí)導(dǎo)

圖任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)演示編寫(xiě)一個(gè)JSP頁(yè)面,該頁(yè)面提供一個(gè)表單,用戶可以通過(guò)表單設(shè)置梯形的上底、下底和高的值,并提交給本JSP頁(yè)面,該JSP頁(yè)面將計(jì)算梯形面積的任務(wù)交給一個(gè)pagebean去完成。JSP頁(yè)面使用getProperty動(dòng)作標(biāo)記顯示pagebean中的數(shù)據(jù),如圖所示任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積–知識(shí)準(zhǔn)備JavaBean的分類(lèi)JavaBean的規(guī)范使用JavaBeanJavaBean介紹1.

JavaBean介紹Javabean是Java的可重復(fù)使用軟件組件,實(shí)際上JavaBean是一種Java類(lèi)。每個(gè)JavaBean都實(shí)現(xiàn)了一個(gè)特定的功能,經(jīng)過(guò)合理地組織不同功能的JavaBean,可以快速生成一個(gè)全新的應(yīng)用程序。假設(shè)將一個(gè)應(yīng)用程序比做一間空房間,那么這些JavaBean就好比房間中的家具。由于JavaBean是基于Java語(yǔ)言的,因此JavaBean不依賴平臺(tái),具有以下特點(diǎn):(1)可以實(shí)現(xiàn)代碼的重復(fù)利用。(2)易編寫(xiě)、易維護(hù)、易使用。(3)可以在任何安裝了Java運(yùn)行環(huán)境的平臺(tái)上使用,而不需要重新編譯。2.

JavaBean的分類(lèi)JavaBean起初的目的是將可以重復(fù)使用的代碼進(jìn)行打包,在傳統(tǒng)的應(yīng)用中,JavaBean應(yīng)用于可視化界面,Java圖形界面中使用的按鈕、文本框和列表框等,這種JavaBean稱為可視化的JavaBean。隨著技術(shù)的不斷發(fā)展與項(xiàng)目需求的增加,JavaBean的功能與應(yīng)用范圍也在不斷擴(kuò)展,目前JavaBean主要實(shí)現(xiàn)一些業(yè)務(wù)邏輯或封裝一些業(yè)務(wù)對(duì)象,這些JavaBean并沒(méi)有可視化界面,又稱為非可視化的JavaBean。3.

JavaBean的分類(lèi)孟子曰“不以規(guī)矩,不能成方圓”,同樣,在設(shè)計(jì)JavaBean時(shí),需要遵循有關(guān)約定:(1)使用package語(yǔ)句進(jìn)行打包(2)類(lèi)中聲明的方法的訪問(wèn)屬性都必須是public的。(3)類(lèi)中需提供public、無(wú)參數(shù)的構(gòu)造方法。(4)屬性必須聲明為私有的(即用private修飾)(5)如果類(lèi)的成員變量的名字是xxx,類(lèi)中提供兩個(gè)方法:getXxx(),用來(lái)獲取屬性xxx。setXxx(),用來(lái)修改屬性xxx.。

也就是方法的名字用get或set為前綴,后綴是將成員變量名字的首字母大寫(xiě)的字符序列。

(6)對(duì)于boolean類(lèi)型的成員變量,即布爾邏輯類(lèi)型的屬性,允許使用“is”代替上面的“get”和“set”。JavaBean的創(chuàng)建【例5-1-1】創(chuàng)建一個(gè)Student的Bean類(lèi)

packagemy.bean;publicclassStudent{ privateStringname; privateintage; publicStudent(){ } publicStringgetName(){ returnname;

} publicvoidsetName(Stringname){ =name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; }}JavaBean和JSP技術(shù)結(jié)合不僅可以實(shí)現(xiàn)表現(xiàn)層和邏輯層的分離,還可以提高JSP程序的運(yùn)行效率和代碼重用的程度,并且可以實(shí)現(xiàn)并行開(kāi)發(fā),在JSP中提供了<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>動(dòng)作元素來(lái)實(shí)現(xiàn)對(duì)JavaBean的操作。4.使用JavaBean1.<jsp:useBean>動(dòng)作元素基本格式如下:<jsp:useBeanid="beanname"class=“package.class"scope=“page|request|session|application"/>或<jsp:useBeanid="beanname"class="package.class"scope="page|request|session|application"></jsp:useBean><jsp:useBean>動(dòng)作元素的基本屬性4.使用JavaBean序號(hào)屬性名功能1idJavaBean對(duì)象的唯一標(biāo)識(shí),代表了一個(gè)JavaBean對(duì)象的實(shí)例。它具有特定的scope存在范圍。在JSP頁(yè)面中通過(guò)id來(lái)識(shí)別JavaBean2scope代表JavaBean對(duì)象的生存時(shí)間,可以是page,request等,默認(rèn)是page3class代表了JavaBean對(duì)象的class名字,需要特別注意的是大小寫(xiě)要完全一致2.<jsp:getProperty>動(dòng)作元素<jsp:getProperty>用于獲取Bean對(duì)象中屬性的值。JavaBean的實(shí)例必須在<jsp:getProperty>前面定義,基本語(yǔ)句的格式如下:<jsp:getPropertyname="id"property="bean屬性"/>或<jsp:getPropertyname="id"property="bean屬性"/></jsp:getProperty><jsp:getProperty>動(dòng)作元素的基本屬性4.使用JavaBean3.<jsp:setProperty>動(dòng)作元素<jsp:setProperty>可以設(shè)置JavaBean的屬性,基本語(yǔ)句格式如下:方式一:將bena屬性的值設(shè)置為一個(gè)字符串<jsp:setPropertyname="beanname"property="propertyname"value="propertyvalue"/>方式二:將bena屬性的值設(shè)置為一個(gè)表達(dá)式的值<jsp:setPropertyname="id"property="bean的屬性"value="<%=expression%>"/>序號(hào)屬性名功能1Name指出了要獲取哪個(gè)bean的屬性值,取值與useBean中的id值相同2property指出要獲取該bean的哪個(gè)屬性值

<jsp:setProperty>動(dòng)作元素的基本屬性4.使用JavaBean序號(hào)屬性名功能1Name指出了要獲取哪個(gè)bean的屬性值,取值與useBean中的id值相同2property代表要設(shè)置值的屬性property名字,(1)property=“*”,程序就會(huì)反復(fù)地查找當(dāng)前的ServletRequest所有參數(shù),并且匹配JavaBean中相同名字的屬性property,并通過(guò)JavaBean中屬性中的set方法給這個(gè)屬性賦值value。(2)如果value屬性為空,則不會(huì)修改JavaBean中的屬性值。3param代表了頁(yè)面請(qǐng)求的參數(shù)的名字,<jsp:setProperty>元素不能同時(shí)使用param和value4Value代表了賦給JavaBean的屬性property的具體值4.使用JavaBean【例5-1-2】編寫(xiě)Person.jsp頁(yè)面去訪問(wèn)例5-1-1的bean屬性<jsp:useBeanid="lili"class="my.bean.Student"

scope="request"></jsp:useBean>

<head><title>Inserttitlehere</title>

</head><bodybgcolor="f0fff0"><fontsize=4><b>

<jsp:setPropertyproperty="name"name="lili"value="麗麗"/>

<jsp:setPropertyproperty="age"name="lili"value="<%=20%>"/>

學(xué)生的姓名:<jsp:getPropertyproperty="name"name="lili"/><br>

學(xué)生的年齡:<jsp:getPropertyproperty="age"name="lili"/>

</font></b>

</body>任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)實(shí)施編寫(xiě)一個(gè)JSP頁(yè)面,該頁(yè)面提供一個(gè)表單,用戶可以通過(guò)表單設(shè)置梯形的上底、下底和高的值,并提交給本JSP頁(yè)面,該JSP頁(yè)面將計(jì)算梯形面積的任務(wù)交給一個(gè)pagebean去完成。JSP頁(yè)面使用getProperty動(dòng)作標(biāo)記顯示pagebean中的數(shù)據(jù),如圖所示任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)實(shí)施第一步:bean的類(lèi)文件以“class"形式創(chuàng)建,為”AreaBean.java"。需要把bean文件放到my.bean包中。packagemy.bean;publicclassAreaBean{privatedoublehight,up,down,area;publicAreaBean(){}publicdoublegetHight(){ returnhight;}publicvoidsetHight(doublehight){ this.hight=hight;}publicdoublegetUp(){ returnup;}publicvoidsetUp(doubleup){ this.up=up;}publicdoublegetDown(){ returndown;}publicvoidsetDown(doubledown){ this.down=down;}publicdoublegetArea(){ this.area=(up+down)*hight/2; returnarea;}publicvoidsetArea(doublearea){ this.area=area;}}任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)實(shí)施第二步

創(chuàng)建jsp文件<jsp:useBeanid="tixing"class="my.bean.AreaBean"scope="request"></jsp:useBean><bodybgcolor="f0fff0"><fontsize=4><b><jsp:setPropertyproperty="up"name="tixing"value="20"/><jsp:setPropertyproperty="down"name="tixing"value="30"/><jsp:setPropertyproperty="hight"name="tixing"value="5"/>梯形的上底:<jsp:getPropertyproperty="up"name="tixing"/><br>梯形的下底:<jsp:getPropertyproperty="down"name="tixing"/><br>梯形的高:<jsp:getPropertyproperty="hight"name="tixing"/><br>梯形的面積:<jsp:getPropertyproperty="area"name="tixing"/><br></font></b></body>任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)拓展通過(guò)任務(wù)5.1的學(xué)習(xí),我們已經(jīng)學(xué)會(huì)使用一個(gè)簡(jiǎn)單的bean,有時(shí)在寫(xiě)一個(gè)bean的時(shí)候,除了需要應(yīng)用import語(yǔ)句引入系統(tǒng)提供的類(lèi),可能還需要其它一些自己編寫(xiě)的類(lèi),此時(shí)只要將這些類(lèi)和創(chuàng)建的bean的類(lèi)寫(xiě)在一個(gè)Java源中即可。1.FilenameFilter介紹FilenameFilter是一個(gè)接口,實(shí)現(xiàn)FilenameFilter接口的類(lèi)的實(shí)例用于過(guò)濾不符合規(guī)格的文件名,并返回合格的文件,只有一個(gè)accpet方法。publicbooleanaccept(Filedir,Stringname){}作用:它用來(lái)測(cè)試指定的文件是否應(yīng)包含在文件列表中dir:表示文件的當(dāng)前目錄name:表示文件名任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)拓展2.File文件File類(lèi)的一個(gè)對(duì)象,代表一個(gè)文件或一個(gè)文件目錄(文件夾),基本格式如下:Filef=newFile("路徑");常用的方法:(1)String[]fs=f.list();//獲取指定目錄下的所有文件或者文件目錄的名稱數(shù)組(2)File[]fs=f.listFiles();//獲取指定目錄下的所有文件或者文件目錄的FiLe數(shù)組FilenameFilter用來(lái)把符合要求的文件或目錄返回;因此可以調(diào)用:(1)String[]fs=f.list(FilenameFilterfilter);;(2)File[]fs=f.listFiles(FilenameFilterfilter);當(dāng)向list方法傳遞一個(gè)FilenameFilter接口對(duì)象時(shí),list方法在列出文件時(shí),將讓該文件調(diào)用accept方法檢查該文件是否符合accept方法指定的目錄和文件的要求。任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)拓展【例5-1-3】應(yīng)用bean列出JSP頁(yè)面所在目錄中特定擴(kuò)展名的文件。第一步:編寫(xiě)FileName和ListFile類(lèi)packagemy.bean;importjava.io.File;importjava.io.FilenameFilter;classFileNameimplementsFilenameFilter{ Stringstr=null; FileName(Strings)

{ str="."+s; } publicbooleanaccept(Filedir,Stringname){ returnname.endsWith(str); }}任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)拓展第一步:編寫(xiě)FileName和ListFile類(lèi)publicclassListFile{ StringextendsName=null; StringBufferallFileName=newStringBuffer(); publicStringgetExtendsName(){ returnextendsName; } publicvoidsetExtendsName(StringextendsName){ this.extendsName=extendsName; } publicStringBuffergetAllFileName(){ Filedir=newFile("D:/douban"); FileNamefilename=newFileName(extendsName); Stringfile_name[]=dir.list(filename); for(inti=0;i<file_name.length;i++)

{allFileName.append(file_name[i]+"");}

returnallFileName;}}任務(wù)一應(yīng)用JavaBean計(jì)算梯形的面積--任務(wù)拓展第二步:編寫(xiě)JSP文件<%@pageimport="my.bean.ListFile"%><jsp:useBeanid="file"class="my.bean.ListFile"scope="page"></jsp:useBean><bodybgcolor="pink"><formaction=""method="post">輸入文件的擴(kuò)展名:<inputtype="text"name="extendsName"><inputtype="submit"value="提交"></form><jsp:setPropertyproperty="extendsName"name="file"param="extendsName"/><p>擴(kuò)展名是<jsp:getPropertyproperty="extendsName"name="file"/>文件有:<br><jsp:getPropertyproperty="allFileName"name="file"/></body>

任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能--任務(wù)演示當(dāng)我們進(jìn)入網(wǎng)站時(shí),想購(gòu)商品,需要先注冊(cè),然后才能購(gòu)買(mǎi),如圖所示運(yùn)行界面輸入信息任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能--任務(wù)演示提交后的信息任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能–知識(shí)準(zhǔn)備setProperty元素setProperty元素使用setProperty設(shè)置bean屬性值可以通過(guò)HTML表單的參數(shù)的值來(lái)設(shè)置bean的相應(yīng)屬性的值,要求bean屬性的名字必須在表單中有相應(yīng)的參數(shù)名字與之對(duì)應(yīng),JSP引擎會(huì)自動(dòng)將參數(shù)的字符串值轉(zhuǎn)換為bean相對(duì)應(yīng)的屬性的值。如果用HTTP表單的所有參數(shù)的值設(shè)置bean相對(duì)應(yīng)的屬性的值可以使用setProperty元素:方式一:<jsp:setPropertyname="beanname"property="*"/>該元素不再具體指定bean屬性的值將對(duì)應(yīng)表單中哪些參數(shù)指定的值,系統(tǒng)會(huì)自動(dòng)根據(jù)名字進(jìn)行對(duì)應(yīng)的匹配。1.

response對(duì)象實(shí)現(xiàn)重定向【例5-2-1】通過(guò)bean,實(shí)現(xiàn)表單讀取網(wǎng)站登錄信息用戶登錄前后界面setProperty元素第一步:編寫(xiě)JavaBean類(lèi)Loginpackagemy.bean;publicclassLogin{privateStringusername;privateStringpassword;publicLogin(){}publicStringgetUsername(){ returnusername;}publicvoidsetUsername(Stringusername){ this.username=username;}publicStringgetPassword(){ returnpassword;}publicvoidsetPassword(Stringpassword){ this.password=password;}}setProperty元素第二步:編寫(xiě)JSP頁(yè)面<jsp:useBeanid="lili"class="my.bean.Login"></jsp:useBean><bodybgcolor="pink"><formaction=""method="post">用戶的登錄界面<br>用戶名:<inputtype="text"name="username"><br>密

碼:<inputtype="password"name="password"><br><inputtype="submit"value="提交給本頁(yè)面"><br></form>顯示用戶的登錄信息<br><%request.setCharacterEncoding("utf-8");%><jsp:setPropertyproperty="*"name="lili"/>用戶名:<jsp:getPropertyproperty="username"name="lili"/><br/>密碼:<jsp:getPropertyproperty="password"name="lili"/></body>setProperty元素方式二:<jsp:setPropertyname="beanname"property="propertyName",param="parameterName"/>這種方式適合于HTML表單中元素的name屬性值與JavaBean中的屬性名不一致的情況。如果將案例5-2-1中的用戶名的name屬性設(shè)置為user,密碼框的name的屬性設(shè)置為pwd,則用方式一,就會(huì)出錯(cuò),但可以應(yīng)用方式二,參考語(yǔ)句如下:<jsp:setPropertyproperty="username"name="lili"param="user"/><jsp:setPropertyproperty="password"name="lili"param="pwd"/><br/>property是JavaBean的屬性,param是表單控件的名稱方式三:<jsp:setPropertyname="beanname"property="propertyName",value="propertyValue"/>這種方式適合于直接給指定的屬性值賦值<jsp:setPropertyproperty="username"name="lili"value="麗麗"/><jsp:setPropertyproperty="password"name="lili"value="123456"/><br/>第一步:編寫(xiě)JavaBean類(lèi)Register任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能–任務(wù)實(shí)現(xiàn)packagemy.bean;publicclassRegister{Stringlogname="",password,phone="",address="",realname="";publicRegister(){}publicStringgetLogname(){

returnlogname;}publicvoidsetLogname(Stringlogname){this.logname=logname;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetPhone(){returnphone;}publicvoidsetPhone(Stringphone){this.phone=phone;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this.address=address;}publicStringgetRealname(){returnrealname;}publicvoidsetRealname(Stringrealname){this.realname=realname;}}第二步:編寫(xiě)jsp文件任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能–任務(wù)實(shí)現(xiàn)*重復(fù)密碼:<inputtype="password"name="again_password"><br><br>

聯(lián)系電話:<inputtype="text"name="phone"><br><br>

收件地址:<inputtype="text"name="address"><br><br>

真實(shí)姓名:<inputtype="text"name="realname"><br><br><inputtype="submit"value="提交"></form></div><div><h1>顯示用戶網(wǎng)站注冊(cè)信息</h1><%request.setCharacterEncoding("utf-8");%><jsp:setPropertyproperty="*"name="register"/>用戶名稱:<jsp:getPropertyproperty="logname"name="register"/><br><br>用戶密碼:<jsp:getPropertyproperty="password"name="register"/><br><br>聯(lián)系電話:<jsp:getPropertyproperty="phone"name="register"/><br><br>收件地址:<jsp:getPropertyproperty="address"name="register"/><br><br>真實(shí)姓名:<jsp:getPropertyproperty="realname"name="register"/><br><br></div></body>任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能–任務(wù)拓展1.編寫(xiě)最美的逆行者相冊(cè)任務(wù)要求:2022年8月,重慶市北碚區(qū)歇馬街道虎頭村突發(fā)山火,從山火燒起來(lái)的那一刻,各方力量開(kāi)始集結(jié),消防救援人員和志愿者們?yōu)榱巳嗣裆?cái)產(chǎn)安全,在極端高溫天氣下又處于炙烤險(xiǎn)峻的一線,勇往直前、迎難而上,他們是最美的逆行者在北碚山火中讀懂重慶,應(yīng)用你學(xué)的知識(shí),做一個(gè)救火相冊(cè),如圖所示。任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能–任務(wù)拓展第一步:創(chuàng)建FileName1類(lèi)和Imagebean類(lèi)publicclassImagebean{intimageNumber=0,max;StringpictureName[]={},playImage;

publicImagebean() {Filedir=newFile("D:/workspace/項(xiàng)目五/WebContent/image"); pictureName=dir.list(newFileName1()); max=pictureName.length; } publicintgetImageNumber()

{returnimageNumber; } publicvoidsetImageNumber(intn)

{ if(n<0) n=max-1; if(n==max) n=0; imageNumber=n; }任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能–任務(wù)拓展publicStringgetPlayImage(){playImage=newString("<imgsrc=image/"+pictureName[imageNumber]+""+"width=500height=300></img>");returnplayImage;}}第二步:創(chuàng)建jsp文件<%@pageimport="my.bean.*"%><jsp:useBeanid="photo"class="my.bean.Imagebean"scope="session"></jsp:useBean><bodybgcolor="pink"><jsp:setPropertyproperty="imageNumber"name="photo"param="imageNumber"/><h1>北碚的守護(hù)神</h1>任務(wù)二應(yīng)用JavaBean實(shí)現(xiàn)網(wǎng)站注冊(cè)功能–任務(wù)拓展<table><formaction=""method="post"><tr><td><inputtype=submitname="up"value="上一張"></td><inputtype="hidden"name="imageNumber"value="<%=photo.getImageNumber()-1%>"></form><formaction=""method=post><td><inputtype=submitname="down"value="下一張"></td><inputtype="hidden"name="imageNumber"value="<%=photo.getImageNumber()+1%>"></tr></form></table><jsp:getPropertyproperty="playImage"name="photo"/></body>

任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)--任務(wù)演示為了進(jìn)一步提高水果銷(xiāo)售業(yè)績(jī),便利客戶購(gòu)買(mǎi)商品,請(qǐng)應(yīng)用JavaBean技術(shù)實(shí)現(xiàn)購(gòu)物車(chē)系統(tǒng),主要功能包含展示水果,購(gòu)買(mǎi)水果,添加水果到購(gòu)物車(chē),清空購(gòu)物車(chē),如圖所示

水果列表購(gòu)買(mǎi)商品任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–知識(shí)準(zhǔn)備ArrayList的應(yīng)用任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–知識(shí)準(zhǔn)備封裝業(yè)務(wù)的JavaBean是完成一定運(yùn)算和操作功能的業(yè)務(wù)類(lèi),主要包含一些特定的方法,進(jìn)行業(yè)務(wù)處理。使用JavaBean一定程度上可以將Java處理代碼從JSP頁(yè)面中分離。封裝數(shù)據(jù)的JavaBean要將表單中的用戶輸入值送入數(shù)據(jù)庫(kù)中相應(yīng)的字段,或?qū)?shù)據(jù)庫(kù)中的字段值取出并顯示到網(wǎng)頁(yè)中,需要一個(gè)專(zhuān)用的Bean與封裝數(shù)據(jù)的JavaBean配合完成操作。在項(xiàng)目四已經(jīng)詳細(xì)介紹了JSP中連接數(shù)據(jù)庫(kù)的多種方法和數(shù)據(jù)庫(kù)進(jìn)行增加、刪除、修改和查詢的各種操作。在同一個(gè)應(yīng)用程序中的許多地方都需要進(jìn)行數(shù)據(jù)庫(kù)連接和數(shù)據(jù)庫(kù)內(nèi)容的更新操作,可以通過(guò)所學(xué)的JavaBean技術(shù)將數(shù)據(jù)庫(kù)的一些操作封裝到Bean中,需要用到這些功能,直接調(diào)用JavaBean動(dòng)作元素來(lái)實(shí)現(xiàn)Bean的調(diào)用,具體的知識(shí)點(diǎn),前面已介紹,這里不再一一贅述。任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施第一步:創(chuàng)建封裝商品信息的值JavaBeanpackagemy.bean;publicclassGoods{privateStringname;//商品名稱privatefloatprice;//商品價(jià)格privateintnum;//購(gòu)買(mǎi)商品的數(shù)量publicGoods(){

super();}publicGoods(Stringname){super();

=name;}publicGoods(Stringname,floatprice,intnum){ super();=name;

=name;

this.price=price;

this.num=num;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicfloatgetPrice(){returnprice;}publicvoidsetPrice(floatprice){this.price=price;}publicintgetNum(){returnnum;}publicvoidsetNum(intnum){this.num=num;}}任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施publicclassMyTools{//實(shí)現(xiàn)字符串轉(zhuǎn)換為整型publicstaticintstrToint(Stringstr){ if(str==null||str.equals(""))

str="0"; intnum=0; try{num=Integer.parseInt(str); }catch(Exceptione){

num=0;

e.printStackTrace(); } returnnum;}第二步創(chuàng)建工具M(jìn)yTools,主要實(shí)現(xiàn)中文亂碼處理和類(lèi)型轉(zhuǎn)換//實(shí)現(xiàn)中文亂碼處理publicstaticStringtoChinese(Stringstr){if(str==null)str="";

try{str=newString(str.getBytes("ISO-8859-1"),"utf-8");}catch(Exceptione){str="";e.printStackTrace(); } returnstr;}}任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施publicclassShopCar{privateArrayListbuylist=newArrayList();publicArrayListgetBuylist(){

returnbuylist;}publicvoidsetBuylist(Goodslist){//添加數(shù)據(jù) if(list!=null)

{if(buylist.size()==0)

{ Goodstemp=newGoods();

temp.setName(list.getName());

temp.setPrice(list.getPrice());temp.setNum(list.getNum());buylist.add(temp);}else 第三步

創(chuàng)建購(gòu)物車(chē),主要功能是添加、移除、清空購(gòu)物車(chē)的操作任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施{inti=0;

for(;i<buylist.size();i++)

{Goodstemp=(Goods)buylist.get(i);if(temp.getName().equals(list.getName())){temp.setNum(temp.getNum()+1);

break; }} if(i>buylist.size()) {Goodstemp=newGoods(); temp.setName(list.getName()); temp.setPrice(list.getPrice()); temp.setNum(list.getNum()); buylist.add(temp);}}}}

publicvoidremoveItem(Stringname)//移動(dòng)數(shù)據(jù){ for(inti=0;i<buylist.size();i++)

{Goodstemp=(Goods)buylist.get(i);if(temp.getName().equals(MyTools.toChinese(name))){

if(temp.getNum()>1)

{ temp.setNum(temp.getNum()-1);

break;}

elseif(temp.getNum()==1)

{

buylist.remove(i);} } }}任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施publicvoidclearCar()//清除數(shù)據(jù){buylist.clear();}}第四步:創(chuàng)建水果列表頁(yè)面<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@pageimport="my.bean.Goods"%><%@pageimport="java.util.*"%><body><%!staticArrayListgoodslist=newArrayList();static{ String[]names={"水龍果","芒果","西瓜","哈密瓜"}; float[]prices={4.5f,6.7f,2.4f,3.5f};任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施for(inti=0;i<4;i++){ Goodslist1=newGoods(); list1.setName(names[i]); list1.setPrice(prices[i]); list1.setNum(1); goodslist.add(i,list1);}}%><%session.setAttribute("goodslist",goodslist);response.sendRedirect("show.jsp");%></body>任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施第五步:展示數(shù)據(jù)頁(yè)面<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@pageimport="java.util.ArrayList"%><%@pageimport="my.bean.Goods"%><body><%ArrayListgoodslist=(ArrayList)session.getAttribute("goodslist");%><tableborder="1"width="450"rules="none"cellpadding="0"cellspacing="0"><trheight="50"><tdcolspan="3"align="center">水果列表</td></tr><tralign="center"height="30"bgcolor="lightgrey"><td>名稱</td><td>價(jià)格</td><td>購(gòu)買(mǎi)</td></tr><%if(goodslist==null||goodslist.size()==0){%><tr><td>沒(méi)有水果了!</td></tr><%}else{for(inti=0;i<goodslist.size();i++){Goodslist=(Goods)goodslist.get(i);%><trheight="50"align="center"><td><%=list.getName()%></td><td><%=list.getPrice()%></td><td><ahref="docar.jsp?action=buy&id=<%=i%>">購(gòu)買(mǎi)</a></td></tr><%}}%><trheight="50"><tdalign="center"colspan="3"><ahref="ShopCar.jsp">查看購(gòu)物車(chē)</a></td></tr></table></body>任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施第五步:展示數(shù)據(jù)頁(yè)面<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@pageimport="java.util.ArrayList"%><%@pageimport="my.bean.Goods"%><body><%ArrayListgoodslist=(ArrayList)session.getAttribute("goodslist");%><tableborder="1"width="450"rules="none"cellpadding="0"cellspacing="0"><trheight="50"><tdcolspan="3"align="center">水果列表</td></tr>

任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施第五步:展示數(shù)據(jù)頁(yè)面<tralign="center"height="30"bgcolor="lightgrey"><td>名稱</td><td>價(jià)格</td><td>購(gòu)買(mǎi)</td></tr><%if(goodslist==null||goodslist.size()==0){%><tr><td>沒(méi)有水果了!</td></tr><%}else{for(inti=0;i<goodslist.size();i++){Goodslist=(Goods)goodslist.get(i);%>

任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施第五步:展示數(shù)據(jù)頁(yè)面<trheight="50"align="center"><td><%=list.getName()%></td><td><%=list.getPrice()%></td><td><ahref="docar.jsp?action=buy&id=<%=i%>">購(gòu)買(mǎi)</a></td></tr><%}}%><trheight="50"><tdalign="center"colspan="3"><ahref="ShopCar.jsp">查看購(gòu)物車(chē)</a></td></tr></table></body>任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施第六步:購(gòu)物車(chē)頁(yè)面<%@pageimport="java.util.ArrayList"%><%@pageimport="my.bean.*"%><jsp:useBeanid="myCar"class="my.bean.ShopCar"scope="session"></jsp:useBean><body><%Stringaction=request.getParameter("action");if(action==null) action="";if(action.equals("buy")){ ArrayListgoodslist=(ArrayList)session.getAttribute("goodslist"); intid=MyTools.strToint(request.getParameter("id")); Goodslist=(Goods)goodslist.get(id); myCar.setBuylist(list); response.sendRedirect("show.jsp"); }任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)實(shí)施第六步:購(gòu)物車(chē)頁(yè)面elseif(action.equals("remove")){ Stringname=request.getParameter("name"); myCar.removeItem(name); response.sendRedirect("ShopCar.jsp"); }elseif(action.equals("clear")){ myCar.clearCar(); response.sendRedirect("ShopCar.jsp");}else{ response.sendRedirect("show.jsp"); }%></body>任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)拓展1.在JSP頁(yè)面顯示數(shù)據(jù)庫(kù)表(book)圖書(shū)信息信息任務(wù)要求:通過(guò)數(shù)據(jù)庫(kù)獲取數(shù)據(jù),并顯示在JSP頁(yè)面,如圖所示第一步,首先在mysql數(shù)據(jù)庫(kù)中創(chuàng)建book數(shù)據(jù)庫(kù),并創(chuàng)建如表所示的book表字段類(lèi)型說(shuō)明isbnVarchar(20)書(shū)的ISBNbooknameVarchar(20)書(shū)名authorVarchar(20)作者publicdateint出版日期pricedouble價(jià)格任務(wù)三應(yīng)用JavaBean實(shí)現(xiàn)購(gòu)物車(chē)–任務(wù)拓展第二步創(chuàng)建一個(gè)date類(lèi)和bookbean,要求包含book表中的5個(gè)屬性和相應(yīng)的set,get方法·packagemy.bean;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassBookBean{privateStringisbn;privateStringbookname;privateStringauthor;privateintpublicdate;privatedoubleprice;Connectionconn=null;publicStringgetIsbn(){returnisbn;}publicvoidsetIsbn(Stringisbn){this.isbn=isbn;}publicStringgetBookname(){returnbookname;}publicvoidsetBookname(Stringbookname){this.bookname=bookname;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}

publicintgetPub

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論