版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
JavaWeb應(yīng)用開發(fā)第5章購物車模塊■本章要點
商品詳細(xì)信息顯示實現(xiàn)添加商品到購物車功能詳細(xì)設(shè)計和實現(xiàn)顯示購物車中的商品及金額修改購物車中的商品JSP的錯誤處理訂單生成功能詳細(xì)設(shè)計和具體實現(xiàn)第5章購物車模塊■功能分析
會員在完成系統(tǒng)登錄后,可以進(jìn)行購物直至生成訂單的一系列操作。第5章購物車模塊■會員購物活動概圖
5.1商品詳細(xì)信息展示■功能說明
會員登錄后,購物的操作入口是該件商品的詳細(xì)信息頁面,在該頁面上有“放入購物車”操作功能。
5.1商品詳細(xì)信息展示■
流程分析及設(shè)計
●數(shù)據(jù)庫商品表操作類設(shè)計 在數(shù)據(jù)庫商品信息表操作類ProductDao中添加按商品編號查詢單個商品信息的方法selectOneProducts,參數(shù)是商品編號。 方法返回值是代表某件商品的GoodsEntity對象??梢允褂迷搶ο蟮膅etXxx方法獲取各個字段的內(nèi)容。
5.1商品詳細(xì)信息展示■
流程分析及設(shè)計
●商品詳細(xì)信息展示功能流程圖5.1商品詳細(xì)信息展示■編程詳解
創(chuàng)建showProductById.jsp,在頁面中引入數(shù)據(jù)庫商品信息表操作類ProductDao和實體類ProductEntity實現(xiàn)利用ProductDao的selectOneProducts方法從數(shù)據(jù)庫中檢索出會員想購買的商品,檢索條件為商品編碼,該商品編碼通過頁面請求參數(shù)獲得。
5.1商品詳細(xì)信息展示■編程詳解
添加生成數(shù)據(jù)庫商品信息表操作類ProductDao的對象,調(diào)用selectOneProducts方法檢索商品信息放入ProductEntity對象goods中,查詢條件是商品的id號。<ahref="#“onClick="window.open('showProductById.jsp?id=<%=e.getId()%>','','width=500,height=200');">查看詳細(xì)內(nèi)容</a>5.1商品詳細(xì)信息展示■編程詳解
實現(xiàn)時將商品信息以提交表單的形式展現(xiàn),而表單的提交按鈕功能由頁面上“放入購物車”鏈接實現(xiàn),表單的action設(shè)為cartAdd.jsp<formname=“form”method=“post”action=“../cart/cartAdd.jsp">…<inputname="picture"type="image"src="<%=goods.getPicture()%>"商品名稱:<%=goods.getName()%><inputtype="hidden"name="goodsId"value="<%=goods.getId()%>"/>…5.2添加商品到購物車■功能說明
點擊“放入購物車”操作功能,開始該商品的購買流程,購物成功的頁面。5.2添加商品到購物車■流程分析及設(shè)計●購物車設(shè)計購物車中的商品需要記錄的只是商品的編號、商品出售的價格和數(shù)量,設(shè)計臨時實體類CartGoods,該類對象代表會員購物車中的商品購買信息。5.2添加商品到購物車■添加商品到購物車功能流程5.2添加商品到購物車■編程詳解
●創(chuàng)建cartAdd.jsp,類Vector是java常用的集合類型,用于生成購物車,購物車?yán)锷唐稧oodsCart的實例對象是Vector類實例中的元素,可以利用Vector類的方法方便的實現(xiàn)對購物車進(jìn)行維護(hù)。
<%@pageimport="java.util.*"%><%@pageimport="com.mycompany.cart.CartGoods"%>5.2添加商品到購物車■編程詳解
●頁面添加到購物車的商品信息、編號和價格是由頁面goodsShowOne.jsp以form表單提交的,使用request對象的getParameter方法獲取。
intgoodsID=Integer.parseInt(request.getParameter("goodsId"));floatgoodsPrice=Float.parseFloat(request.getParameter("price"));5.2添加商品到購物車■編程詳解●生成臨時實體類GoodsCart的實例對象并賦值,此時系統(tǒng)設(shè)定商品的數(shù)量為1,此對象生成以后就準(zhǔn)備好添加到購物車了。
CartGoodscartGoods=newCartGoods();cartGoods.ID=goodsID;cartGoods.price=goodsPrice;cartGoods.number=1;●將購物車以session的屬性形式存放5.2添加商品到購物車■編程詳解
●將新生成的或修改過的購物車存放在session對象的屬性中,然后使用JSP內(nèi)置對象out在返回到客戶端的頁面上輸出一段JavaScript代碼,顯示購物成功對話框,并將回到客戶端的頁面關(guān)閉。
session.setAttribute(“_CART_",cart);out.println("<scriptlanguage='javascript'>alert('購買商品成功!');window.close();</script>");5.3顯示購物車■功能說明在購物車顯示頁面中列表顯示購物車中所選商品的信息:如果沒有購買商品,系統(tǒng)顯示“您還沒有購物”提示。購物車頁面上需要為會員提供繼續(xù)購物、去收銀臺結(jié)賬、清空購物車和修改某件購物車中商品的數(shù)量等功能。5.3顯示購物車■顯示購物車的頁面預(yù)覽如下圖
5.3顯示購物車■流程分析及設(shè)計
●購物車顯示功能流程設(shè)計進(jìn)入購物車顯示頁面之前判斷是否是已登錄會員。在購物車顯示頁面中引入java實用工具類、代表會員所選商品的臨時實體類和商品信息表操作類。從session中獲取該會員專有的購物車,判斷購物車中有無商品,如果沒有商品,頁面給出提示信息,返回。依次取出會員購物車中的商品,并生成代表所選商品的臨時實體類對象。5.3顯示購物車■
流程分析及設(shè)計
●購物車顯示功能流程圖5.3顯示購物車■
流程分析及設(shè)計
●購物車顯示設(shè)計遍歷購物車,各商品的金額和總金額在購物車遍歷中完成顯示。設(shè)計關(guān)鍵是要提供可供會員修改商品數(shù)量的功能,需要將此信息在頁面表單中顯示,在會員需要修改商品數(shù)量時,以請求參數(shù)的形式提交給cartModify.jsp處理。5.3顯示購物車■
流程分析及設(shè)計
●購物車中商品數(shù)量修改設(shè)計如果在本頁面中實現(xiàn)對購物車中特定商品數(shù)量修改,則頁面流程將比較復(fù)雜,也不利于將不同操作以模塊化分離提交給cartModify.jsp處理,由cartModify.jsp處理后再自動返回到本頁面重新顯示購物車?!褓徫镘囨溄有薷脑O(shè)計5.3顯示購物車■編程詳解創(chuàng)建cartShow.jsp,在頁面中引入java實用工具類Vector和代表會員所選購商品信息的臨時實體類GoodsCart,以及商品信息表操作類GoodsDao類。Vector類用于生成對象存放會員的購物車,GoodsCart用于存放遍歷購物車中的商品購買信息,ProductDao類用于獲取商品的其他信息。
5.3顯示購物車■編程詳解使用session對象的getAttribute方法獲取會員購物車,如果為空,說明會員到目前還沒有選購商品,系統(tǒng)也沒有為該會員生成過購物車,此時頁面顯示“你還沒有購物”提示信息,頁面處理流程終止。<%if(session.getAttribute("_CART_")==null){%>您還沒有購物?。?!<%}else{%><!--顯示購物車中商品信息-->
5.3顯示購物車■編程詳解當(dāng)系統(tǒng)為該會員生成了購物車,表明會員必定在購物車中存有商品,此時,使用Vector類的實例cart存放此購物車;然后,將購物車中的商品逐一取出,放入購物車臨時對象CartGoods類的實例中進(jìn)行金額計算等處理。5.3顯示購物車■編程詳解<formmethod="post"action="cartModify.jsp"name="form">…<%floatsum=0;//商品總金額
Vectorcart=(Vector)session.getAttribute(“_CAER_");for(inti=0;i<cart.size();i++){CartGoodscartGoods=(CartGoods)cart.elementAt(i);sum=sum+cartGoods.number*cartGoods.price;%>5.3顯示購物車■編程詳解會員在確認(rèn)目前購物車的商品后,進(jìn)而可以采取下一步繼續(xù)購物、去收銀臺結(jié)賬、清空購物車、修改數(shù)量等操作,頁面設(shè)計相應(yīng)的鏈接:<ahref="../product/main.jsp">繼續(xù)購物</a>|<ahref="../cart/cartCheckOut.jsp">去收銀臺結(jié)賬</a>|<ahref="../cart/cartClear.jsp">清空購物車</a>|<ahref="#">修改數(shù)量</a>5.3顯示購物車■<usebean>與生成實例的關(guān)系●本質(zhì)上是相同的,主要有兩個方面的區(qū)別:
1)JavaBean方式實例的作用域由scope指定的,不限于本JSP頁面,而new方式生成的實例對象的作用域限制在本頁面。
2)使用new方式是一定會生成實例對象的,而使用<jsp:useBean>則不一定。5.4修改及清空購物車■功能說明及頁面流程在session對象中獲取該會員原有的購物車,遍歷購物車中的商品,并以從cartShow.jsp接收傳來的表單元素<input>中的商品數(shù)量為準(zhǔn),重新生成一個購物車,把原有商品逐一添加到新購物車中,如果商品購買的數(shù)量被修改成0,則不再添加。清除購物車,實現(xiàn)時將session對象的購物車刪除,在購物車修改或刪除后,頁面返回cartShow.jsp。5.4修改及清空購物車■編程詳解
使用session對象的getAttribute方法獲取購物車,并將其存入Vector類對象cart中,生成新購物:Vectorcart=(Vector)session.getAttribute("_CART_");隨后遍歷購物車cart內(nèi)的商品,每件商品的購買數(shù)量由頁面參數(shù)numX獲得,即request.getParameter("num"+i);將所有購買數(shù)量不為0的商品添加到新購物車newcart中:5.4修改及清空購物車■編程詳解
for(inti=0;i<cart.size();i++){//取商品CartGoodscartGoods=(CartGoods)cart.elementAt(i);//每件商品的購買數(shù)量Stringnum=request.getParameter("num"+i);try{ intnewnum=Integer.parseInt(num); cartGoods.number=newnum; if(newnum!=0){//如果數(shù)量為0,相當(dāng)于刪除了這件商品 newcart.addElement(cartGoods); }}…5.4修改及清空購物車■編程詳解
將新購物車newcart存至session的“_CART_”屬性中,替換原有的購物車,完成修改操作:session.setAttribute("_CART_",newcart);response.sendRedirect("cartShow.jsp");在購物車修改結(jié)束后,調(diào)用response對象的sendRedirect方法,將此次對cartModify.jsp頁面的請求重新定向到cartShow.jsp頁面。5.4修改及清空購物車■編程詳解
清空購物車在清空購物車cartClear.jsp頁面上,使用session對象的removeAttribute方法,實際上不僅清除購物車中的商品,也刪除了購物車,會員如果繼續(xù)購物,將會重新生成購物車。
session.removeAttribute(“_CART_");5.4.3JSP的錯誤處理■JSP頁面的錯誤處理JSP頁面中主要有兩種錯誤:編譯時錯誤和運行時錯誤。編譯時錯誤是JSP引擎在編譯JSP源代碼時出現(xiàn)的,編寫JSP時的語法有錯誤,導(dǎo)致JSP容器無法將JSP網(wǎng)頁編譯成正確的文件。例如:500InternalServerError,500是指HTTP的錯誤狀態(tài)碼,因此是ServerError。5.4.3JSP的錯誤處理■JSP頁面的錯誤處理編譯時錯誤頁面產(chǎn)生這種編譯錯誤時,通常是JSP存在語法錯誤5.4.3JSP的錯誤處理■JSP頁面的錯誤處理運行時錯誤則是在已編譯好的JSP頁面處理客戶端的請求時出現(xiàn)的。異常處理機(jī)制(ExceptionHandling)會對錯誤做適當(dāng)?shù)奶幚恚话悴捎孟铝袃煞N處理方法
1)在頁面中使用try-catch結(jié)構(gòu)處理異常
2)采用JSP提供的更加簡潔有效的異常處理機(jī)制5.5生成訂單■功能說明結(jié)賬信息填寫后點擊“提交”,生成新訂單并顯示訂單編號。 在后續(xù)的操作中會員可進(jìn)入“查看訂單”查看訂單詳細(xì)信息。5.5生成訂單■生成訂單的頁面效果如圖
5.5生成訂單■
流程分析及設(shè)計
●設(shè)計數(shù)據(jù)庫訂單信息實體訂單編號會員名稱、真實姓名聯(lián)系地址、聯(lián)系電話付款方式、送貨方式備注信息、出貨標(biāo)志、訂單生成時間 是否出貨,1:“出貨”,0表示“未出貨”
5.5生成訂單■
流程分析及設(shè)計
●設(shè)計數(shù)據(jù)庫訂單明細(xì)實體訂單明細(xì)實體包括訂單明細(xì)編號、訂單編號、商品編號、商品購買價格和數(shù)量屬性。5.5生成訂單■
流程分析及設(shè)計設(shè)計數(shù)據(jù)庫訂單信息表結(jié)構(gòu)字段名數(shù)據(jù)類型為空主鍵默認(rèn)值描述order_idvarchar(50)NoYes訂單編號namevarchar(50)NoNULL會員名稱real_namevarchar(50)YesNULL真實姓名addressvarchar(50)YesNULL聯(lián)系地址mobilevarchar(50)YesNULL聯(lián)系電話total_pricefloatYesNULL支付金額deliver_methodvarchar(50)YesNULL郵寄方式memovarchar(50)YesNULL備注信息delivery_signbitYesNULL出貨標(biāo)志create_timesmalldatetimeYesNULL訂單生成時間payment_modevarchar(50)yesNULL送貨方式5.5生成訂單■
流程分析及設(shè)計
●設(shè)計數(shù)據(jù)庫訂單明細(xì)表結(jié)構(gòu)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述idint(4)NoYesID(自動編號)order_idvarchar(50)訂單編號product_idint(4)商品編號product_namevarchar(50)product_pricefloatNULL商品價格amountint(4)NULL商品數(shù)量5.5生成訂單■
流程分析及設(shè)計
●設(shè)計數(shù)據(jù)庫_數(shù)據(jù)表之間的關(guān)系
5.5生成訂單■
流程分析及設(shè)計
●數(shù)據(jù)庫訂單表和訂單明細(xì)表操作類設(shè)計操作訂單表、訂單明細(xì)表設(shè)計OrderDao、OrderItemDao兩個數(shù)據(jù)庫操作類添加相應(yīng)數(shù)據(jù)庫操作的方法5.5生成訂單■訂單生產(chǎn)的功能流程如圖5.5生成訂單■該功能相對復(fù)雜,主要涉及下述步驟:(1)在購物車顯示頁面頁,添加跳轉(zhuǎn)到生成訂單頁面;(2)在pages/cart文件夾下,新建頁面cartCheckOut.jsp和cartToOrder.jsp頁面,分別實現(xiàn)提交本次購物的訂單基本資料,和生成本次所購購商品信息的訂單;(3)在cartToOrder.jsp頁面,先獲取請求參數(shù);5.5生成訂單(4)生成訂單信息實體類OrderEntity實例對象,將訂單信息寫入數(shù)據(jù)庫。(5)獲取購物車,遍歷商品,以此資料填充實體類OrderItemEntity實例對象,并寫入數(shù)據(jù)庫。(6)修改商品信息表中的商品銷售數(shù)量;(7)清空購物車,頁面提示訂單資料;5.5生成訂單■編程詳解(1)在購物車顯示頁面頁,添加跳轉(zhuǎn)到生成訂單頁面;在cartShow.jsp頁面,添加代碼:<ahref=“../cart/cartCheckOut.jsp”>去收銀臺結(jié)賬</a
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年街舞教練專屬聘用協(xié)議3篇
- 八年級美術(shù)教學(xué)工作計劃
- 2024年網(wǎng)絡(luò)營銷服務(wù)外包合同
- 2024年標(biāo)準(zhǔn)版勞動者服務(wù)協(xié)議范本版B版
- 身體原因辭職報告【10篇】
- 舉辦畢業(yè)晚會的策劃設(shè)計方案6篇
- 2024年綠植銷售與安裝服務(wù)協(xié)議
- 動感課堂2016年春九年級化學(xué)下冊 第八單元 金屬和金屬材料 課題2 金屬的化學(xué)性質(zhì)教學(xué)實錄 (新版)新人教版
- 高中語文教師個人教學(xué)總結(jié)報告
- 2024年股權(quán)預(yù)先轉(zhuǎn)讓協(xié)議范本版
- 2024-2025學(xué)年人教版數(shù)學(xué)五年級上冊期末檢測試卷(含答案)
- 工程設(shè)計-《工程勘察設(shè)計收費標(biāo)準(zhǔn)》(2002年修訂本)-完整版
- 物流系統(tǒng)仿真技術(shù)智慧樹知到期末考試答案章節(jié)答案2024年山東交通學(xué)院
- 人教部編版三年級上冊語文【選擇題】專項復(fù)習(xí)訓(xùn)練練習(xí)100題
- 臨床試驗樣本量簡易計算器
- 給我店周邊各企事業(yè)單位領(lǐng)導(dǎo)贈送體驗券方案的請示
- 世界氣候分布圖(空白輪廓底圖)
- 山東省建設(shè)工程質(zhì)量監(jiān)督檔案樣表
- 天津市工傷職工停工留薪期確定通知書
- 小學(xué)二年級數(shù)學(xué)期末口試模擬試題
- 中國地理分區(qū)空白圖(共5頁)
評論
0/150
提交評論