网上商城流程
網(wǎng)上書城
一、搭建環(huán)境
1、導(dǎo)入原型用戶模塊分類模塊圖書模塊購物車模塊訂單模塊2、功能分析前臺用戶模塊注冊激活登錄退出分類模塊查看所有分類 圖書模塊查詢所有圖書按分類查詢圖書查詢圖書詳細(按id查)購物車模塊添加購物車條目清空所有條目刪除指定條目我的購物車(按用戶查詢購物車)訂單模塊生成訂單我的訂單(按用戶查詢訂單)按id查詢訂單確認收貨 付款功能(知識跳轉(zhuǎn)到銀行頁面)付款回調(diào)功能(由銀行來調(diào)用我們這個方法,表示用戶已經(jīng)付款成功)后臺管理員登錄分類管理:添加分類查看所有分類刪除分類按id查詢修改分類圖書管理查看所有圖書按id查詢刪除圖書修改圖書添加圖書(上傳圖片)訂單模塊查詢所有訂單按狀態(tài)查詢訂單發(fā)貨 3、框架的搭建1、導(dǎo)包數(shù)據(jù)庫mysql驅(qū)動c3p0(jar包和配置文件)dbutilstoolscommons-beanutilscommon-loggingjavamailmail.jaractivation.jar上傳commons-fileuploadcommons-ioajaxjson-lib2、創(chuàng)建package根 my.bookstoreuserdomaindaoserviceweb.servletcategorydomaindaoserviceweb.servletbookdomaindaoserviceweb.servletcartdomaindaoserviceweb.servlet orderdomaindaoserviceweb.servlet3、表t_usert_categoryt_bookt_orderst_orderitem用戶模塊1、用戶模塊的相關(guān)類創(chuàng)建domain:Userdao:UserDaoservice:UserDaoweb.servlet:UserServlet2、用戶注冊流程:/jsps/user/regist.jsp->UserServlet#regist()->msg.jsp頁面:regist.jsp表單頁面,請求UserServlet#regist()方法參數(shù):整個表單數(shù)據(jù)msg.jspservlet:UserServlet#regist()一鍵封裝表單數(shù)據(jù)到User form 對象補全:uid、激活碼進行輸入校驗保存錯誤信息到request保存當(dāng)前表單數(shù)據(jù)(form)到request(回顯)轉(zhuǎn)發(fā)回到regist.jsp調(diào)用service的regist()方法,傳遞form過去如果拋出異常:保存錯誤信息(異常信息)、保存表單數(shù)據(jù)(回顯)、轉(zhuǎn)發(fā)到regist.jsp 如果沒有拋出異常:發(fā)郵件(發(fā)件人、收件人、標題、內(nèi)容),內(nèi)容中包含超鏈接,超鏈接指向可完成激活的Servlet地址。鏈接中要有激活碼參數(shù)保存成功信息到request中轉(zhuǎn)發(fā)到msg.jspService:UserService#regist(User form)校驗用戶是否被注冊,如果注冊,拋出UsrException 校驗郵箱是否被注冊,如果注冊,拋出UserException把user插入到數(shù)據(jù)庫中Dao:User findByUsername(String username):按用戶名查詢用戶User findByEmail(String email);按email查詢用戶void add(User form);插入用戶到數(shù)據(jù)庫中3、用戶激活流程:用戶的郵件中->UserServlet#active()->4、用戶登錄流程:/jsps/user/login.jsp->UserServlet#login()->index.jsp5、用戶退出流程:top.jsp->UserServlet#quit()->login.jspquit()把session銷毀。
分類模塊1、分類模塊的相關(guān)類創(chuàng)建my.bookstore.categorydomain:Categorydao:CategoryDaoservice:CategoryServiceweb.servlet:CategoryServlet2、查詢所有分類 流程:main.jsp(<iframe>)->CategoryService#findAll()->left.jsp
圖書模塊
1、創(chuàng)建相關(guān)類bookstore.bookdomain:Bookdao:BookDaoservice:BookServiceweb.servlet:BookServlet
2、查詢所有圖書流程:left.jsp(全部分類)->BookServlet#findAll()->/jsps/book/list.jsp3、按分類查詢圖書流程:left.jsp->BookServlet#findByCategory()->list.jsp4、查詢詳細信息(加載)流程:list.jsp(點擊某一本書)->BookServlet#load()->desc.jsp購物車模塊
購物車的存儲保存在session中保存在cookie中保存在數(shù)據(jù)庫中1、創(chuàng)建相關(guān)類購物車的結(jié)構(gòu)CartItem:包含圖書和數(shù)量Cart:包含一個Map<String,CartItem>dao:沒有service:沒有web.servlet:提供。CartServlet修改登錄方法:在用戶登錄成功后,馬上在session中添加cart頁面/jsps/cart/list.jsp只有一個任務(wù),就是遍歷車。車在session中,通過車可以得到所有的CartItem${sessionScope.cart.cartItems}2、添加購物車條目3、清空條目4、刪除購物車條目5、我的購物車top.jsp中存在一個鏈接:我的購物車我的購物車直接訪問/jsps/cart/list.jsp。會顯示session中車的所有條目訂單模塊
1、創(chuàng)建相關(guān)類domain:OrderOrderItemdao:OrderDaoservice:OrderServiceweb.servlet:OrderServlet
2、生成訂單3、我的訂單(按用戶查)4、加載訂單(按id查) 5、確認收貨
易寶支付
在線支付的兩種形式1、電商與銀行直連安全不收手續(xù)費不與小電商合作2、第三方支付平臺支付寶易寶財富通好處:不安全收手續(xù)費(1%)小電商可以合作需要在第三方注冊賬戶需要認證。易寶支付1、去銀行易寶給了網(wǎng)址(支付網(wǎng)關(guān))。重定向到這個地址即可還需要給這個地址后添加13+1個參數(shù)https:/www.yeepay.com/app-merchant-proxy/node?p0_Cmd=Buy&p1_MerId=xxxx&p2_Order=268AB441D4C349A1B53F3D14EE8DC171&p3_Amt=0.01&p4_Cur=CNY&p5_Pid=&p6_Pcat=&p7_Pdesc=&p8_Url=http://localhost:8080/bookstore/OrderServlet?method=back&p9_SAF=&pa_MP=&pd_FrpId=ICBC-NET-B2C&pr_NeedResponse=1&hmac=易寶回調(diào):點對點:易寶直接訪問電商,沒有客戶端的事這種方式是必須要使用的,這種方式收不到。因為沒有固定ip易寶有一個重發(fā)機制,如果它訪問你,你不返回信息,會一直重發(fā)電商需要返回一個以SUCCESS開頭的字符串即可引導(dǎo)客戶端瀏覽器重定向到電商,讓客戶端訪問電商可以不使用hmac:13參數(shù)值+keyValue(密鑰)+算法(md5)13參數(shù)值:自己設(shè)置的。keyValue:易寶在注冊后發(fā)送的,只有我們和易寶知道底層為md5的算法PaymentUtil.buildHmac(14個),返回hmac
6、支付(去銀行)重定向:13+1個參數(shù)
7、支付(銀行回饋)后臺后臺的內(nèi)容,必須要設(shè)置權(quán)限。用戶可以訪問一個網(wǎng)站的內(nèi)容dao:不行service:不行servlet:能jsp:能用戶可以訪問的只有web層
1、分類管理添加分類查看所有分類刪除分類按id查詢修改分類
1.1、相關(guān)類創(chuàng)建domain:Categorydao:CategoryDaoservice:CategoryServiceadmin.web.servlet:AdminCategoryServlet(為管理員提供單獨的Servlet,然后給這個Servlet添加過濾器) 1.2、查看所有分類left.jsp上的菜單修改一下指向:AdminCategoryServlet#findAll();findAll()調(diào)用service得到所有的分類List<Category>保存到request域,轉(zhuǎn)發(fā)到/adminjsps/admin/category/list.jsplist.jsp:修改頁面,顯示所有分類1.3、添加分類add.jsp(表單頁面)->AdminCategoryServlet#add():封裝表單數(shù)據(jù);補全:cid調(diào)用service方法完成添加工作調(diào)用findAll()方法service#add(Category c)dao#add(Category c) 1.4、刪除分類list.jsp(刪除鏈接)->AdminCategoryServlet#delete()獲取參數(shù):cid調(diào)用service方法完成刪除如果出現(xiàn)異常,保存異常信息轉(zhuǎn)發(fā)到msg.jsp顯示調(diào)用findAll()service#delete(String cid)通過cid查看該分類下的圖書本本樹,如果大于0,拋出異常。如果等于0,刪除該分類1.5、修改分類修改分為兩步:1、加載分類 2、修改分類第一步:加載分類 list.jsp(修改鏈接)->AdminCategoryServelt#editPre()獲取cid通過cid來調(diào)用service方法,得到Category對象保存到request域,轉(zhuǎn)發(fā)到edit2.jspedit2.jsp:把當(dāng)前的Category對象顯示到表單中第二步:修改分類edit2.jsp(提交表單)->AdminCategoryServlet#edit()封裝表單數(shù)據(jù)調(diào)用service方法完成修改工作調(diào)用findAll()2、圖書管理查看所有圖書按id查詢刪除圖書修改圖書添加圖書(上傳圖片)
2.1、相關(guān)類的創(chuàng)建web.servlet.admin:AdminBookServletAdminAddBookServlet(添加圖書,包含上傳):上傳不能使用BaseServlet,因為BaseServlet中需要使用getParameter()方法,而上傳getParameter()方法就不能再使用enctype="multipart/form-data" 2.2、查詢所有圖書left.jsp(菜單項(查看圖書鏈接))->AdminBookServelt#findAll()查詢所有圖書,保存到request轉(zhuǎn)發(fā)到/adminjsps/admin/book/list.jsplist.jsp遍歷所有圖書2.3加載圖書list.jsp(點擊圖名或圖片)->AdminBookServlet#load()獲取bid,通過bid調(diào)用BookService方法得到Book對象保存到request中,轉(zhuǎn)發(fā)到/adminjsps/admin/book/desc.jspdesc.jsp:把當(dāng)前book對象顯示到表單中2.4、添加圖書添加圖書分兩步1、加載所有分類,到add.jsp中顯示left.jsp(菜單項:添加圖書)AdminBookServlet#addPre()查詢所有分類,保存到request域,轉(zhuǎn)發(fā)到add.jsp在add.jsp中循環(huán)遍歷所有分類,顯示在<select>中2、添加圖書上傳三步:創(chuàng)建工廠創(chuàng)建解析器解析request 得到表單字段把表單字段封裝到Book對象中保存上傳文件,把保存的路徑設(shè)置給Book的image屬性調(diào)用service方法保存Book對象到數(shù)據(jù)庫中調(diào)用findAll()2.5、刪除圖書book表與orderitem有關(guān)聯(lián)關(guān)系刪除圖書不是真的數(shù)據(jù)庫表中刪除記錄,而是給book表添加一個del字段,是boolean類型,表示是否已刪除沒有被刪除的圖書,該列的值為false,否則為true處理問題:修改BookDao:所有與查詢相關(guān)的方法,都需要添加where條件,即del=false修改Book類,添加del屬性刪除圖書:其實就是把表的del列修改為true【假刪除 不然關(guān)聯(lián)關(guān)系會出錯】(業(yè)務(wù)刪除、數(shù)據(jù)修改)desc.jsp(del按鈕)AdminBookServlet#del()獲取bid調(diào)用service方法完成刪除返回列表,即調(diào)用findAll()2.6、編輯圖書desc.jsp(編輯按鈕)->AdminBookServlet#edit()封裝表單數(shù)據(jù)(必須讓頁面保證把image傳遞過來)要求頁面必須添加一個隱藏字段,把原來的圖片路徑傳遞過來調(diào)用service方法完成刪除return findAll()
總結(jié)
- 上一篇: LabVIEW Arduino ZigB
- 下一篇: 抽象代数 Abstract Algebr