圖書商城設(shè)計報告_第1頁
圖書商城設(shè)計報告_第2頁
圖書商城設(shè)計報告_第3頁
圖書商城設(shè)計報告_第4頁
圖書商城設(shè)計報告_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、圖書商城1. 功能分析1、用戶注冊2、用戶登錄3、添加商品(CURD)4、商品查看- 列表查詢5、商品詳情頁面6、將商品添加購物車7、查看購物車8、修改購物車9、生成訂單10、訂單查看(取消)11、在線支付12.下載銷售榜單游客(未登錄): 注冊、登陸、商品查看 商城注冊用戶 : 商品查看、添加商品到購物車、購物車管理、生成訂單、訂單管理、在線支付 管理員 : 添加商品、商品管理、查看訂單 、榜單查看(導(dǎo)出)2. 系統(tǒng)設(shè)計1技術(shù)選型 (系統(tǒng)架構(gòu))JSTL + JSP + Servlet + JavaBean + BeanUtils + FileUpload + JavaMail + DBUti

2、ls(JDBC) + C3P0 + MySQL + MyEclipse10+ Tomcat7.0 + JDK6 + Windows MVC 模式JavaEE 三層結(jié)構(gòu) web層 service層 dao層DAO 模式 2數(shù)據(jù)庫設(shè)計系統(tǒng)存在以下實體:用戶、商品、訂單、購物車購物車不放入數(shù)據(jù)庫 (Session或者Cookie實現(xiàn)) 用戶表create table users ( id int primary key auto_increment, username varchar(40), password varchar(100), nickname varchar(40), email va

3、rchar(100), role varchar(100) , state int , activecode varchar(100), updatetime timestamp );商品表create table products( id varchar(100) primary key , name varchar(40), price double, category varchar(40), pnum int , imgurl varchar(100), description varchar(255);訂單表create table orders( id varchar(100) p

4、rimary key, money double, receiverinfo varchar(255), paystate int, ordertime timestamp, user_id int , foreign key(user_id) references users(id);用戶與訂單之間存在 一對多關(guān)系 : 在多方添加一方主鍵作為外鍵 訂單和商品之間存在 多對多關(guān)系 : 創(chuàng)建第三張關(guān)系表,引入兩張表主鍵作為外鍵 (聯(lián)合主鍵)訂單項create table orderitem( order_id varchar(100), product_id varchar(100), buyn

5、um int , primary key(order_id,product_id), foreign key(order_id) references orders(id), foreign key(product_id) references products(id);設(shè)置數(shù)據(jù)庫環(huán)境數(shù)據(jù)庫 :create database estoresystem3 工程環(huán)境搭建和網(wǎng)站部署1) 導(dǎo)入jar包 導(dǎo)入mysql驅(qū)動 mysql driver / mysql-connector-java-5.0.8-bin.jar 導(dǎo)入c3p0 c3p0/c3p0-.jar 將c3p0-config

6、.xml 復(fù)制src下 將DataSourceUtils復(fù)制 cn.itcast.estore.utils - 配置c3p0-config.xml數(shù)據(jù)庫連接參數(shù)導(dǎo)入dbutils apache commonsdbutilscommons-dbutils-1.4.jar導(dǎo)入beanutils commons-beanutils-1.8.3.jar commons-logging-1.1.1.jar 導(dǎo)入fileupload commons-fileupload-1.2.1.jar commons-io-1.4.jar導(dǎo)入javamail mail.jar導(dǎo)入jstl jstl.jar stand

7、ard.jar2) 建立package結(jié)構(gòu) 按照JavaEE 三層結(jié)構(gòu)cn.itcast.estore.web.servletcn.itcast.estore.web.filtercn.itcast.estore.web.listenercn.itcast.estore.servicecn.itcast.estore.daocn.itcast.estore.domaincn.itcast.estore.utils3) domain類編寫 4) 工程發(fā)布 將bookEstore項目配置虛擬主機,以頂級域名方式進行發(fā)布 1) 將工程根目錄 bookEstore目錄 配置虛擬主機目錄 - 配置con

8、f/server.xml 2) 將工程目錄下WebRoot 目錄,配置缺省web應(yīng)用 3) 將 虛擬主機配置缺省虛擬主機 - 能夠用ip直接訪問主機 4) 修改本機域名解析文件 hosts - c:windowssystem32driversetc 添加 www.bookE3. 功能實現(xiàn)1用戶注冊1、 功能一: 用戶注冊 (技術(shù)點:驗證碼技術(shù) 、激活郵件技術(shù))1) 一次性驗證碼 原理:在生成驗證碼Servlet程序中,將生成驗證碼保存Session中,用戶提交驗證碼 與 保存在Session驗證碼進行比較,如果相同,請求合法 2) 注冊表單 JS校驗 考慮JS校驗是否可以抽

