摘要:存在則購物項的數量提供購買功能,參數是和。用戶想要購買商品時,判斷用戶是否登陸了,還要判斷購物車是否存在購物車使用來保存,不存在則創建。得到未發貨的全部訂單和已發貨的全部訂單,其實就是檢索出不同狀態的全部訂單。
感想
該項目是目前為止,我寫過代碼量最多的項目了.....雖然清楚是沒有含金量的【跟著視頻來寫的】,但感覺自己也在進步中......
寫的過程中,出了不少的問題.....非常多的Servlet,JSP看得眼花.....
現在,想把該項目好好梳理一下要點,于是有了這篇博文....
E-R圖該項目涉及到了5個表:user、orders、orderItem、category、book
難點E-R圖設計中最難的地方就是做到訂單模塊那里.....
難點一首先,要明白為什么在訂單模塊中設計Orders和OrderItem表兩張表,而不是一張表Orders就搞掂了...當然了,這也可參考購物車案例的設計【Cart、CartItem】
因為訂單模塊分了兩個部分,一部分是顯示普通的訂單信息【定單人、價錢、訂單時間、訂單狀態】
而在后臺中,我們還要在顯示訂單普通信息時,給予查看詳細信息的功能【也就是訂單的具體內容:具體的商品價錢、數量】
難點二:訂單模塊我是最后才開始寫的,訂單模塊和用戶模塊、圖書模塊都有相連,這就復雜了不少....
一個用戶可以擁有多個訂單
一個訂單對應多個訂單項
一本圖書對應多個訂單項
難點三:在一對多和多對一的情況下,我們在考慮需不需要使用一方來維護另一方的時候。在原則上,我們都是使用多的一方來維護一的一方。
那為什么有的時候,上面這句話就不成立了呢??是這樣子的:當我們一的方在頁面展示的時候,多的一方數據需要同時展示。此時,我們就需要在一的一方使用集合來維護多的一方了。比如:我們查看訂單的時候,就肯定需要同時把所有的訂單項都查詢出來的。當查看購物車的時候,就肯定需要同時把購物項查詢出來的
而我們的分類與書籍就沒有同時這個概念。在頁面上,我們是點擊分類,才需要把書籍查詢出來。因此,我們是使用多的一方來維護一的一方。
如果使用了一的一方來維護多的一方的話,那么一般都沒必要在多的一方來使用變量來維護一的一方了[參照訂單與訂單項]
Ps: 如果這部分有錯的地方請指出,謝謝!
項目中遇到的要點在Tomcat中創建文件夾不能是manager,不然會出現403 Access Denied錯誤
frameset標簽是可以嵌套的,分列用“cols”,分行用“rows”,在src后指定target,后面request跳轉顯示的頁面都是在target指定的頁面上
實現分頁主要在Page類上編寫代碼,在DAO層中要獲取總記錄數、分頁數據。start和end參數是通過currentPage和linesize來計算出來的。
獲取分類后的分頁數據,需要在DAO層中獲取分類后的總記錄數,以分類作為WHERE條件得到分頁數據
提交表單中有上傳文件的話,我們可以使用FileUpload組件。普通字段我們使用BeanUtils的setProperty()來封裝數據到Bean對象上,文件我們就寫到服務端的指定目錄下
在分幀頁面上,如果首頁就要顯示數據了,我們可以在frame標簽的src上指定的是Servlet,Servlet再跳轉回JSP,這樣JSP頁面就有數據了!
如果想要div不全是浮動,我們可以在后邊跟一個清除浮動的div。
想要頁面上的按鈕能夠完成對應的功能,需要用到JavaScript代碼,通過DOM編程得到對應的數據,使用window.location.href,讓它跳轉到對應的Servlet上實現功能
Cart和CartIem的設計上,CartItem的總價是數量*價錢,Cart的總價是全部CartItem的價錢之和。
Cart應該提供把商品加到購物車的功能,判斷該商品的購物項是否存在,不存在著創建并保存在里邊。存在則購物項的數量+1
BussinessService提供購買功能,參數是Cart和Book。
用戶想要購買商品時,判斷用戶是否登陸了,還要判斷購物車是否存在【購物車使用Session來保存】,不存在則創建。
Mysql中不能將表命名為“order”,這樣會出錯
訂單的基本信息可以在Cart和User中獲取,訂單項的基本信息可以在CartItem中獲取。因此,在BussinessService中需要Cart【通過Cart就可以找到CartItem了】和User參數。
在生成訂單的Dao中,需要把訂單的基本信息,訂單項的基本信息封裝到數據庫中
通過id查找訂單的時候,先找出訂單的基本信息。訂單表和用戶表聯結,就可以查找出訂單的用戶。通過id也就可以查找出訂單中所有的訂單項了。最后把查找出來的數據全部封裝到訂單對象上。
想要讓未發貨的訂單變成已發貨,其實就是更新訂單的狀態。得到未發貨的全部訂單和已發貨的全部訂單,其實就是檢索出不同狀態的全部訂單。
在Dao層中,我們需要的參數往往是單一的,要么是具體的對象,要么就是id...然而在Service層中,我們要的參數是與該實體類相連的。
例子1:在生成訂單的時候,Dao層僅僅需要Order對象參數。在Service層中,Order需要把User、Cart的數據封裝到Order對象中,于是就需要了這兩個參數。
例子2:Cart提供了把商品添加到購物車的功能,參數只需要具體商品的id。而在Service中,它需要用戶的購物車對象和具體商品的id。
如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關注微信公眾號:Java3y
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68603.html
摘要:前言鞏固開發模式,做一個比較完整的小項目成果圖該項目包含了兩個部分,前臺和后臺。前臺用于顯示后臺用于管理該項目可分為個模塊來組成分類模塊,用戶模塊,圖書模塊,購買模塊,訂單模塊。 前言 鞏固Servlet+JSP開發模式,做一個比較完整的小項目. 成果圖 該項目包含了兩個部分,前臺和后臺。 前臺用于顯示 showImg(https://segmentfault.com/img/remo...
數據庫 create database productstore character set utf8 collate utf8_bin; USE productstore; -- 用戶表 CREATE TABLE `user` ( `id` INT(11) AUTO_INCREMENT, `userName` VARCHAR(20) , `password` VARCHAR(20)...
摘要:前言由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...
摘要:而面向搜索引擎,就是我們要及時的使用百度谷歌遇到問題無法解決,先別急著放棄,可以去網絡尋找答案,你的坑大部分別人都已經走過了,大部分都可以找到合適的解決方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●眾多的語言,到底哪一門才是適合我的?●我們為什么要學習Java語言呢...
摘要:今天給大家介紹下周期性線程池的使用和重點源碼剖析。用來處理延時任務或定時任務定時線程池類的類結構圖接收類型的任務,是線程池調度任務的最小單位。周期性線程池任務的提交方式周期性有三種提交的方式。 之前學習ThreadPool的使用以及源碼剖析,并且從面試的角度去介紹知識點的解答。今天給大家介紹下周期性線程池的使用和重點源碼剖析。 ScheduledThreadPoolExecutor S...
閱讀 2183·2021-11-19 09:40
閱讀 1917·2021-11-08 13:24
閱讀 2452·2021-10-18 13:24
閱讀 2857·2021-10-11 10:57
閱讀 3577·2021-09-22 15:42
閱讀 1114·2019-08-29 17:11
閱讀 2527·2019-08-29 16:11
閱讀 2421·2019-08-29 11:11