網(wǎng)上商城管理系統(tǒng)
《網(wǎng)上商城管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《網(wǎng)上商城管理系統(tǒng)(46頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 XXXXXX大學(xué)本科生畢業(yè)論文(設(shè)計(jì)) 題 目 網(wǎng)上商城管理系統(tǒng) 學(xué) 院 計(jì)算機(jī)學(xué)院 專業(yè)班級(jí) 學(xué)生姓名 XXXXXXXXXXXXXXXXX 指導(dǎo)教師 XXXXXXXXX 撰寫(xiě)日期:二XX年五月四日 42目 錄 1 引言11.1 系統(tǒng)開(kāi)發(fā)的背景和現(xiàn)狀11.1.1 電子商務(wù)網(wǎng)站開(kāi)發(fā)背景11.1.2 電子商務(wù)網(wǎng)站的現(xiàn)狀11.2 系統(tǒng)開(kāi)發(fā)的目的和意義21.2.1 系統(tǒng)開(kāi)發(fā)的目的21.2.2 系統(tǒng)開(kāi)發(fā)的意義22 系統(tǒng)運(yùn)行環(huán)境和開(kāi)發(fā)平臺(tái)32.1 系統(tǒng)運(yùn)行環(huán)境32.1.1 系統(tǒng)軟件環(huán)境32.1.2 系統(tǒng)硬件環(huán)境32.2 系統(tǒng)開(kāi)發(fā)平臺(tái)42.2.1 開(kāi)發(fā)語(yǔ)言環(huán)境42.2.2 開(kāi)發(fā)所需工具簡(jiǎn)介42.2.3 開(kāi)
2、發(fā)所用到的技術(shù)簡(jiǎn)介42.2.4 開(kāi)發(fā)所需插件63 系統(tǒng)可行性研究和需求分析73.1 系統(tǒng)可行性分析73.1.1 市場(chǎng)可行性分析73.1.2 技術(shù)可行性分析73.1.3 時(shí)間可行性分析73.1.4 成本收益的可行性分析73.1.5 系統(tǒng)后續(xù)開(kāi)發(fā)和維護(hù)的可行性73.2 系統(tǒng)需求分析83.2.1 系統(tǒng)架構(gòu)設(shè)計(jì)83.2.2 用戶和管理員的功能需求93.2.3 性能需求104 系統(tǒng)概要設(shè)計(jì)114.1 系統(tǒng)總體功能流程圖114.2 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)134.3 系統(tǒng)頁(yè)面和模塊設(shè)計(jì)145 總體設(shè)計(jì)與實(shí)現(xiàn)155.1 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)155.1.1 數(shù)據(jù)庫(kù)表設(shè)計(jì)155.1.2 數(shù)據(jù)庫(kù)的約束與關(guān)系165.2 系統(tǒng)主要
3、功能的設(shè)計(jì)與實(shí)現(xiàn)165.2.1 數(shù)據(jù)庫(kù)連接池類與數(shù)據(jù)庫(kù)工廠類簡(jiǎn)介165.2.2 用戶注冊(cè)登錄模塊的實(shí)現(xiàn)方式205.2.3 管理員登錄和其功能范圍的實(shí)現(xiàn)245.2.4 商品購(gòu)買(mǎi)及購(gòu)物車的實(shí)現(xiàn)295.2.5 訂單和訂單管理的實(shí)現(xiàn)方式316 系統(tǒng)測(cè)試366.1 系統(tǒng)測(cè)試概述366.2 系統(tǒng)黑盒測(cè)試366.3 系統(tǒng)白盒測(cè)試377 結(jié)語(yǔ)397.1 本系統(tǒng)的優(yōu)點(diǎn)397.2 本系統(tǒng)的不足之處及發(fā)展意見(jiàn)397.3 在系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)過(guò)程中的收獲40參考文獻(xiàn)41致謝42附錄43網(wǎng)上商城管理系統(tǒng)XX信息與管理科學(xué)學(xué)院軟件工程專業(yè)摘要: 21世紀(jì)是電子商務(wù)蓬勃發(fā)展的世紀(jì)。社會(huì)經(jīng)濟(jì)的發(fā)展使得人們的生活水平有了很大提高。
4、計(jì)算機(jī)科學(xué)的發(fā)展和互聯(lián)網(wǎng)的普及,電子商務(wù)在經(jīng)濟(jì)發(fā)展中的作用也越來(lái)越明顯,因此很受大家的歡迎。本系統(tǒng)是以JAVA語(yǔ)言為基礎(chǔ),用JSP Servlet技術(shù)來(lái)實(shí)現(xiàn)的一個(gè)在線購(gòu)物及后臺(tái)管理系統(tǒng)。它實(shí)現(xiàn)了一個(gè)在線購(gòu)物網(wǎng)站所需的基本功能,包括:商品展示,商品檢索,商品評(píng)論,購(gòu)物車,商品添加,訂單管理等功能。它提供了友好的交互頁(yè)面和豐富的功能,通過(guò)頁(yè)面展示豐富多樣的產(chǎn)品,讓顧客流連忘返。本系統(tǒng)是一個(gè)B2C模式的在線購(gòu)物平臺(tái)。B2C模式是電子商務(wù)領(lǐng)域發(fā)展較為成熟的平臺(tái)之一,典型代表為卓越、京東。本系統(tǒng)采用B2C模式,通過(guò)強(qiáng)大的后臺(tái)管理功能和后續(xù)研發(fā)優(yōu)勢(shì),本系統(tǒng)必將更加完善,更加滿足電子商務(wù)發(fā)展要求。關(guān)鍵字:電
5、子商務(wù)、JSP Servlet、B2C E-commerce & Management SystemAbstract: We all believe that ,in the 21st the e-commerce will develop rapidly and greatly. The rapidly developing social economy contribute to the improvement of common human life.With the developing of Computer Science and the prevalence of Interne
6、t, electronic commerce is play a more and more important role in our social economy,and its advantages make it popular to us. This system is based on JAVA,and its was completed by JSP Servlet technology. It supplies many useful functions which almost all the online trading systems need, which includ
7、ing : goods displaying, goods searching, goods comment, goods add, order management,etc. The friendly front pages display a lot of goods of any kinds, this is the attraction of my system. Its a system in B2C mode.B2C mode is one of the maturest modes in e-commerce area, JingDong Online Mall is typic
8、al representative of this mode. Our excellent background management provides favorable support to our system. This will helps our system adapt to the development of e-commerce developing in the future.Keywords: Electronic commerce,JSP Servlet,B2C1 引言1.1 系統(tǒng)開(kāi)發(fā)的背景和現(xiàn)狀1.1.1 電子商務(wù)網(wǎng)站開(kāi)發(fā)背景 近年來(lái),隨著Internet的迅速崛起
9、,互聯(lián)網(wǎng)已日益成為收集提供信息的最佳渠道并逐步進(jìn)入傳統(tǒng)的流通領(lǐng)域。于是電子商務(wù)開(kāi)始流行起來(lái),越來(lái)越多的商家在網(wǎng)上建起在線商店,向消費(fèi)者展示出一種新穎的購(gòu)物理念。 電子商務(wù)代表著未來(lái)貿(mào)易方式的發(fā)展方向,其應(yīng)用和推廣將給社會(huì)和經(jīng)濟(jì)帶來(lái)極大的效益。具有強(qiáng)大生命力的現(xiàn)代電子交易手段己越來(lái)越被人們所認(rèn)識(shí),發(fā)達(dá)國(guó)家在這方面有很多年的發(fā)展歷史,發(fā)展中國(guó)家也正在加緊制定總體發(fā)展戰(zhàn)略,大力促進(jìn)電子商務(wù)在國(guó)民經(jīng)濟(jì)各個(gè)領(lǐng)域的應(yīng)用,力爭(zhēng)在越來(lái)越激烈的國(guó)際競(jìng)爭(zhēng)中占據(jù)有利的地位。因此,對(duì)于網(wǎng)上購(gòu)物技術(shù)的研究和實(shí)現(xiàn),以及搭建一個(gè)實(shí)用的網(wǎng)上商店是很重要的。1.1.2 電子商務(wù)網(wǎng)站的現(xiàn)狀 在美、日等信息化程度較高的國(guó)家和地區(qū),
10、網(wǎng)絡(luò)商店發(fā)展速度迅猛,美國(guó)的世界級(jí)超一流的零售商,如沃爾瑪凱瑪特、家庭倉(cāng)儲(chǔ)、科羅格、J.C培尼等紛紛躋身于網(wǎng)絡(luò)經(jīng)商的行列。 在我國(guó),網(wǎng)上購(gòu)物從無(wú)到有也不過(guò)短短幾年時(shí)間。如今,在北京、上海、深圳等大城市,已有200多家商場(chǎng),專賣(mài)店開(kāi)設(shè)了網(wǎng)上商店,還有一些正處在觀望階段。真正意義上的網(wǎng)上購(gòu)物,即貨款的結(jié)算在網(wǎng)上進(jìn)行,已在國(guó)內(nèi)實(shí)現(xiàn)。電子商務(wù)的發(fā)展也越來(lái)越多樣化,模式有B2B,B2C,C2C等,也涌現(xiàn)出一大批優(yōu)秀的電子商務(wù)網(wǎng)站,從淘寶,拍拍,阿里巴巴外貿(mào),卓越,貝塔斯曼,到現(xiàn)在的中關(guān)村在線,1號(hào)店,京東商城等?;陔娮由虅?wù)所連帶出的商品交易方案、電子結(jié)賬方案和信息安全方案等,已逐步成為國(guó)際信息技術(shù)市場(chǎng)
11、競(jìng)爭(zhēng)的焦點(diǎn)。隨著電子商務(wù)的日益發(fā)展,產(chǎn)生了虛擬銀行、網(wǎng)絡(luò)營(yíng)銷、網(wǎng)上購(gòu)物、網(wǎng)絡(luò)廣告等新興信息產(chǎn)業(yè),從側(cè)面反應(yīng)了電子商務(wù)正在對(duì)社會(huì)和經(jīng)濟(jì)產(chǎn)生著深刻的影響。不僅如此,基于電子商務(wù)模式的擴(kuò)展,團(tuán)購(gòu)網(wǎng)絡(luò)和其他電子商務(wù)輔助型網(wǎng)站的也正變得越來(lái)越熱,在未來(lái),電子商務(wù)必定有著更廣闊的發(fā)展空間。1.2 系統(tǒng)開(kāi)發(fā)的目的和意義1.2.1 系統(tǒng)開(kāi)發(fā)的目的 電子商務(wù)主要包括網(wǎng)上廣告、訂貨、付款、客戶服務(wù)和貨物遞交等,售前、售中、售后以及市場(chǎng)調(diào)查分析、財(cái)務(wù)核算及生產(chǎn)安排等多項(xiàng)利用Internet開(kāi)發(fā)的商業(yè)活動(dòng),它對(duì)人類社會(huì)進(jìn)行著全方位的改造,在企業(yè)競(jìng)爭(zhēng)、政府部門(mén)、公共研究機(jī)構(gòu)、教育以及娛樂(lè)等方面改變著人類相互交往的方式,
12、為人們展示了一個(gè)全新、璀璨的世界。由于電子商務(wù)的出現(xiàn),傳統(tǒng)的經(jīng)營(yíng)模式和經(jīng)營(yíng)理念將發(fā)生巨大的變化。電子商務(wù)主要以飛速發(fā)展的遍及全球的 Internet 網(wǎng)絡(luò)為架構(gòu),以交易雙方為主體,以銀行支付和結(jié)算為手段,以客戶數(shù)據(jù)庫(kù)為依托的全新商業(yè)模式。電子商務(wù)將會(huì)創(chuàng)造巨大的效益和機(jī)會(huì),會(huì)將市場(chǎng)的空間形態(tài)、時(shí)間形態(tài)和虛擬形態(tài)結(jié)合起來(lái),將物流、資金流、信息流匯集成開(kāi)放的、良性循環(huán)的環(huán)路,使經(jīng)營(yíng)者以市場(chǎng)為紐帶,在市場(chǎng)上發(fā)揮最佳的作用,得到最大的效益。1.2.2 系統(tǒng)開(kāi)發(fā)的意義 從電子商務(wù)的發(fā)展特點(diǎn)來(lái)看,可以看出開(kāi)發(fā)一個(gè)網(wǎng)上購(gòu)物系統(tǒng)有以下幾點(diǎn)重大的意義:l 投資少,回收快。 l 基本不需要占?jí)嘿Y金。 l 24小時(shí)營(yíng)
13、業(yè)時(shí)間。l 不受店面空間的限制。 l 不受地理位置影響。從這些先天的優(yōu)勢(shì)可以看出,電子商務(wù)的進(jìn)一步蓬勃發(fā)展是時(shí)代的趨勢(shì),盡早積極開(kāi)發(fā)網(wǎng)上購(gòu)物系統(tǒng)網(wǎng)站有著非常大的現(xiàn)實(shí)意義。2 系統(tǒng)運(yùn)行環(huán)境和開(kāi)發(fā)平臺(tái)2.1 系統(tǒng)運(yùn)行環(huán)境 本系統(tǒng)的開(kāi)發(fā)采用 Java 編程語(yǔ)言。由于 Java 語(yǔ)言具有跨平臺(tái)的特性,因此,本系統(tǒng)可以在 Windows、Linux、Unix 等不同環(huán)境下運(yùn)行。2.1.1 系統(tǒng)軟件環(huán)境 本購(gòu)物網(wǎng)站系統(tǒng)為由JAVA語(yǔ)言和JSP技術(shù)開(kāi)發(fā)的商業(yè)網(wǎng)站,運(yùn)用了B/S(Browser/Server)技術(shù),具有跨平臺(tái)的特性。本系統(tǒng)采用Browser/Web/Database是管理信息系統(tǒng)的三層體系結(jié)構(gòu)
14、,在這種體系結(jié)構(gòu)里,客戶端的瀏覽器程序不直接訪問(wèn)位于服務(wù)器上的后臺(tái)數(shù)據(jù)庫(kù),而是通過(guò)位于中間層的Web服務(wù)器或支持Web的應(yīng)用服務(wù)器訪問(wèn)數(shù)據(jù)庫(kù)3。因此,系統(tǒng)對(duì)于客戶端的要求不高,而服務(wù)器端則要求安裝某些必需軟件。具體配置如下: 客戶端軟件環(huán)境要求:1 安裝web瀏覽器 2 安裝有圖片編輯軟件 3 安裝Adobe Flash IE插件 服務(wù)器端軟件環(huán)境要求:1 Windows Server2003或Windows Server2008操作系統(tǒng)2 安裝有MySQL和SQLServer 2005數(shù)據(jù)庫(kù)系統(tǒng)3 安裝有SQL Server Management Studio數(shù)據(jù)庫(kù)管理軟件4 安裝有MySQ
15、L Administrator和Navicat數(shù)據(jù)庫(kù)管理軟件5 安裝有J2SE 6.23版JDK開(kāi)發(fā)工具包6 安裝有Apache WEB服務(wù)器Tomcat 6.02.1.2 系統(tǒng)硬件環(huán)境 系統(tǒng)對(duì)于客戶端的硬件環(huán)境也不高,但是服務(wù)器的性能一定要穩(wěn)定。具體基本配置如下: 客戶端硬件環(huán)境配置:1 CPU:奔騰 1.2 GHz2 內(nèi)存:256MB3 硬盤(pán):40GB 服務(wù)器端硬件環(huán)境配置:1 CPU:至強(qiáng) Xeon 3.6 GHz2 內(nèi)存:8GB3 硬盤(pán):2TB2.2 系統(tǒng)開(kāi)發(fā)平臺(tái)2.2.1 開(kāi)發(fā)語(yǔ)言環(huán)境 該網(wǎng)上購(gòu)物系統(tǒng)是用JAVA語(yǔ)言開(kāi)發(fā)的在線商務(wù)系統(tǒng)。Java是一種跨平臺(tái)的語(yǔ)言,可以在不同的操作系統(tǒng)
16、環(huán)境中運(yùn)行,只要有java解釋器和瀏覽器就可以運(yùn)行,java是面向?qū)ο缶幊讨械囊环N經(jīng)典語(yǔ)言2。2.2.2 開(kāi)發(fā)所需工具簡(jiǎn)介 J2SE開(kāi)發(fā)人員工具包JDK簡(jiǎn)介 J2SE開(kāi)發(fā)人員工具集是SUN公司為JAVA程序開(kāi)發(fā)人員提供的基礎(chǔ)工具集,它封裝了許多基礎(chǔ)JAVA類庫(kù),并且提供了JVM,java程序的運(yùn)行是在JAVA虛擬機(jī)中運(yùn)行,在客戶端通過(guò)java解釋器來(lái)顯示信息。 Tomcat 簡(jiǎn)介 Tomcat 是 Apache Group 在 Sun 的 JSWDK 基礎(chǔ)上開(kāi)發(fā)的可直接提供 Web 服務(wù),并且支持 Servlet 的web服務(wù)器,是 Sun 官方推薦的 servlet 和 jsp 容器。Tom
17、cat服務(wù)器是完全的開(kāi)源服務(wù)器,完全免費(fèi),有著非常廣泛的應(yīng)用10。 MyEclipse 簡(jiǎn)介 MyEclipse 是由 Genuitec 發(fā)布的 eclipse 插件,同時(shí)也是一款功能強(qiáng)大的 J2EE集成開(kāi)發(fā)環(huán)境,支持代碼編寫(xiě)、配置、測(cè)試以及除錯(cuò)。MyEclipse提供了許多非常有價(jià)值的jar插件,給開(kāi)發(fā)人員提供了很大便利。 PowerDesigner 簡(jiǎn)介 PowerDesigner模型設(shè)計(jì)工具是SyBase公司開(kāi)的一個(gè)建模工具,它可以用于數(shù)據(jù)庫(kù)模型設(shè)計(jì),并且兼容幾十種不同廠商的數(shù)據(jù)庫(kù)產(chǎn)品,并且可以自動(dòng)轉(zhuǎn)換為SQL腳本語(yǔ)言,直接在數(shù)據(jù)庫(kù)中運(yùn)行即可,用戶使用時(shí)只需要建立正確的數(shù)據(jù)庫(kù)模型即可。除
18、此之外,PowerDesigner還可以用來(lái)建立其他模型,如用例圖,狀態(tài)圖,類圖等。還可以用來(lái)畫(huà)時(shí)序圖,活動(dòng)圖等,并且可以用來(lái)生成JAVA源文件7。2.2.3 開(kāi)發(fā)所用到的技術(shù)簡(jiǎn)介 MVC思想 MVC是一個(gè)設(shè)計(jì)模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開(kāi)。使用MVC應(yīng)用程序被分成三個(gè)核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)8。 視圖是用戶看到并與之交互的界面。在新式的Web應(yīng)用程序中,JSP開(kāi)始在 視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮。模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。 M
19、VC的處理過(guò)程,首先控制器接收用戶的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)模型來(lái)進(jìn)行處理,然后模型用業(yè)務(wù)邏輯來(lái)處理用戶的請(qǐng)求并返回?cái)?shù)據(jù),最后控制器用視圖格式化模型返回的數(shù)據(jù),并呈現(xiàn)給用戶。如圖2-1所示:視 圖提供了用戶界面,將用戶輸入數(shù)據(jù)傳遞給控制器或?qū)⒛P蛿?shù)據(jù)顯示給用戶控 制 器連接了模型和視圖,判斷請(qǐng)求交給哪個(gè)模型,調(diào)用視圖顯示模型處理用戶請(qǐng)求結(jié)果模 型封裝了用戶數(shù)據(jù)和處理數(shù)據(jù)的業(yè)務(wù)邏輯狀態(tài)查詢狀態(tài)改變選 擇 視 圖用 戶 請(qǐng) 求業(yè)務(wù)請(qǐng)求圖2-1 MVC架構(gòu)模型JSP技術(shù)JSP(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)
20、,該技術(shù)為創(chuàng)建顯示動(dòng)態(tài)生成內(nèi)容的Web頁(yè)面提供了一個(gè)簡(jiǎn)捷而快速的方法。JSP技術(shù)的設(shè)計(jì)目的是使得構(gòu)造基于Web的應(yīng)用程序更加容易和快捷,而這些應(yīng)用程序能夠與各種Web服務(wù)器,應(yīng)用服務(wù)器,瀏覽器和開(kāi)發(fā)工具共同工作。JSP技術(shù)的優(yōu)勢(shì)一次編寫(xiě),到處運(yùn)行,并且系統(tǒng)的多平臺(tái)支持。JSP還有強(qiáng)大的可伸縮性,被多樣化和功能強(qiáng)大的開(kāi)發(fā)工具支持。 Servlet技術(shù)Servlet是使用Java Servlet應(yīng)用程序設(shè)計(jì)接口(API)及相關(guān)類和方法的Java程序。除了Java Servlet API,Servlet還可以用于擴(kuò)展和添加到API的Java類軟件包。它最常見(jiàn)的用途是擴(kuò)展Web服務(wù)器,提供非常安全的、
21、可移植的、易于使用的CGI替代品。它是一種動(dòng)態(tài)加載的模塊,為來(lái)自Web服務(wù)器的請(qǐng)求提供服務(wù)。它完全運(yùn)行在Java虛擬機(jī)上14。由于它在服務(wù)器端運(yùn)行,因此它不依賴于瀏覽器的兼容性。2.2.4 開(kāi)發(fā)所需插件 由于本系統(tǒng)是在eclipse中小組開(kāi)發(fā),因此用到了CVS開(kāi)發(fā)jar包,還用到了servlet-api.jar,mysql-jdbc.jar,commons-fileupload.jar等jar包,分別用于服務(wù)器與后臺(tái)的連接,后臺(tái)與數(shù)據(jù)庫(kù)的連接,文件上傳功能。3 系統(tǒng)可行性研究和需求分析3.1 系統(tǒng)可行性分析3.1.1 市場(chǎng)可行性分析 隨著信息化時(shí)代的加快,效率高、功能強(qiáng)的電子商務(wù)網(wǎng)站越來(lái)越受到
22、歡迎,電子商務(wù)是新型商務(wù)模式的典型代表,打破了地域的局限性,即使您身處北極,只要能上網(wǎng),照樣可以通過(guò)電子商務(wù)進(jìn)行交易。21世紀(jì)是電子商務(wù)蓬勃發(fā)展的實(shí)際,電子商務(wù)的市場(chǎng)份額只能是越來(lái)越大,市場(chǎng)上有很大的可行性。3.1.2 技術(shù)可行性分析 該系統(tǒng)基于web,采用現(xiàn)在非常流行的Servlet&JSP技術(shù)實(shí)現(xiàn)。數(shù)據(jù)庫(kù)用的Mysql數(shù)據(jù)庫(kù)。實(shí)現(xiàn)起來(lái)簡(jiǎn)單,方便,易于操作。整體上與數(shù)據(jù)庫(kù)之間的操作用的是數(shù)據(jù)庫(kù)連接池,頁(yè)面顯示部分用的是struts提供的一些標(biāo)簽。整體技術(shù)難度適中,完全有能力完成整個(gè)開(kāi)發(fā)過(guò)程,技術(shù)上有可行性。 3.1.3 時(shí)間可行性分析 從系統(tǒng)立項(xiàng)到項(xiàng)目開(kāi)發(fā)完畢,有充足的時(shí)間來(lái)查閱文檔,解決開(kāi)
23、發(fā)過(guò)程中遇到的問(wèn)題,并且有項(xiàng)目完成前,有充足的時(shí)間來(lái)調(diào)試系統(tǒng),完全具有時(shí)間上的可行性。3.1.4 成本收益的可行性分析信息系統(tǒng)的開(kāi)發(fā)過(guò)程中,最大的成本是人力成本,而人力成本在該項(xiàng)目開(kāi)發(fā)中恰恰是最小的成本,相反,時(shí)間成本成了最大的成本。物力成本上,開(kāi)發(fā)工具完全免費(fèi),不需要額外原材料,物力成本幾乎為零。這是個(gè)付出就有回報(bào)的過(guò)程,對(duì)于軟件開(kāi)發(fā)的基本流程的進(jìn)一步熟悉,對(duì)于基本知識(shí)的進(jìn)一步鞏固就是整個(gè)系統(tǒng)開(kāi)發(fā)的最大收益,也是最終的目的,因此該系統(tǒng)完全是非常有價(jià)值的一次嘗試。3.1.5 系統(tǒng)后續(xù)開(kāi)發(fā)和維護(hù)的可行性 該系統(tǒng)基于JSP Servlet技術(shù)開(kāi)發(fā),整個(gè)過(guò)程脈絡(luò)清晰。在整個(gè)開(kāi)發(fā)過(guò)程中,保存了大量的文
24、檔及源碼備份,隨時(shí)可以為系統(tǒng)的再次開(kāi)發(fā)提供強(qiáng)力的幫助。信息系統(tǒng)更新速度非???,如果不持續(xù)更新而固守陳舊,那么就會(huì)被時(shí)代所淘汰。該系統(tǒng)的開(kāi)發(fā)正是基于這種思考,在開(kāi)發(fā)過(guò)程中,盡量的降低整個(gè)系統(tǒng)的耦合度,業(yè)務(wù)邏輯放在實(shí)現(xiàn)類中去實(shí)現(xiàn),使得系統(tǒng)中所建立的模型相互之間耦合度很低,非常利于后續(xù)開(kāi)發(fā)和代碼復(fù)用。3.2 系統(tǒng)需求分析3.2.1 系統(tǒng)架構(gòu)設(shè)計(jì)本系統(tǒng)采用 B/S(Browser/Server)模式體系結(jié)構(gòu)。B/S 模式結(jié)構(gòu),是 WEB 興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式。其統(tǒng)一了客戶端,將系統(tǒng)功能實(shí)現(xiàn)的核心部分集中到服務(wù)器,從而簡(jiǎn)化系統(tǒng)的開(kāi)發(fā)、維護(hù)和使用。B/S 結(jié)構(gòu)采用星形拓?fù)浣Y(jié)構(gòu)建立企業(yè)內(nèi)部通信網(wǎng)絡(luò)或利用
25、 Internet 虛擬專網(wǎng)(VPN)。前者安全、快捷、準(zhǔn)確;后者有節(jié)省投資、跨地域廣等優(yōu)點(diǎn)。在本系統(tǒng)的設(shè)計(jì)中,要使用MVC模式,將前臺(tái)視圖,后臺(tái)和數(shù)據(jù)庫(kù)以及中間層分離開(kāi)來(lái)。在編碼過(guò)程中要在不同的包中分別:建立模型,實(shí)現(xiàn)模型,Servlet連接,數(shù)據(jù)庫(kù)連接類和過(guò)濾器。系統(tǒng)的實(shí)現(xiàn)方式如圖3-1所示:圖3-1系統(tǒng)結(jié)構(gòu)流程圖通過(guò)上圖,可以很清晰的看到本系統(tǒng)的整體架構(gòu),通過(guò)將不同的功能模塊分離開(kāi)來(lái),利用Servlet容器和配置文件來(lái)實(shí)現(xiàn)用戶請(qǐng)求的選擇和調(diào)度,大大降低了不同模塊間的耦合度,增強(qiáng)了代碼重用度和健壯性。3.2.2 用戶和管理員的功能需求3.2.2.1 功能模塊劃分該網(wǎng)上購(gòu)物系統(tǒng)從面向的用戶種
26、類上分共分兩個(gè)部分:一部分是商城會(huì)員,包括:顧客在線注冊(cè)、購(gòu)物、提交訂單、付款等操作;另一部分是商城管理員,這部分的內(nèi)容包括:產(chǎn)品的添加、刪除、查詢、訂單的管理、操作員的管理、注冊(cè)用戶的管理等。 從模塊上劃分可分為:前臺(tái)模塊和后臺(tái)模塊兩大部分。 圖3-2顯示出前臺(tái)和后臺(tái)部分分別要實(shí)現(xiàn)的功能模塊。圖3-2 前臺(tái)與后臺(tái)模塊功能 狀態(tài)圖 在該系統(tǒng)中,前臺(tái)模塊與后臺(tái)模塊是獨(dú)立的兩個(gè)模塊,分別對(duì)應(yīng)不同的功能模塊,由不同的JSP頁(yè)面來(lái)完成頁(yè)面的功能控制。3.2.2.2 用戶模塊的功能劃分 (1) 注冊(cè)功能。顧客首先要注冊(cè)為網(wǎng)上商城的用戶。注冊(cè)時(shí)只要填寫(xiě)登錄用戶名、密碼、聯(lián)系電子信箱3項(xiàng)信息即可。注冊(cè)后,用
27、戶可繼續(xù)如實(shí)填寫(xiě)詳細(xì)個(gè)人信息及收貨人信息,同時(shí)可修改密碼、查詢及修改訂單。 (2) 選擇產(chǎn)品功能。顧客瀏覽網(wǎng)上商城,將自己需求的產(chǎn)品放入到購(gòu)物車中(可在網(wǎng)上商城首頁(yè)、專柜首頁(yè)、產(chǎn)品小類、專賣(mài)店首頁(yè)、搜索結(jié)果頁(yè)面、產(chǎn)品詳細(xì)信息頁(yè)面進(jìn)行該操作),可連續(xù)添加商品。 (3) 管理購(gòu)物車。顧客選擇完商品后可進(jìn)入購(gòu)物車頁(yè)面,查看自己要購(gòu)買(mǎi)的商品,可修改某一商品數(shù)量、取消購(gòu)買(mǎi)某商品和清空整個(gè)購(gòu)物車。 (4) 訂單功能。顧客確定購(gòu)物車中的商品后提交訂單,如顧客已填寫(xiě)收貨人信息,則頁(yè)面顯示該信息并由顧客確認(rèn)。如尚未填寫(xiě)則顯示相應(yīng)表單請(qǐng)其填寫(xiě),系統(tǒng)記錄顧客提交的收貨人信息以便其下次購(gòu)物時(shí)使用。顧客提交訂單后可在網(wǎng)
28、上商城查詢?cè)撚唵?,并可?duì)尚未處理的訂單進(jìn)行取消、修改等操作。 (5) 付款功能。顧客提交的訂單被確認(rèn)后,要選擇付款方式,在付款之后,管理員更改其狀態(tài)并選擇發(fā)貨。3.2.2.3 管理員模塊的功能劃分 (1) 管理用戶信息功能。負(fù)責(zé)用戶信息的監(jiān)控和刪除,并有凍結(jié)不良用戶的功能,但不能更改用戶信息。 (2) 管理訂單功能。管理員可以查詢并查看訂單,并可以批量查詢未處理的訂單,并且有更改訂單狀態(tài)的功能。 (3) 管理商品功能。管理員可以添加、修改、刪除商品。 (4) 留言管理功能。管理員可以查看和評(píng)論留言,并能刪除不良留言。 (5) 廣告管理功能。可以在前臺(tái)設(shè)置友情鏈接,并且可以添加廣告。3.2.3
29、性能需求3.2.3.1 對(duì)數(shù)據(jù)精確度的要求 對(duì)于商品價(jià)格和用戶存款的數(shù)據(jù)要使用BigDecimal類來(lái)管理,防止出現(xiàn)因?yàn)榫葐?wèn)題而無(wú)法購(gòu)買(mǎi)商品的情況出現(xiàn)。 與CASH有關(guān)的數(shù)據(jù)在數(shù)據(jù)庫(kù)中的存儲(chǔ)也要保留2位小數(shù)。并且要保證在整個(gè)系統(tǒng)運(yùn)行過(guò)程中,精確度不能出現(xiàn)丟失和改變。3.2.3.2 對(duì)系統(tǒng)易用性、可移植性、健壯性的要求易用性:整個(gè)購(gòu)物系統(tǒng)要簡(jiǎn)單易用,用戶容易上手并且能很容易的找到用戶想找的功能模塊。購(gòu)物流程要明白,公告和通知位置顯眼,能被用戶看到,產(chǎn)品圖片要清晰,產(chǎn)品信息描述要準(zhǔn)確??梢浦残裕赫麄€(gè)購(gòu)物系統(tǒng)能符合服務(wù)器平臺(tái)的需要,可以保證在集群服務(wù)器上,在不同的服務(wù)器環(huán)境中都可以順利運(yùn)行。健壯性
30、:系統(tǒng)要具有較強(qiáng)的適應(yīng)能力,能承受住較多用戶同時(shí)訪問(wèn)的需要,并且系統(tǒng)的相關(guān)文檔要保留完整,源碼標(biāo)注清晰,結(jié)構(gòu)合理,便于后續(xù)的開(kāi)發(fā)和維護(hù)。4 系統(tǒng)概要設(shè)計(jì)4.1 系統(tǒng)總體功能流程圖系統(tǒng)總體分為前臺(tái)模塊和后臺(tái)模塊兩個(gè)部分。圖4-1描述前臺(tái)模塊的整體流程:圖4-1 購(gòu)物系統(tǒng)前臺(tái)模塊流程圖圖4-2描述的是后臺(tái)模塊的整體流程:圖4-2 購(gòu)物系統(tǒng)后臺(tái)模塊流程圖4.2 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)的設(shè)計(jì)非常重要,直接關(guān)系著系統(tǒng)的整體穩(wěn)定性。數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程中要參照以下規(guī)范:1. 數(shù)據(jù)庫(kù)表設(shè)計(jì)時(shí),表名稱要采用英文單詞+下劃線+tb的形式。采用這種命名方式的含義是:user_tb用戶表。表達(dá)意思簡(jiǎn)單明確。2. 表中字段
31、的命名方式采用表名稱縮寫(xiě)+下劃線+英文單詞的形式。采用這種命名方式的含義是:u_name用戶名稱 u_truename用戶真實(shí)姓名。3. 數(shù)據(jù)庫(kù)設(shè)計(jì)主要要?jiǎng)澐譃樗膫€(gè)核心模塊:用戶,管理員,商品,訂單。表的設(shè)計(jì)要結(jié)構(gòu)清晰、有條理,還要高效。具體設(shè)計(jì)為以下14張表,存儲(chǔ)內(nèi)容如下所示: 用戶表:用戶ID,用戶等級(jí)ID,用戶名,密碼,真實(shí)姓名,郵箱,性別,年齡,地址,電話,消費(fèi)額,密碼問(wèn)題。 收藏表:用戶ID,商品ID,收藏時(shí)間,收藏地址。 用戶等級(jí)折扣表:等級(jí)折扣表ID,等級(jí)名稱,消費(fèi)額,折扣。 訂單表:訂單ID,用戶ID,訂單號(hào),品種數(shù),地址,收件人,訂單日期,聯(lián)系電話,說(shuō)明,貨物位置。 訂單詳細(xì)
32、表:訂單詳細(xì)ID,訂單ID,商品ID,商品數(shù)量,價(jià)格。 商品表:商品ID,品牌ID,名稱,價(jià)格,圖片名稱,上架時(shí)間,簡(jiǎn)介,庫(kù)存,成交量,點(diǎn)擊量。 品牌表:品牌ID,品牌名,品牌編號(hào),狀態(tài)。 商品種類:編號(hào),總分類ID,類別名稱,狀態(tài)。 商品總分類:總分類ID,分類名稱,狀態(tài)。 管理員表:管理員ID,用戶名,密碼,類型。 留言表:用戶ID,留言內(nèi)容,留言時(shí)間。 留言回復(fù)表:留言表ID,管理員ID,回復(fù)留言內(nèi)容,回復(fù)時(shí)間。 商品評(píng)價(jià)表:商品評(píng)價(jià)ID,商品ID,用戶ID,評(píng)價(jià)內(nèi)容,評(píng)價(jià)時(shí)間。 打折表:打折ID,消費(fèi)金額起點(diǎn),折扣。數(shù)據(jù)庫(kù)的外鍵設(shè)計(jì): 可以通過(guò)訂單表查看用戶信息和商品信息。 可以根據(jù)留
33、言回復(fù)表查看到管理員信息和用戶留言信息。 可以通過(guò)用戶等級(jí)折扣表查看打折水平。 可以通過(guò)商品表查詢到商品小分類和總分類。4.3 系統(tǒng)頁(yè)面和模塊設(shè)計(jì)系統(tǒng)的頁(yè)面包括前臺(tái)部分和后臺(tái)部分,前臺(tái)部分包括前臺(tái)商品部分和用戶部分,通過(guò)JSP頁(yè)面來(lái)實(shí)現(xiàn)系統(tǒng)的功能。商品部分:404.jsp 作用:提示請(qǐng)求頁(yè)面沒(méi)有找到。 405.jsp 作用:提示服務(wù)器繁忙。 goodsdetailssub.jsp 作用:商品詳細(xì)信息描述。 goodsdisplay.jsp 作用:前臺(tái)商品展示。 register.jsp 作用:用戶注冊(cè)頁(yè)面。 top.jsp 作用:嵌入frame.jsp中,為首頁(yè)面的頂部描述。 bottom.j
34、sp 作用:嵌入frame.jsp中,為首頁(yè)面的底部說(shuō)明。用戶部分:collectshow.jsp 作用:顯示會(huì)員的收藏夾。 gouwuche.jsp 作用:顯示用戶的購(gòu)物車信息。 Memberinfo.jsp 作用:會(huì)員信息。 userReplymessage.jsp 作用:顯示管理員回復(fù)信息。后臺(tái)部分:Error.jsp 作用:登錄錯(cuò)誤跳轉(zhuǎn)頁(yè)面。 Login.jsp 作用:登錄頁(yè)面。 Menu.jsp 作用:左側(cè)菜單頁(yè)面。 Newadd.jsp 作用:增加管理員。 Showgoods.jsp 作用:商品檢索頁(yè)面。 Lookorder.jsp 作用:訂單查看頁(yè)面。 Goodsadd.jsp
35、作用:增加商品頁(yè)面。5 總體設(shè)計(jì)與實(shí)現(xiàn)5.1 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)5.1.1 數(shù)據(jù)庫(kù)表設(shè)計(jì)根據(jù)4.2中對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)的要求,在該系統(tǒng)中建立了14張表,定義了14個(gè)外鍵約束,用PowerDesigner設(shè)計(jì)數(shù)據(jù)庫(kù)模型如圖5-1所示:圖5-1 PowerDesigner設(shè)計(jì)數(shù)據(jù)庫(kù)表和外鍵關(guān)系 根據(jù)數(shù)據(jù)庫(kù)設(shè)計(jì)要求,數(shù)據(jù)庫(kù)設(shè)計(jì)中一共要建表14張,分別為: 商品表 品牌表 商品種類 商品總分類 商品評(píng)價(jià) 用戶表 收藏表 用戶登記表 留言表 訂單表 訂單詳細(xì)表 管理員表 回復(fù)留言表 打折表 在數(shù)據(jù)庫(kù)的設(shè)計(jì)中,通過(guò)以上14張表存放商城商品和交易信息。14張表主要分為用戶部分,訂單部分,商品部分,和管理員部分4大塊
36、。通過(guò)外鍵約束實(shí)現(xiàn)了對(duì)于不同表的相互關(guān)聯(lián)和約束。例如:收藏表作為從表,外鍵關(guān)聯(lián)于商品表和用戶信息表,通過(guò)設(shè)置外鍵用戶id可以得到某用戶信息,通過(guò)設(shè)置外鍵商品id可以查詢到用戶收藏的商品信息,而且在外部發(fā)出更新和刪除請(qǐng)求時(shí),通過(guò)設(shè)置CASCADE級(jí)聯(lián)刪除,可以強(qiáng)制更新商品信息。注:關(guān)于該系統(tǒng)數(shù)據(jù)庫(kù)創(chuàng)建的SQL腳本和模型均存放在附錄中。腳本為MySQL版和SQLServer版共兩份。5.1.2 數(shù)據(jù)庫(kù)的約束與關(guān)系 在該系統(tǒng)數(shù)據(jù)庫(kù)中,共定義了14個(gè)外鍵約束。主要的外鍵關(guān)系如下:u 訂單表 user_id 關(guān)聯(lián) 用戶表 user_id;u 收藏表 user_id 關(guān)聯(lián) 用戶表 user_id;u 訂單
37、詳細(xì)表 o_id 關(guān)聯(lián) 訂單表 o_id;u 商品表 g_id 關(guān)聯(lián) 品牌表 g_id;u 品牌表 t1_id 關(guān)聯(lián) 商品種類表 t1_id;u 回復(fù)留言表 m_id 關(guān)聯(lián)管理員表 m_id; 以上外間關(guān)系中各字段名稱注釋如下:user_id表示用戶ID,o_id表示訂單ID,g_id表示商品ID,t1_id表示商品種類ID,m_id表示管理員ID。 其他字段詳細(xì)描述請(qǐng)參照附錄中數(shù)據(jù)庫(kù)表與字段注釋。5.2 系統(tǒng)主要功能的設(shè)計(jì)與實(shí)現(xiàn)5.2.1 數(shù)據(jù)庫(kù)連接池類與數(shù)據(jù)庫(kù)工廠類簡(jiǎn)介5.2.1.1 DBConnectionPool類詳解 DBConnectionPool類是本項(xiàng)目中的數(shù)據(jù)庫(kù)連接池類,是按
38、照線程創(chuàng)建和調(diào)度的思路創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接池,通過(guò)泛型隊(duì)列 Vector 來(lái)創(chuàng)建一個(gè)固定連接數(shù)的連接池,系統(tǒng)發(fā)送出連接數(shù)據(jù)庫(kù)的請(qǐng)求時(shí),通過(guò)調(diào)用該類中的getConnection()方法來(lái)釋放一個(gè)連接,同時(shí)在隊(duì)列中減去1,從而實(shí)現(xiàn)了對(duì)連接數(shù)的控制,并且極大的提高了數(shù)據(jù)庫(kù)的訪問(wèn)效率。 DBFactory類是本項(xiàng)目中的數(shù)據(jù)庫(kù)工廠類。它實(shí)現(xiàn)了DBConnectionPool中的getConnection() 方法,當(dāng)外部類調(diào)用時(shí)將 它封裝了一些對(duì)數(shù)據(jù)庫(kù)進(jìn)行SQL操作的方法,供外部類來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。例如:外部類要執(zhí)行數(shù)據(jù)庫(kù)查詢,它只需通過(guò)調(diào)用executeQuery(sql)方法,傳進(jìn)SQL語(yǔ)句作為
39、參數(shù)即可返回ResultSet結(jié)果集,然后在結(jié)果集中檢索即可。同理,外部類執(zhí)行數(shù)據(jù)庫(kù)插入和刪除操作,它只需要調(diào)用executeOperate(sql) 方法,傳進(jìn)SQL語(yǔ)句作為參數(shù)即可返回ResultSet結(jié)果集,查詢完畢后要釋放資源時(shí),通過(guò)調(diào)用DBConnectionPool的release()方法來(lái)釋放資源。 DBConnectionPool 類和 DBFactory類工作方式如圖5-2所示: 圖5-2 UserImpl與GoodsImpl操縱數(shù)據(jù)庫(kù) 類圖DBConnectionPool類的具體實(shí)現(xiàn)方式(核心代碼):/返回當(dāng)前連接池的一個(gè)對(duì)象public static DBConnecti
40、onPool getInstance() if (null = instance) instance = new DBConnectionPool();return instance;通過(guò)getInstance()方法獲取一個(gè)DBConnectionPool類實(shí)例/獲取連接池中的一個(gè)連接 public synchronized Connection getConnection() if (pool.size() 0) conn = pool.get(0);/ 獲取連接pool.remove(conn);/ 將連接從連接池中移除return conn;通過(guò)getConnection()方法返回一
41、個(gè)數(shù)據(jù)庫(kù)連接/ 釋放連接public synchronized void release(Connection conn) pool.add(conn);通過(guò)release()方法釋放數(shù)據(jù)庫(kù)連接以下簡(jiǎn)要介紹 Java與數(shù)據(jù)庫(kù)建立連接的實(shí)現(xiàn)方式:/初始化連接池、讀取配置文件(存放著數(shù)據(jù)庫(kù)連接信息)private void init() pool = new Vector(poolSize);/ 初始化連接池/在連接池中添加連接private void addConnection() Connection conn = null;Class.forName(driver); for (int i
42、= 0; i poolSize; i+) conn = DriverManager.getConnection(url, username, password);pool.add(conn);/讀取配置文件private void readConfig() Properties prop = new Properties();/ 定義一個(gè)屬性實(shí)例prop.load(pool.properties);/ 加載屬性文件this.setDriver(prop.getProperty(driver); 在創(chuàng)建連接池時(shí),用到的JAVA Collection 為Vector,Vector可以實(shí)現(xiàn)動(dòng)態(tài)數(shù)組,
43、并且是線程安全的,非常適合與創(chuàng)建數(shù)據(jù)庫(kù)連接池。 以上核心代碼可以分解為如下的過(guò)程:數(shù)據(jù)庫(kù)連接池類被JVM加載時(shí),先執(zhí)行了類的默認(rèn)構(gòu)造函數(shù)。我在構(gòu)造函數(shù)中調(diào)用了init()初始化方法,類的初始化包括讀取配置文件和初始化連接池和添加連接3個(gè)方法即new Vector(poolSize)、readConfig()、addConnection()這三個(gè)方法,通過(guò)這三個(gè)方法,可以滿足數(shù)據(jù)庫(kù)連接池創(chuàng)建的基本條件。在該系統(tǒng)中只是實(shí)現(xiàn)了數(shù)據(jù)庫(kù)連接池的基本功能,線程池還要具備線程休眠和用戶連接過(guò)載時(shí)自動(dòng)添加額定數(shù)量的連接的技術(shù),來(lái)控制連接安全。通過(guò)自動(dòng)添加固定的連接數(shù),可以實(shí)現(xiàn)連接池的自動(dòng)控制,從而避免了連接過(guò)
44、載導(dǎo)致系統(tǒng)崩潰的情況發(fā)生。 連接池的基本工作原理如圖5-3所示:圖5-3 連接池的基本工作原理數(shù)據(jù)庫(kù)連接池這種設(shè)計(jì)模式屬于應(yīng)用共享資源的開(kāi)發(fā)中非常著名的一種設(shè)計(jì)模式:資源池(Resource Pool)。該模式正式為了解決資源的頻繁分配、釋放所造成的一系列問(wèn)題而設(shè)計(jì)的。這種模式通過(guò)設(shè)定連接池的最大連接數(shù)來(lái)防止系統(tǒng)無(wú)控制的與數(shù)據(jù)庫(kù)系統(tǒng)的連接,減小了數(shù)據(jù)庫(kù)系統(tǒng)因過(guò)載而崩潰的可能,大大提高了對(duì)系統(tǒng)與數(shù)據(jù)庫(kù)連接控制的靈活性。數(shù)據(jù)庫(kù)連接池在高效性和穩(wěn)定性上也具有極大的優(yōu)勢(shì)。例:在eclipse中新建兩個(gè)類DBTest.java和DBPoolTest.java 在DBTest中,利用for循環(huán)控制類與數(shù)據(jù)
45、庫(kù)建立1000次連接,同樣,在DBPoolTest中通過(guò)for循環(huán),利用線程池與數(shù)據(jù)庫(kù)建立1000次連接。圖5-4是類運(yùn)行結(jié)果的截圖:圖5-4 兩種連接方式的比較 從圖5-4可以很明顯地看出,當(dāng)并發(fā)連接數(shù)為1000時(shí),用傳統(tǒng)方式連接的DBTest類已經(jīng)崩潰,拋出“連接異常,端口被占用”的異常,而利用數(shù)據(jù)庫(kù)連接池的DBPoolTest類建立1000次連接僅耗時(shí)422毫秒。 下面進(jìn)行一次連接數(shù)為百萬(wàn)次的測(cè)試。 把連接數(shù)改成1000000次,由于第一個(gè)類在1000次連接已經(jīng)崩潰,因此此次只測(cè)試DBPoolTest類:圖5-5 DBPoolTest進(jìn)行一百萬(wàn)次連接 通過(guò)圖5-5可以看到利用線程池進(jìn)行一
46、百萬(wàn)次連接僅耗時(shí)484毫秒,由此很明顯就可以看出數(shù)據(jù)庫(kù)連接池的高效率和穩(wěn)定性。5.2.1.2 DBFactory類的實(shí)現(xiàn)方式和功能 DBFactory類是數(shù)據(jù)庫(kù)連接的工廠類,它封裝了一系列執(zhí)行數(shù)據(jù)庫(kù)操作的方法,如圖5-6所示:圖5-6 其他類對(duì)DBFactory的調(diào)用 DBFactory類通過(guò)DBConnectionPool類釋放的連接來(lái)與數(shù)據(jù)庫(kù)取得連接。該類對(duì)外只提供一些接口,供其他類來(lái)調(diào)用,通過(guò)調(diào)用工廠方法使得數(shù)據(jù)庫(kù)的連接變得規(guī)則有序并且效率極高,極大的方便了數(shù)據(jù)庫(kù)操作代碼的編寫(xiě)。 DBFactory類獨(dú)立使用時(shí)一般效率不高,與數(shù)據(jù)庫(kù)連接池聯(lián)合使用時(shí)才有著強(qiáng)大的威力,這樣做大大的簡(jiǎn)化了數(shù)據(jù)
47、庫(kù)操作。5.2.2 用戶注冊(cè)登錄模塊的實(shí)現(xiàn)方式 任何的購(gòu)物網(wǎng)站,用戶都是最主要的對(duì)象,用戶模塊的實(shí)現(xiàn)關(guān)系到系統(tǒng)的易用性和被接受程度,本購(gòu)物網(wǎng)站管理系統(tǒng)也不例外。在本系統(tǒng)中用戶主要分為了游客和商城注冊(cè)會(huì)員兩種。這兩種角色分別對(duì)應(yīng)著不同的功能和訪問(wèn)范圍。 下面分類介紹一下本系統(tǒng)所面對(duì)的主要對(duì)象的功能范圍和用戶注冊(cè)登錄模塊的實(shí)現(xiàn)方式。5.2.2.1 會(huì)員與游客的功能范圍 在該系統(tǒng)中,用戶分為游客和商城注冊(cè)會(huì)員兩種: 游客:可以在商城內(nèi)留言商品,查詢商品信息,查看商品評(píng)價(jià),可以比較同類不同品牌商品之間差別,但游客不能下訂單,不能將商品添加到購(gòu)物車,游客也不能對(duì)商品下訂單。 會(huì)員:該購(gòu)物網(wǎng)站會(huì)員可以自由
48、購(gòu)買(mǎi)商品,查看商品信息,查看其他用戶的評(píng)論,并且可以發(fā)表評(píng)論。 圖5-7為用PowerDesigner設(shè)計(jì)的展示游客和商城會(huì)員功能的用例圖:圖5-7 游客與會(huì)員功能用例圖 通過(guò)圖5-7可以很清楚的看到游客和會(huì)員所分別具有的功能模塊??梢钥吹剑挥猩坛堑淖?cè)會(huì)員才擁有下訂單、使用購(gòu)物車和購(gòu)買(mǎi)商品的權(quán)限。在后兩部分中將會(huì)具體說(shuō)明用戶注冊(cè)模塊和用戶登錄模塊的實(shí)現(xiàn)方式。 除此之外,商城的注冊(cè)會(huì)員還可以根據(jù)購(gòu)買(mǎi)商品獲得的積分,獲得一定的等級(jí),可以以一定打折扣購(gòu)買(mǎi)商品,如圖5-8所示。圖5-8 會(huì)員等級(jí)圖示 會(huì)員的等級(jí)劃分方法如表所示:表5-1 商城會(huì)員積分折扣映射表用戶等級(jí)積分設(shè)定折扣率新手01.0初級(jí)
49、5000.95中級(jí)15000.9高級(jí)50000.85終極100000.8 如表5-1所示,商品的折扣情況實(shí)際在后臺(tái)控制,這一模塊在5.2.3管理員功能實(shí)現(xiàn)中將講到。5.2.2.2 用戶注冊(cè)模塊的實(shí)現(xiàn) 用戶注冊(cè)模塊,核心部分就是注冊(cè)驗(yàn)證和服務(wù)器端驗(yàn)證。 用戶注冊(cè)模塊在瀏覽器端的驗(yàn)證主要是通過(guò)JavaScript腳本,在JS腳本中添加驗(yàn)證函數(shù),然后在input輸入框中onBlur屬性中添加checkusername()函數(shù),當(dāng)用戶輸入完用戶名后會(huì)激發(fā)checkusername()函數(shù)來(lái)檢驗(yàn)用戶名是否合法,該校驗(yàn)核心部分代碼如下:function checkusername() var userna
50、me =document.getElementById(u_name).value; if(username.length16) var sp= document.getElementById(sp); sp.innerHTML=用戶名長(zhǎng)度不合要求; return false; 為了安全起見(jiàn),一般要在服務(wù)器端在進(jìn)行一次校驗(yàn),如果需要還會(huì)進(jìn)行框架校驗(yàn),在服務(wù)器端的校驗(yàn)一般是通過(guò)導(dǎo)入xwork JAR包,然后在通過(guò)繼承于ActionSupport類,重寫(xiě)其中的validate()方法來(lái)校驗(yàn),校驗(yàn)部分核心代碼如下:public void validate() if(username=null|.eq
51、uals(username)this.addFieldError(username, 姓名不能為空!);if(username.length()16|username.length()4)this.addFieldError(username, 姓名長(zhǎng)度不符合要求!);if(age100)this.addFieldError(age, 年齡必須在1到100之間!); 密碼和其他部分校驗(yàn)的校驗(yàn)結(jié)果如圖5-9所示:圖5-9 瀏覽器端用戶信息校驗(yàn) 通過(guò)兩次校驗(yàn),數(shù)據(jù)庫(kù)接受的將會(huì)是符合數(shù)據(jù)庫(kù)設(shè)計(jì)的準(zhǔn)確信息,避免了拋出一堆異常代碼給用戶瀏覽器端的情況的出現(xiàn)。5.2.2.3 用戶登錄模塊的實(shí)現(xiàn) 用戶注冊(cè)完
52、成后即可返回首頁(yè)面通過(guò)點(diǎn)擊登錄按鈕進(jìn)行登錄。登錄模塊采用了隱藏DIV,點(diǎn)擊登錄后,將會(huì)激發(fā)displayloginboard()函數(shù),該函數(shù)將控制顯示一個(gè)登錄窗,實(shí)現(xiàn)了懸浮的效果。登錄窗實(shí)際上是一個(gè)form表單,在登錄窗中輸入用戶名和密碼后,點(diǎn)擊登錄按鈕,系統(tǒng)將會(huì)根據(jù)form中的action,在web.xml配置文件中去尋找UserControl.do對(duì)應(yīng)的JAVA校驗(yàn)類,用戶輸入的用戶名和密碼將通過(guò)POST方法傳入到doPost()方法中,在該方法中通過(guò)連接數(shù)據(jù)庫(kù)進(jìn)行校驗(yàn),并且返回登錄信息。如圖5-10所示:圖5-10 登錄后用戶名顯示 在首頁(yè)面底部同時(shí)也將出現(xiàn)懸浮提示框:歡迎用戶XX登錄物
53、美校園。如圖5-11所示:圖5-11懸浮框提示 用戶注冊(cè)與登錄模塊 主要實(shí)現(xiàn)了兩個(gè)功能: 實(shí)現(xiàn)了用戶注冊(cè)校驗(yàn)和數(shù)據(jù)庫(kù)存儲(chǔ)用戶信息。 實(shí)現(xiàn)了用戶登錄時(shí)的信息查詢和校驗(yàn)。 因此,這一環(huán)節(jié)的復(fù)雜度基本體現(xiàn)在雙層校驗(yàn)上,在這里說(shuō)明一種校驗(yàn)方式-漢字校驗(yàn)。 漢字校驗(yàn)的原理是UTF-8編碼中某幾個(gè)區(qū)間內(nèi)編碼為漢字,基本上覆蓋了常用到的可以遇到的2萬(wàn)多個(gè)漢字,漢字在UTF-8中的區(qū)間為u4E00到u9FA5和uF900到uFA2D,漢字校驗(yàn)流程如圖5-12所示:圖5-12 漢字校驗(yàn)狀態(tài)圖 通過(guò)以上代碼可以看到,校驗(yàn)函數(shù)傳進(jìn)的參數(shù)為用戶輸入的字符串,通過(guò)將字符串解析為字符數(shù)組,從而完成了字符校驗(yàn),在實(shí)際應(yīng)用中
54、,通過(guò)類方法調(diào)用此函數(shù),即可完成校驗(yàn)。5.2.3 管理員登錄和其功能范圍的實(shí)現(xiàn) 管理員是網(wǎng)站后臺(tái)的主角,任何網(wǎng)站都需要管理員默默無(wú)聞的維護(hù)著整個(gè)網(wǎng)站的正常運(yùn)行。B2C購(gòu)物網(wǎng)站,商品的添加修改刪除,訂單的管理,用戶信息的管理,廣告系統(tǒng)的管理,留言管理等都需要管理員來(lái)管理。管理員是整個(gè)后臺(tái)的核心部分。5.2.3.1 管理員登錄模塊的實(shí)現(xiàn) 在較有規(guī)模的管理系統(tǒng)中,為了安全起見(jiàn),一般不在前臺(tái)頁(yè)面中顯示出后臺(tái)的管理登陸入口,后臺(tái)管理模塊應(yīng)該是完全獨(dú)立于前臺(tái)頁(yè)面之外的一個(gè)模塊。在該系統(tǒng)中為了便于調(diào)試,在前臺(tái)頁(yè)面底部留下了登錄入口。管理員通過(guò)點(diǎn)擊“后臺(tái)管理”即可連接到后臺(tái)登錄的JSP頁(yè)面,該頁(yè)面為系統(tǒng)中的a
55、dmin/login.jsp。管理員登錄頁(yè)面效果如圖5-13所示:圖5-13 管理員登錄頁(yè)面 管理員用戶名和密碼輸入完畢后,點(diǎn)擊登錄按鈕,tomcat服務(wù)器將會(huì)根據(jù)form表單中聲明的action地址在web.xml中尋找對(duì)應(yīng)的,隨后又會(huì)尋找中對(duì)應(yīng)的處理類地址。在最終的Servlet處理類Control.java在該servlet類中,可以看到,通過(guò)將傳進(jìn)的username和password加入到一個(gè)ManagerModel對(duì)象中,然后將該對(duì)象傳到ManagerDao類中的login方法體中,順利的完成了校驗(yàn)。 該系統(tǒng)的管理員校驗(yàn)方法屬于常規(guī)的校驗(yàn)方法。由于管理員的權(quán)限很大,所以管理員賬號(hào)的安
56、全問(wèn)題也是非常重要。關(guān)鍵數(shù)據(jù)保存時(shí),最好不要以明文的方式保存。各數(shù)據(jù)庫(kù)廠商也提供了一系列的方法來(lái)用于數(shù)據(jù)加密。以MySQL為例,MySQL內(nèi)建函數(shù)中提供了:ENCRYPT(str,salt),ENCODE(str,pass_str),MD5(string),SHA1(string),SHA(string) ,AES_ENCRYPT(string,key_string)這幾種加密方式,供用戶使用。5.2.3.2 管理員功能范圍的實(shí)現(xiàn)方式 一般來(lái)講,在一個(gè)大的管理系統(tǒng)中,管理員角色并非唯一,不同的管理員對(duì)應(yīng)不同的職位或部門(mén),有用特定模塊的管理權(quán)限。還應(yīng)有一個(gè)超級(jí)管理員,該角色具有添加修改刪除其他模
57、塊管理員的權(quán)限。在該系統(tǒng)中管理員功能模塊如圖5-14所示:圖5-14 管理員功能模塊用例圖 管理員登錄后,在主界面上將提示出登錄的管理員的有關(guān)信息,包括:管理員名稱,管理員注冊(cè)時(shí)間,管理員上次登錄時(shí)間,管理員賬戶有效登錄時(shí)間等相關(guān)信息,管理員登錄的首頁(yè)面如圖5-15所示:圖5-15 管理員登錄首頁(yè)面 管理員功能: 商城介紹信息的更改 商品管理包括(商品添加,商品信息更新,商品下架,商品分類管理) 客戶管理包括(查看用戶信息,用戶級(jí)別管理,用戶刪除) 訂單管理包括(查看訂單,搜索訂單,訂單狀態(tài)更新,訂單取消,訂單數(shù)據(jù)分析) 留言管理包括(查看留言,留言回復(fù),留言評(píng)論管理) 廣告管理包括(友情鏈接
58、添加,廣告信息發(fā)布,廣告信息刪除,廣告排序和時(shí)限管理) 支付方式管理包括(在線支付設(shè)置,支付寶設(shè)置,銀行賬號(hào)設(shè)置,貨到付款設(shè)置) 管理員的功能的實(shí)現(xiàn)通過(guò)admin文件夾的多個(gè)JSP頁(yè)面來(lái)實(shí)現(xiàn),每個(gè)頁(yè)面都對(duì)應(yīng)一個(gè)具體的管理員功能,以商品管理為例,在該系統(tǒng)中,商品管理由goodsadd.jsp,goodsupdate.jsp,showgoods.jsp,showsearchgoods.jsp這幾個(gè)頁(yè)面來(lái)完成。分別對(duì)應(yīng)商品的添加、修改、展示、商品檢索功能。其它各部分的實(shí)現(xiàn)方式相同。圖5-16 添加商品界面管理系統(tǒng)中,管理員的功能范圍和權(quán)限控制非常重要,特別是功能范圍,實(shí)際可能遇到的所有查詢功能都要在系統(tǒng)的開(kāi)發(fā)過(guò)程中有所體現(xiàn)。5.3.3.3 管理員管理在后臺(tái)設(shè)置了管理員選項(xiàng),在這里可以添加、修改和刪除管理員信息。圖5-17是管理員添加的頁(yè)面:圖5-17 管理員添加 由于在該系統(tǒng)的設(shè)計(jì)中,沒(méi)有采用超級(jí)管理員來(lái)管理普通管理員,因此,任何管理員都是超級(jí)管理員。 管理員還可以通過(guò)修改管理員信息頁(yè)面來(lái)修改密碼。5.3.3.4 管理員留言回復(fù)功能的實(shí)現(xiàn) 當(dāng)用戶在前臺(tái)頁(yè)面上留言后,管理員在后臺(tái)就可以看到。管理員若需要回復(fù)留言時(shí),點(diǎn)回復(fù)按鈕,即可顯現(xiàn)出一個(gè)textarea文本輸入框,在其中輸入回復(fù)內(nèi)容即可。這一功能是通過(guò)JS來(lái)實(shí)現(xiàn)的,核心代碼如下:
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育學(xué)第七章教學(xué)
- 1.古詩(shī)詞三首
- 周期問(wèn)題PPT(精品)
- 合作使生活之路更寬暢(精品)
- 向量數(shù)乘運(yùn)算及其幾何意義
- 硬筆書(shū)法-第四課時(shí)-基本筆畫(huà)——捺
- 廉潔文化進(jìn)校園課件
- 招投標(biāo)法律制度解析
- 2011備戰(zhàn)高考第三部分 第1節(jié) 識(shí)記文學(xué)常識(shí)1
- 采購(gòu)計(jì)劃與預(yù)算
- 果園機(jī)器人第二次
- 某數(shù)據(jù)庫(kù)公司品牌戰(zhàn)略規(guī)劃課件
- 家電物流培訓(xùn)課件
- 房顫血栓危險(xiǎn)度評(píng)分與出血風(fēng)險(xiǎn)評(píng)估標(biāo)準(zhǔn)
- 糖皮質(zhì)激素的常見(jiàn)副作用(1)