9、取成框架3) 處理form亂碼問題 - 通用get post 亂碼過濾器 4) 密碼 MD5 加密 5) 激活郵件發(fā)送 6) 配置通用錯誤處理頁面web.xml 500 /500.jsp 404 /404.jsp 500.jsp 顯示錯誤的信息404.jsp 自動刷新跳轉(zhuǎn)回主頁面2用戶登錄原理:用戶輸入正確用戶名和密碼,登陸成功,用戶信息將會被保存Session對象中。 - 記住用戶名和密碼 、自動登陸1) 登陸表單中,添加記住用戶名 和 自動登陸功能 2) 登陸過程中判斷 賬戶是否激活 3) 在login.jsp 顯示記住用戶名 在username 的input項中添加 value=$coo

10、kie.username.value 在勾選自動登陸 checkbox 添加 4) 登陸后注銷功能 注銷Session 3用戶自動登錄過濾器自動登陸功能 對系統(tǒng)所有頁面有效 (例如訪問index.jsp list_product.jsp info_product.jsp 這些頁面在訪問時都將執(zhí)行自動登陸 )* 對于登陸相關(guān)頁面不會執(zhí)行自動登陸邏輯 (login.jsp 、LoginServlet 、InvalidateServlet )1) 判斷該請求頁面是否需要自動登陸2) 是否已經(jīng)登陸3) 是否含有自動登陸cookie4) 自動登陸 5) 在LoginServlet 添加對于沒有勾選記住用

11、戶名和自動登陸 處理代碼 !6) 在退出功能 InvalidateServlet 清除自動登陸信息4商品添加文件上傳三個注意事項1) input輸入框 必須有name屬性 2) 表單form 必須post提交方式3) 設(shè)置form的enctype 為 multipart/form-data 表單提交時,校驗分為兩種 : 客戶端校驗 、服務(wù)器端校驗 - 只有服務(wù)器端校驗才能確保數(shù)據(jù)準(zhǔn)確 商品圖片上傳到服務(wù)器端后,保存在哪個目錄 ? 必須直接在WebRoot下及其除WEB-INF、META-INF 子目錄外一般情況下,一張表對應(yīng)Domain類 - DAO類 - Service類5商品列表查看列表中

12、顯示原圖,因為原圖比較大,頁面加載非常緩慢 ,頁面布局不會很美觀 - 縮略圖 * Java中通過圖形界面技術(shù),生成小圖 在Product類中添加 getImgurl_s方法,用來獲取縮略圖路徑 6商品詳細信息查看通過在列表中點擊 商品圖片或者商品名稱 進入詳情查看頁面7添加商品到購物車購物車對象,不保存在數(shù)據(jù)庫中,使用Session來保存用戶購物車數(shù)據(jù) 保存購物車對象 Map key 商品對象 value 商品購買數(shù)量流程 :添加商品到購物車流程,點擊添加到購物車,將商品id傳遞Servlet ,從Session中取出購物車對象,判斷商品是否已經(jīng)在購物車中,如果不在添加商品到購物車數(shù)量 1 ,

13、在購物車取出原有數(shù)量+1 1) 如果Map的key是一個自定義對象,重寫 hashcode和equals 2) 如果商品不在購物車中,需要根據(jù)商品 id 查詢商品所有信息,添加購物車 3) 添加商品到購物車Session中信息在服務(wù)器正常關(guān)閉時,會被序列化到硬盤中 - Product實現(xiàn) Serializable接口 完成序列化8顯示與修改購物車數(shù)據(jù)購物車信息保存在Session中,不需要去查詢數(shù)據(jù)庫,將Session中信息顯示出來 1) 在購物車中顯示總價 2) 購物車修改 : 清空購物車 : request.getSession().removeAttribute(cart); 刪除購物車

14、中單項商品 : cart.remove(product) ; 注意:刪除一項后,判斷購物車是否為空,如果為空 移除購物車對象 * 刪除確認功能 寫法一:直接在href中 觸發(fā)js函數(shù),詢問用戶是否確認,如果確認,location.href 發(fā)起刪除請求 - .寫法二: 在鏈接中添加 onclick事件 ,詢問用戶是否確認,如果用戶取消,通過JS阻止href事件提交 阻止href默認事件 : e.preventDefault() - 必須支持事件 FF支持、IE不支持IE阻止href默認事件 function confirmDel(e)/ 詢問用戶是否確認var isConfirm = wind

