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