15、ow.confirm(商品不要了嗎?多好的商品啊!);if(!isConfirm)/ 用戶選擇取消,阻止 a 標(biāo)簽 默認事件 href發(fā)生 if(e&e.preventDefault)/ e對象存在,preventDefault方法存在 - 火狐瀏覽器e.preventDefault();else/ 不支持e對象,或者沒有preventDefault方法 - IEwindow.event.returnValue = false;修改購物車中商品購買數(shù)量 - JavaScript 控制購物數(shù)量修改9訂單生成重點:1) 向orders表插入訂單信息后,同時需要向orderitem表插入 訂單中每項

16、數(shù)據(jù) 2) 多表插入 (數(shù)據(jù)完整性問題) - 事務(wù)管理 3) 訂單生成后 ,商品數(shù)量更新減少10訂單列表查詢與取消管理查詢訂單 - 所有人訂單信息普通用戶 - 只能查詢自己的訂單 在訂單生成后,查看訂單列表 、也可以通過index.jsp 進入訂單查看頁面 重點:查詢訂單時,同時查詢訂單項目信息 1) 查詢訂單基本信息時,查詢下單用戶昵稱和用戶名在Order類中 添加 用戶的 username 和 nickname字段 select orders.*,users.username,users.nickname from orders,users where orders.user_id = u

17、sers.id;2) 查詢訂單項信息時,查詢商品的名稱和單價 在OrderItem類中 添加商品的name和price 字段 select orderitem.*,,products.price from orderitem,products where dutct_id = products.id and orderitem.order_id = ?訂單取消 : 刪除訂單表信息時,同時刪除訂單項信息 (訂單項信息依賴 訂單信息 ,必須先刪除訂單項)注意事項 1) 可以取消未支付的訂單,如果訂單已經(jīng)支付,將無法取消 2) 管理員不能取消任何用

18、戶未支付訂單,普通用戶只能取消 自己的未支付的訂單 取消訂單進行事務(wù)管理 :刪除訂單項、刪除訂單、恢復(fù)商品數(shù)量11訂單在線支付1) 網(wǎng)站進行支付,根據(jù)易寶支付接口請求規(guī)范,生成易寶需要數(shù)據(jù),將數(shù)據(jù)提交到易寶指定網(wǎng)址 * 在提交支付請求給易寶,需要將請求中數(shù)據(jù),使用易寶提供密鑰和算法進行加密,獲得數(shù)字簽名 hmac碼 ,將hmac碼發(fā)送給易寶 2) 易寶會連接銀行,進行支付3) 支付后,瀏覽器會以重定向方式訪問 網(wǎng)站回調(diào)程序,易寶在收到銀行轉(zhuǎn)賬后,會以Socket方式通知網(wǎng)站 * 在瀏覽器重定向通知后,提供給用戶支付成功顯示頁面 (不要去修改訂單狀態(tài))* 在網(wǎng)站收到易寶點對點通知后,回復(fù)易寶su

19、ccess,修改訂單狀態(tài)數(shù)字簽名原理:將數(shù)據(jù) 使用密鑰和算法加密后 獲得數(shù)字簽名hmac,將數(shù)據(jù)和數(shù)字簽名hmac一起發(fā)送給易寶,易寶采用同樣密鑰和算法對數(shù)據(jù)進行加密獲得數(shù)字簽名hmac,比較請求中數(shù)字簽名hmac與加密后獲得數(shù)字簽名hmac是否一致,如果一致 簽名hmac有效 (數(shù)據(jù)沒有被篡改 )流程入口: 未支付訂單可以進行支付,管理員不允許支付 在線支付1) pay.jsp 銀行選擇頁面 2) OnlinePayServlet 準(zhǔn)備易寶支付參數(shù) * 提供密鑰和算法 商家編號 真實的 將PaymentUtil 復(fù)制 utils包 , 將 merchantIperties 復(fù)制 src* responseURL 支付成功后 回調(diào)地址 ,該地址會收到 瀏覽器重定向和服務(wù)器點對點兩次通知 ,確保該地址 可以被易寶訪問 (estore項目必須要配置缺省虛擬主機)將OnlinePayServlet準(zhǔn)備易寶參數(shù),傳遞JSP 確認3) confirm.jsp 通過form的隱藏域 提交參數(shù)給易寶網(wǎng)址 4) CallbackServlet 回調(diào)程序 收到瀏覽器重定向和服務(wù)器點對點兩個通知 瀏覽器重定向,顯示支付成功,不要修改訂單狀態(tài)服務(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

提交評論