電子產(chǎn)品交易系統(tǒng)網(wǎng)站設(shè)計(jì)_第1頁
電子產(chǎn)品交易系統(tǒng)網(wǎng)站設(shè)計(jì)_第2頁
電子產(chǎn)品交易系統(tǒng)網(wǎng)站設(shè)計(jì)_第3頁
電子產(chǎn)品交易系統(tǒng)網(wǎng)站設(shè)計(jì)_第4頁
電子產(chǎn)品交易系統(tǒng)網(wǎng)站設(shè)計(jì)_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

摘要隨著Internet在中國的迅速發(fā)展,人們?nèi)粘I钪性絹碓蕉嗟厥褂眠@項(xiàng)新的技術(shù)來為自己的工作和學(xué)習(xí)服務(wù)。由于WEB頁面能把文本、圖像、聲音、動畫、視頻等多種媒體信息集于一體,不但使信息的顯示更加生動,而且使信息的瀏覽更為方便,同時(shí)WEB頁面能實(shí)現(xiàn)網(wǎng)上交易平臺、客戶信息反饋方便了企業(yè)與客戶之間信息交流。在網(wǎng)絡(luò)交易日益頻繁的今天,一個(gè)優(yōu)秀的電子交易網(wǎng)站的作用是非常顯著的,作為計(jì)算機(jī)學(xué)院的畢業(yè)生,我們應(yīng)緊跟時(shí)代的步伐,嘗試運(yùn)用所學(xué)知識獨(dú)立設(shè)計(jì)一個(gè)交易網(wǎng)站是非常有意義的。EC_Port(電子商務(wù)網(wǎng)站)電子商務(wù)指利用簡單、快捷、低成本的電子通訊方式,買賣雙方通過網(wǎng)絡(luò)進(jìn)行各種商貿(mào)活動的一種商業(yè)交易模式本次畢業(yè)設(shè)計(jì)的題目就是設(shè)計(jì)并且實(shí)現(xiàn)一個(gè)基于web技術(shù)的在線電子產(chǎn)品交易系統(tǒng)網(wǎng)站。本系統(tǒng)主要以j2EE作為開發(fā)基礎(chǔ),使用了struts+hibernate+mysql等多種協(xié)議或技術(shù),以Macromedia公司的Dreamweaver作為開發(fā)工具和界面美化工具,在功能方面也基本實(shí)現(xiàn)了電子商務(wù)網(wǎng)站應(yīng)有的幾個(gè)基本功能模塊包括:管理員的登錄,管理和維護(hù);用戶注冊、登錄、注銷,個(gè)人信息的查詢、修改;商品管理,購物車管理,訂單管理,用戶反饋,該系統(tǒng)界面簡單、操作容易,容易維護(hù)。關(guān)鍵詞:j2EE,struts,hibernate,mysql,tomcat.

Abstract

WiththeInternetrapingdevelopmentinChina,moreandmorepeopleusethisnewtechnologyfortheirownworkandlearningserviceseveryday.AsWEBpagescantext,images,sound,animation,videoandothermulti-Setinthekindofmediainformationintegration,informationisdisplayednotonlymorevivid,butalsomoreconvenientinformationhere,WEBpagetoachieveonlinetradingplatform,customerfeedbacktofacilitatethebusinessandtheexchangeofinformationbetweencustomers,increasingthenetworktransactionsFrequenttoday,anexcellentsiteforelectronictransactionsandtheroleisverysignificant,astheComputerCollegegraduates,weshouldkeepupwiththepaceofthetimes,tryingtousetheknowledgetodesignaseparatetransactionsiteisverymeaningful.EC_Port(e-commercesites)e-commercereferstotheuseofsimple,fast,low-costelectronicmeansofcommunication,bothbuyersandsellersthroughtheInternetforvariousbusinessactivitiesofabusinesstransactionsofthisgraduationprojectisthesubjectofdesignandrealizationofaweb-basedtechnologyElectronicproductsonlinetradingportal.Thissystemismainlytoj2EEasabasisforthedevelopment,usethestruts+hibernate+mysql,andotheragreementsortechnologytoMacromedia'sDreamweaverasthedevelopmenttoolsandinterfaceslandscapingtools.Alsointhebasicfunctionoftherealizationofelectronicportalshouldhaveafewbasicmodulesinclude:administratorlogin,managementandmaintenance;userstoregister,login,write-offs,personalinformationenquiries,amendmentstotheCommodityManagement,themanagementCart,Ordermanagement,theuserfeedback;interfaceofthesystemsimple,easytouse,easytomaintain.

Keywords:j2EE;struts;hibernate;Dreamweaver;mysql;tomcat;

目錄摘要 1Abstract 2目錄 31緒論 52開發(fā)環(huán)境及開發(fā)工具的介紹 62.1系統(tǒng)運(yùn)行環(huán)境 62.2Java語言及JavaBeans組件技術(shù)概述 62.2.1Java語言概述 62.2.2JavaBeans組件技術(shù)概述 62.3JavaScript概述 72.4JSP概述 72.5J2EE概述 82.6關(guān)于Struts 102.6.1Struts簡介 102.6.2Struts工作原理 102.7mysql 102.7.1mysql的特點(diǎn) 112.8Tomcat安裝及配置 123hibernate數(shù)據(jù)庫編程 133.1hibernate簡介 133.2使用Hibernate的好處 134電子產(chǎn)品交易系統(tǒng)網(wǎng)站需求分析 154.1系統(tǒng)界面需求 154.2系統(tǒng)模塊需求 154.3系統(tǒng)角色及其功能需求分析 155電子產(chǎn)品交易系統(tǒng)網(wǎng)站總體設(shè)計(jì) 175.1設(shè)計(jì)思想概述 175.2數(shù)據(jù)庫設(shè)計(jì) 185.2.1數(shù)據(jù)庫表的E-R圖 205.3系統(tǒng)的類設(shè)計(jì) 265.4系統(tǒng)的用例圖 275.5總體功能需求設(shè)計(jì) 296電子產(chǎn)品交易系統(tǒng)網(wǎng)站的詳細(xì)設(shè)計(jì) 306.1系統(tǒng)中我所做的主要模塊及具體實(shí)現(xiàn) 306.1.1用戶管理模塊 306.1.2.定單模塊 346.1.3.留言板模塊 397EC_Port系統(tǒng)的測試 42總結(jié) 44致謝 45參考文獻(xiàn) 46附錄一:英文資料原文 47附錄二:英文資料譯文 59

1緒論由于網(wǎng)上交易的自由,快捷,使得它成為網(wǎng)絡(luò)用戶最常使用的、最熱門的網(wǎng)絡(luò)服務(wù)之一。本系統(tǒng)的目的就是為用戶提供一個(gè)簡易的網(wǎng)上交易系統(tǒng)。利用本系統(tǒng),用戶可以自由地瀏覽商品,注冊成為網(wǎng)站會員,選擇商品生成訂單,實(shí)現(xiàn)網(wǎng)上購物,本系統(tǒng)遵循軟件j2EE標(biāo)準(zhǔn),并按照軟件規(guī)定地流程進(jìn)行項(xiàng)目地開發(fā)。課題特點(diǎn)及意義:1.特點(diǎn):本系統(tǒng)是運(yùn)用JSP+JavaBeans+struts+tomcat技術(shù)開發(fā)的,通過hibernate數(shù)據(jù)庫訪問技術(shù)與后臺mysql數(shù)據(jù)庫相連,實(shí)現(xiàn)信息的動態(tài)錄入、動態(tài)查詢以及動態(tài)統(tǒng)計(jì)。2.意義:①開發(fā)Web站點(diǎn),是一項(xiàng)復(fù)雜、繁重的工作,需要多方面的知識。此次通過設(shè)計(jì)網(wǎng)上交易系統(tǒng),使我接觸到許多基于java語言的WEB網(wǎng)絡(luò)開發(fā)方面的知識,包括HTML語言,CSS級聯(lián)樣式表,客戶端開發(fā)語言JavaScript,MVC分層體系結(jié)構(gòu),支持MVC架構(gòu)的struts框架,開源服務(wù)器Tomcat,mysql數(shù)據(jù)庫,服務(wù)器端開發(fā)語言JSP等,這些語言(或技術(shù))擴(kuò)展了我的知識面,也使我在制作的過程中對它們的特點(diǎn),應(yīng)用方向等有了基本的了解,并在實(shí)際的應(yīng)用中大致明白如何將它們?nèi)诤线\(yùn)用,以開發(fā)出界面美觀,功能強(qiáng)大的Web站點(diǎn)來。②另外,通過設(shè)計(jì)該系統(tǒng),讓我了解了開發(fā)一個(gè)簡單的應(yīng)用系統(tǒng)的基本流程,以及設(shè)計(jì)思想對系統(tǒng)的重要性。由于時(shí)間短促,加之本人水平有限,如有錯誤敬請批評指正。2開發(fā)環(huán)境及開發(fā)工具的介紹2.1系統(tǒng)運(yùn)行環(huán)境1.硬件環(huán)境處理器:IntelPentium166MX或更高內(nèi)存:32MB或更大容量硬盤空間:1GB顯卡:SVGA顯示適配器2.軟件環(huán)境操作系統(tǒng):Windows2000及以上操作系統(tǒng)(推薦),也可以使用SunSolaris等Linux操作系統(tǒng)Web服務(wù)器:Tomcat4.1.2或以上版本數(shù)據(jù)庫:MySQL數(shù)據(jù)庫(推薦),也可以使Oracle8i/Oracle9i數(shù)據(jù)庫客戶端:IE5.0或以上版本開發(fā)語言:JSP、Java2.2Java語言及JavaBeans組件技術(shù)概述2.2.1Java語言概述 Java是由JamesGosling,PatrickNaughton,ChrisWorth,EdFrank和MikeSheridan于1991年在SunMicrosystems公司設(shè)計(jì)出來的。Java和C++有著緊密的聯(lián)系,而C++則是從C語言派生而來的,所以Java語言繼承了這兩種語言的大部分特性。Java的語法是從C繼承的,Java許多面向?qū)ο蟮奶匦詣t受到C++的影響。Internet使Java成為網(wǎng)絡(luò)上最流行的編程語言。2.2.2JavaBeans組件技術(shù)概述JavaBeans描述了Java的軟件組件模型,這個(gè)模型被設(shè)計(jì)成使第三方廠家可以生成和銷售能夠集成到其他開發(fā)廠家或者其他開發(fā)人員開發(fā)的軟件產(chǎn)品的Java組件。應(yīng)用程序開發(fā)者可以從開發(fā)廠家購買現(xiàn)成的JavaBeans組件,拖放到集成開發(fā)環(huán)境的工具箱中,再將其應(yīng)用于應(yīng)用軟件的開發(fā),對于JavaBeans組件的屬性、行為可以進(jìn)行必要的修改、測試和修訂而不必重新編寫和編譯程序。在JavaBeans模型中,JavaBeans組件可以被修改或者與其他JavaBeans組件組合以生成新的JavaBeans組件或完整的Java應(yīng)用程序。Java應(yīng)用程序在運(yùn)行時(shí),最終用戶也可以通過JavaBeans組件設(shè)計(jì)者或應(yīng)用程序開發(fā)者所建立的屬性存取方法(setXXX方法和getXXX方法)修改JavaBeans組件的屬性。JavaBeans組件模型使得軟件可以設(shè)計(jì)成便于修改和便于升級。每個(gè)JavaBeans組件都包含了一組屬性、操作和事件處理器。將若干個(gè)JavaBeans組件組合起來就可以生成設(shè)計(jì)者、開發(fā)者所需要的特定運(yùn)行行為,JavaBeans組件存放于容器或工具庫中,供開發(fā)者開發(fā)應(yīng)用程序。JavaBeans就是一個(gè)可以復(fù)用軟件模型。JavaBeans在某個(gè)容器中運(yùn)行,提供具體的操作性能。JavaBeans是建立應(yīng)用程序的建筑模塊。大多數(shù)常用的JavaBeans通常是中小型控制程序,但我們也可以編寫包裝整個(gè)應(yīng)用程序運(yùn)行邏輯的JavaBeans組件,并將其嵌入到復(fù)合文檔中,以便實(shí)現(xiàn)更為復(fù)雜的功能。一般來說JavaBeans可以表示為簡單的GUI組件,可以是按鈕組件、游標(biāo)、菜單等等。這些簡單的JavaBeans組件提供了告訴用戶什么是JavaBeans的直觀方法,但我們也可以編寫一些不可見的JavaBeans,用于接受事件和在幕后工作,例如訪問數(shù)據(jù)庫,執(zhí)行查詢操作的JavaBeans,它們在運(yùn)行時(shí)刻不需要任何可視的界面。在JSP程序中所用的JavaBeans一般以不可見的組件為主??梢姷腏avaBeans一般用于編寫Applet程序或者Java應(yīng)用程序。2.3JavaScript概述JavaScript是一種基于對象(Object)和事件驅(qū)動(EventDriven)并具有安全性能的腳本語言。使用它的目的是與HTML超文本標(biāo)記語言、Java腳本語言(Java小程序)一起實(shí)現(xiàn)在一個(gè)Web頁面中鏈接多個(gè)對象,與Web客戶交互作用。從而可以開發(fā)客戶端的應(yīng)用程序等。它是通過嵌入或調(diào)入在標(biāo)準(zhǔn)的HTML語言中實(shí)現(xiàn)的。它的出現(xiàn)彌補(bǔ)了HTML語言的缺陷,它是Java與HTML折衷的選擇,具有以下幾個(gè)基本特點(diǎn):①是一種腳本編寫語言②基于對象的語言③簡單性④安全性2.4JSP概述JSP是由Sun微系統(tǒng)公司(SunMicrosystems)倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),其在動態(tài)網(wǎng)頁的建設(shè)中有其強(qiáng)大而特別的功能。目前在國外的眾多網(wǎng)站特別是涉及電子商務(wù)的網(wǎng)站中,已經(jīng)大量使用了JSP技術(shù)。JSP(JavaServerPages,服務(wù)器端動態(tài)網(wǎng)頁)既然名為“服務(wù)器端”動態(tài)網(wǎng)頁,可想而知,JSP必定是在“服務(wù)器”建立的動態(tài)網(wǎng)頁。更明確地說,JSP是能在WebServer端整合Java語言至HTML網(wǎng)頁的環(huán)境中,利用HTML網(wǎng)頁內(nèi)含的Java程序代碼取代原有的CGI的程序,以便執(zhí)行原有CGI的功能。JSP的運(yùn)作模式圖2.1JSP的運(yùn)作模式由于JSP放置在Web服務(wù)器上,它在解析使用者由表單(Form)傳送過來的字段數(shù)據(jù)后,接著通過適當(dāng)?shù)倪壿嬌蓸?biāo)準(zhǔn)HTML文件,然后傳給客戶端,使用者看到的是一般符合HTML格式的文件內(nèi)容。JSP在設(shè)計(jì)時(shí),充分考慮到應(yīng)用平臺的無關(guān)性,因此JSP完全與平臺無關(guān),無論使用者使用的是哪一種平臺下的瀏覽器,皆能欣賞由JSP產(chǎn)生的網(wǎng)頁內(nèi)容。JSP的優(yōu)點(diǎn)JSP與ASP、PHP相比有下列優(yōu)點(diǎn):①將內(nèi)容的生成和顯示進(jìn)行分離:②強(qiáng)調(diào)可重用的組件:③采用標(biāo)識簡化頁面開發(fā):JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴(kuò)展到能夠支持企業(yè)級的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java2EE(企業(yè)版體系結(jié)構(gòu))的一個(gè)組成部分,JSP技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。④健壯性與安全性:⑤良好的移植性作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn)。隨著越來越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,可以使用自己所選擇的服務(wù)器和工具,而且更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。2.5J2EE概述(Java2PlatformEnterpriseEdition)是使用Java技術(shù)開發(fā)企業(yè)級應(yīng)用的一種事實(shí)上的工業(yè)標(biāo)準(zhǔn)(Sun公司出于其自身利益的考慮,至今沒有將Java及其相關(guān)技術(shù)納入標(biāo)準(zhǔn)化組織的體系),它是Java技術(shù)不斷適應(yīng)和促進(jìn)企業(yè)級應(yīng)用過程中的產(chǎn)物。目前,Java平臺有三個(gè)版本:適用于小型設(shè)備和智能卡的J2ME(Java2PlatformMicroEdition)、適用于桌面系統(tǒng)的J2SE(Java2PlatformStandardEdition)和適用于企業(yè)級應(yīng)用的J2EE(Java2PlatformEnterpriseEdition)。Sun推出J2EE的目的是為了克服傳統(tǒng)Client/Server模式的弊病,迎合Browser/Server架構(gòu)的潮流,為應(yīng)用Java技術(shù)開發(fā)服務(wù)器端應(yīng)用提供一個(gè)平臺獨(dú)立的、可移植的、多用戶的、安全的和基于標(biāo)準(zhǔn)的企業(yè)級平臺,從而簡化企業(yè)應(yīng)用的開發(fā)、管理和部署。J2EE是一個(gè)標(biāo)準(zhǔn),而不是一個(gè)現(xiàn)成的產(chǎn)品。各個(gè)平臺開發(fā)商按照J(rèn)2EE規(guī)范分別開發(fā)了不同的J2EE應(yīng)用服務(wù)器,J2EE應(yīng)用服務(wù)器是J2EE企業(yè)級應(yīng)用的部署平臺。由于它們都遵循了J2EE規(guī)范,因此,使用J2EE技術(shù)開發(fā)的企業(yè)級應(yīng)用可以部署在各種J2EE應(yīng)用服務(wù)器上。為了推廣并規(guī)范化使用J2EE架構(gòu)企業(yè)級應(yīng)用的體系架構(gòu),Sun同時(shí)給出了一個(gè)建議性的J2EE應(yīng)用設(shè)計(jì)模型:J2EEBlueprints。J2EEBlueprints提供了實(shí)施J2EE企業(yè)級應(yīng)用的體系架構(gòu)、設(shè)計(jì)模式和相關(guān)的代碼,通過應(yīng)用J2EEBlueprints所描述的體系模型,能夠部分簡化架構(gòu)企業(yè)級應(yīng)用這項(xiàng)復(fù)雜的工作。J2EEBlueprints是開發(fā)人員設(shè)計(jì)和優(yōu)化J2EE組件的基本原則,同時(shí)為圍繞開發(fā)工作進(jìn)行職能分工給出了指導(dǎo)性策略,以幫助應(yīng)用開發(fā)設(shè)計(jì)人員合理地分配技術(shù)資源。 J2EE的優(yōu)勢主要有以下幾點(diǎn):1.高效的開發(fā):J2EE允許公司把一些通用的、很繁瑣的服務(wù)端任務(wù)交給中間件供應(yīng)商去完成這樣開發(fā)人員可以集中精力在如何創(chuàng)建商業(yè)邏輯上,相應(yīng)地縮短了開發(fā)時(shí)間。高級中間件供應(yīng)商提供以下這些復(fù)雜的中間件服務(wù):狀態(tài)管理服務(wù)--讓開發(fā)人員寫更少的代碼,不用關(guān)心如何管理狀態(tài),這樣能夠更快地完成程序開發(fā)。2.持續(xù)性服務(wù):讓開發(fā)人員不用對數(shù)據(jù)訪問邏輯進(jìn)行編碼就能編寫應(yīng)用程序,能生成更輕巧,與數(shù)據(jù)庫無關(guān)的應(yīng)用程序,這種應(yīng)用程序更易于開發(fā)與維護(hù)。分布式共享數(shù)據(jù)對象CACHE服務(wù),讓開發(fā)人員編制高性能的系統(tǒng),極大提高整體部署的伸縮性。3.支持異構(gòu)環(huán)境:J2EE能夠開發(fā)部署在異構(gòu)環(huán)境中的可移植程序?;贘2EE的應(yīng)用程序不依賴任何特定操作系統(tǒng)、中間件、硬件。因此設(shè)計(jì)合理的基于J2EE的程序只需開發(fā)一次就可部署到各種平臺。這在典型的異構(gòu)企業(yè)計(jì)算環(huán)境中是十分關(guān)鍵的。J2EE標(biāo)準(zhǔn)也允許客戶訂購與J2EE兼容的第三方的現(xiàn)成的組件,把他們部署到異構(gòu)環(huán)境中,節(jié)省了由自己制訂整個(gè)方案所需的費(fèi)用。4.可伸縮性:企業(yè)必須要選擇一種服務(wù)器端平臺,這種平臺應(yīng)能提供極佳的可伸縮性去滿足那些在他們系統(tǒng)上進(jìn)行商業(yè)運(yùn)作的大批新客戶?;贘2EE平臺的應(yīng)用程序可被部署到各種操作系統(tǒng)上。例如可被部署到高端UNIX與大型機(jī)系統(tǒng),這種系統(tǒng)單機(jī)可支持64至256個(gè)處理器。(這是NT服務(wù)器所望塵莫及的)J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負(fù)載平衡策略。能消除系統(tǒng)中的瓶頸,允許多臺服務(wù)器集成部署。這種部署可達(dá)數(shù)千個(gè)處理器,實(shí)現(xiàn)可高度伸縮的系統(tǒng),滿足未來商業(yè)應(yīng)用的需要。5.穩(wěn)定的可用性:一個(gè)服務(wù)器端平臺必須能全天候運(yùn)轉(zhuǎn)以滿足公司客戶、合作伙伴的需要。這是實(shí)時(shí)性很強(qiáng)商業(yè)系統(tǒng)理想的選擇。2.6關(guān)于Struts2.6.1Struts簡介Struts已逐步越來越多運(yùn)用于商業(yè)軟件,是一種非常優(yōu)秀的J2EEMVC實(shí)現(xiàn)方式。Struts用JavaServlet/JavaServerPages技術(shù),開發(fā)Web應(yīng)用程序的開放源碼的framework。Struts有如下的主要功能:1.包含一個(gè)controllerservlet,能將用戶的請求發(fā)送到相應(yīng)的Action對象。2.JSP自由tag庫,并且在controllerservlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)用。3.提供了一系列實(shí)用對象:XML處理、通過JavareflectionAPIs自動處理JavaBeans屬性、國際化的提示和消息。Struts項(xiàng)目的目標(biāo)是為創(chuàng)建Javaweb應(yīng)用提供一個(gè)開放源代framework。Strutsframework的內(nèi)核是基于例如JavaServlets,JavaBeans,ResourceBundles,和XML,以及各種JakartaCommons包的標(biāo)準(zhǔn)技術(shù)的靈活的控制層。Struts提供了它自身的控制器組件,并整合了其他技術(shù),以提供模型和視圖。Struts已逐步越來越多運(yùn)用于商業(yè)軟件,是一種非常優(yōu)秀的J2EEMVC實(shí)現(xiàn)方式。2.6.2Struts工作原理MVC即Model-View-Controller的縮寫,是一種常用的設(shè)計(jì)模式。MVC減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化,MVC可以讓個(gè)邏輯很清晰,這種思想和思維和人的思維很接近,很容易被理解。MVC的工作原理如下圖所示:Struts是MVC的一種實(shí)現(xiàn),它將Servlet和JSP標(biāo)記(屬于J2EE規(guī)范)用作實(shí)現(xiàn)的一部分。Struts繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。Struts的工作原理,如下圖所示:2.7mysql數(shù)據(jù)庫(Database)是一系列信息資源的集合。在一個(gè)數(shù)據(jù)庫中,與一個(gè)項(xiàng)目有關(guān)的所有信息都可以叫做一條記錄(Record)。每一條記錄都是由一系列的字段(Field)組成的。一系列記錄的集合就構(gòu)成了數(shù)據(jù)表格(Table)。對于一個(gè)簡單的“平面文件”的數(shù)據(jù)庫來說,它僅包含了一個(gè)數(shù)據(jù)表格,而對一個(gè)“關(guān)系型”數(shù)據(jù)庫來說,它卻包含兩個(gè)或兩個(gè)以上的數(shù)據(jù)表格,表格的各字段之間存在這一種或多種關(guān)系(有時(shí)可以把這種關(guān)系叫做“鏈接”)。2.7.1mysql的特點(diǎn)MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)庫管理。

由于MySQL是開放源代碼的,因此任何人都可以在GeneralPublicLicense的許可下下載并根據(jù)個(gè)性化的需要對其進(jìn)行修改。MySQL因?yàn)槠渌俣?、可靠性和適應(yīng)性而備受關(guān)注。大多數(shù)人都認(rèn)為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇。它使用系統(tǒng)核心提供的多線程機(jī)制提供完全的多線程運(yùn)行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等編程語言的編程接口(APIs),支持多種字段類型并且提供了完整的操作符支持查詢中的SELECT和WHERE操作。2.4.2mysql的安裝和配置(部分截圖)安裝時(shí)一般采用默認(rèn)路徑:為了支持中文,在下面的列表框中學(xué)者jb2312(切記)2.8Tomcat安裝及配置直接運(yùn)行下載的apache-tomcat-5.5.17.exe文件,按照一般的Windows程序安裝步驟即可安裝好Tomcat,安裝時(shí)它會自動尋找JDK的位置。安裝過程中需要選擇一個(gè)文件夾作為Tomcat的安裝目錄。我選擇安裝的位置是C:\Tomcat5.5。安裝完成以后,添加一個(gè)Tomcat的環(huán)境變量,添加方法和JDK的環(huán)境變量的添加方法相同,設(shè)置變量名為TOMCAT_HOME,變量值為C:\Tomcat5.5。設(shè)置完畢后就可以運(yùn)行Tomcat服務(wù)器了。Tomcat成功啟動后,在瀏覽器中輸入http;//localhost;8080/,如果出現(xiàn)歡迎界面,則說明Tomcat安裝成功。歡迎界面如圖2所示。圖2Tomcat歡迎界面

3hibernate數(shù)據(jù)庫編程3.1hibernate簡介在B/S項(xiàng)目的開發(fā)中,和數(shù)據(jù)庫的交互式不可避免的,J2EE的規(guī)范中提供了JDBC的接口來操作數(shù)據(jù)庫,對于JDBC,開發(fā)人員可以獲取數(shù)據(jù)庫連接,然后向數(shù)據(jù)庫發(fā)送SQL語句,并返回?cái)?shù)據(jù)庫操作的結(jié)果集,然后封裝成對象返回給上層的應(yīng)用程序。這就造成開發(fā)人員不但要求能夠編寫程序,熟悉業(yè)務(wù)邏輯,還要求開發(fā)人員同時(shí)能夠擔(dān)任DBA,對開發(fā)人員的要求很高;同時(shí),當(dāng)引入新的項(xiàng)目時(shí),很多地方必須廢棄,因?yàn)槲覀兊拇a中不光是業(yè)務(wù)邏輯,其中也嵌入了許多和底層有關(guān)的一些SQL代碼;另外這些嵌入在代碼中的SQL語句也影響了我們程序的可測試性,我們在對代碼進(jìn)行調(diào)試的時(shí)候,既要測試代碼,同時(shí)我們還要測試SQL語句。為了解決這些問題,一種ORM系統(tǒng)誕生了。ORM是ObjectRelationalMapping的簡寫,顧名思義,就是把面向?qū)ο蟮哪P陀成涞疥P(guān)系模型,我們在編程的時(shí)候可以直接使用對象,而ORM可以將我們的對象和數(shù)據(jù)庫中的數(shù)據(jù)聯(lián)系起來,從而能將實(shí)體的變動聯(lián)系到數(shù)據(jù)庫的變動。Hibernate就是ORM系統(tǒng)中的一種,也是非常成功的一種,能實(shí)現(xiàn)ORM這個(gè)功能的框架有很多,Hibernate可以說是這些框架中最流行、最受開發(fā)者關(guān)注的,甚至連JBoss公司也把它吸收進(jìn)來,利用它在自己的項(xiàng)目中實(shí)現(xiàn)ORM功能。3.2使用Hibernate的好處1、Hibernate是JDBC的輕量級的對象封裝,它是一個(gè)獨(dú)立的對象持久層框架,和AppServer,和EJB沒有什么必然的聯(lián)系。Hibernate可以用在任何JDBC可以使用的場合,例如Java應(yīng)用程序的數(shù)據(jù)庫訪問代碼,DAO接口的實(shí)現(xiàn)類,甚至可以是BMP(Bean-Managed

Persistence)里面的訪問數(shù)據(jù)庫的代碼。從這個(gè)意義上來說,Hibernate和EB不是一個(gè)范疇的東西,也不存在非此即彼的關(guān)系。2、Hibernate是一個(gè)和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動,和數(shù)據(jù)庫都有一定的關(guān)系,但是和使用它的Java程序,和ApplicationServer沒有任何關(guān)系,也不存在兼容性問題。3、Hibernate不能用來直接和EntityBean做對比,只有放在整個(gè)J2EE項(xiàng)目的框架中才能比較。并且即使是放在軟件整體框架中來看,Hibernate也是做為JDBC的替代者出現(xiàn)的,而不是EntityBean的替代者出現(xiàn)的。4、由于是對JDBC的輕易級封閉,內(nèi)存消耗少,最快的運(yùn)行效率。5、開發(fā)效率高,Eclipse、JBuilder等主流JAVA集成開發(fā)環(huán)境對Hibernate有很好的支持,在大的項(xiàng)目,特別是持久層關(guān)系映射很復(fù)雜的情況下,Hibernate效率高的驚人。6、分布式,安全檢查,集群,負(fù)載均衡的支持。3.3Hibernate的工作原理Hibernate的工作就是為Object和Ralational之間提供一個(gè)映射,其工作流程如下面的圖所示。1.

啟動Hibernate,如果在系統(tǒng)中添加Hibernate的支持,此處加載由系統(tǒng)自動完成。2.

讀取hibernate.cfg.xml或者perties文件的配置信息,并將其加載為實(shí)例。3.

構(gòu)建SessionFactory實(shí)例(包含二級緩存)。4.

從SessionFactory中取得Session對象,從而可以調(diào)用其方法,對數(shù)據(jù)庫進(jìn)行操作,實(shí)現(xiàn)ORM的功能。Hibernate可以通過一個(gè)XML的mapping文件把一個(gè)POJO(Plainoldjavaobject)和數(shù)據(jù)庫中的表對應(yīng)起來,在這個(gè)XML文件(一般命名為*.hbm.xml)中,我們可以配置好Object和數(shù)據(jù)庫中標(biāo)的映射關(guān)系,然后把這個(gè)mapping加入到hibernate.cfg.xml中,這樣Hibernate在啟動時(shí)就可以加載這些mapping,并可以根據(jù)配置文件對對象實(shí)現(xiàn)自動的加載,并且可以對這些Object實(shí)習(xí)自動的維護(hù)。Hibernate還提供查詢語句(HQL)供應(yīng)用程序使用,Hibernate對數(shù)據(jù)訪問實(shí)現(xiàn)封裝,還可以對查詢語句的發(fā)送實(shí)現(xiàn)管理,達(dá)到優(yōu)化的目的,能夠有效減少數(shù)據(jù)庫的訪問頻率。4電子產(chǎn)品交易系統(tǒng)網(wǎng)站需求分析4.1系統(tǒng)界面需求系統(tǒng)的初始界面網(wǎng)站首頁,列出當(dāng)前商品列表,用戶可以瀏覽和檢索商品但不能做其他操作,當(dāng)用戶注冊后從新登陸后就可以進(jìn)行購物,用戶登錄流程如圖4.1所示: 圖4.14.2系統(tǒng)模塊需求本系統(tǒng)實(shí)現(xiàn)了一個(gè)在線電子產(chǎn)品交易所具有的基本功能,包括用戶注冊、用戶登錄、查找商品、提交訂單購買商品,個(gè)人資料修改、提交留言,管理員的登錄,管理員管理操作等……。劃分模塊如下:用戶模塊購物車模塊訂單模塊管理員模塊用戶反饋商品管理4.3系統(tǒng)角色及其功能需求分析1.EC_Port系統(tǒng)應(yīng)具有4個(gè)角色:(1).注冊用戶(2).超級管理員(3)普通管理員(4).普通的網(wǎng)站瀏覽者(即游客)2.系統(tǒng)角色的功能分析1、普通管理員應(yīng)該具有的功能(1).產(chǎn)品管理包括網(wǎng)數(shù)據(jù)庫中增加商品,修改商品的價(jià)格,數(shù)量,狀態(tài)等屬性….(2).對用戶的管理包括添加新用戶、修改用戶密碼、刪除用戶. (3)對用戶訂單的管理,進(jìn)行發(fā)貨,確認(rèn)訂單有效性……(4)對用戶留言的管理………。2、超級管理員應(yīng)具有的功能超級管理員可以管理普通管理員,其權(quán)限最高,除了具有普通管理員的用戶管理,訂單管理以外還有管理普通管理員的權(quán)限。 3、普通用戶網(wǎng)站的普通瀏覽者(即游客)只能瀏覽商品。4、注冊應(yīng)具有的功能普通瀏覽者只要注冊為網(wǎng)站用戶后,獲得自己的帳號,設(shè)置自己的密碼就具有以下功能:登錄,登出,向購物車中添加商品,生成并提交訂單。添加或修改個(gè)人明細(xì)資料。

5電子產(chǎn)品交易系統(tǒng)網(wǎng)站總體設(shè)計(jì)5.1設(shè)計(jì)思想概述本電子產(chǎn)品交易系統(tǒng)是基于B/s架構(gòu)下的多層結(jié)構(gòu)應(yīng)用系統(tǒng)。它是對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn),形成所謂三層(3-tier)結(jié)構(gòu)。一個(gè)三層架構(gòu)的應(yīng)用程序由三部分組成,這三部分各自分布在網(wǎng)絡(luò)中的不同地方。這三個(gè)部分分別是:工作站或表示層接口、事務(wù)邏輯、數(shù)據(jù)庫以及與其相關(guān)的程序設(shè)計(jì)。在一個(gè)典型的三層架構(gòu)應(yīng)用程序中,應(yīng)用程序的用戶工作站包括提供圖形用戶界面(GUI)的程序設(shè)計(jì)和具體的應(yīng)用程序入口表格或交互式窗口。事務(wù)邏輯處在局域網(wǎng)(LAN)服務(wù)器或其他共享主機(jī)上,它作為響應(yīng)工作站所發(fā)出客戶請求的服務(wù)器,而相對于處于大型機(jī)的第三層它是作為客戶端,并且決定需要什么數(shù)據(jù)以及數(shù)據(jù)存儲在哪里。第三層包括數(shù)據(jù)庫以及處理讀寫以及訪問數(shù)據(jù)庫的程序。然而應(yīng)用程序的設(shè)計(jì)可能比這個(gè)架構(gòu)要復(fù)雜,對于大型程序來說,這個(gè)三層模式是一種比較簡便的考慮方法。這種應(yīng)用程序的設(shè)計(jì)使用客戶/服務(wù)器模式,各層可以同時(shí)開發(fā),并且可以由不同的成員組用不同的語言來開發(fā)。因?yàn)楦鱾€(gè)層次的開發(fā)不會影響其他層次,所以這種模型對于進(jìn)一步開發(fā)軟件是很方便的。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本(TCO)。以目前的技術(shù)看,局域網(wǎng)建立B/S結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用,并通過Internet/Intranet模式下數(shù)據(jù)庫應(yīng)用,相對易于把握、成本也是較低的。它是一次性到位的開發(fā),能實(shí)現(xiàn)不同的人員,從不同的地點(diǎn),以不同的接入方式(比如LAN,WAN,Internet/Intranet等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護(hù)數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全。特別是在JAVA這樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)管理軟件更是方便、快捷、高效。如圖5.1圖5.1 在數(shù)據(jù)庫層,該系統(tǒng)使用開源的mysql數(shù)據(jù)庫,持久層用到Hibernate技術(shù),業(yè)務(wù)邏輯層用普通javabean實(shí)現(xiàn),表述層運(yùn)用基于struts的MVC設(shè)計(jì)模式。5.2數(shù)據(jù)庫設(shè)計(jì)下面列出了設(shè)計(jì)過程中所用到的數(shù)據(jù)庫表及其結(jié)構(gòu):e_order表用來保存客戶的訂單信息,表如圖5.2.1:e_order列名類型長度描述orderidint11訂單IDtotalpriceNUMBER16總價(jià)錢orderstateNUMBER1訂單狀態(tài)payinfoDATE付款方式CreatetimeDATE創(chuàng)建日期useridVARCHAR220用戶IDUser_item_idNUMBER8用戶明細(xì)ID 圖5.2.1e_order_item表用來保存客戶訂單中的訂單項(xiàng)信息,表圖5.2.2:e_order_item列名類型長度描述order_item_idNUMBER16訂單條目IDProductidNUMBER16商品對象IDOrderidVARCHAR220訂單對象IDqualityNUMBER8數(shù)量numNUMBER8商品數(shù)量 圖5.2.23.e_user表用來保存用戶個(gè)人信息,表圖5.2.3:e_user列名類型長度描述user_idint11用戶IDusernamevarchar30用戶namepasswordvarchar15用戶密碼 圖5.2.3e_user_item表用來保存用戶個(gè)人明細(xì),表圖5.2.4:e_user_item列名類型長度描述User_item_idint11用戶IDItem_namevarchar30用戶nameItem_addressvarchar15用戶密碼Item_postcodevarchar20郵編Item_officephvarchar50辦公室電話Item_mobilephvarchar20手機(jī)Item_emailvarchar20電郵useridInt12用戶Id 圖5.2.4e_product表用來保存商品,表圖5.2.5:e_product列名類型長度描述productidint11產(chǎn)品modlevarchar30產(chǎn)品型號namevarchar15品牌名companyvarchar20出品公司weightdouble50產(chǎn)品重量pricedouble20價(jià)格statevarchar20產(chǎn)品狀態(tài)createtimedate出廠日期CatalogidInt10產(chǎn)品類型descriptionvarchar1000產(chǎn)品描述 圖5.2.5e_catalog表用來保存商品類型,表圖5.2.6:e_catalog列名類型長度描述catalogidint11類型IDcaatlognamevarchar30類型名descriptionvarchar100描述 圖5.2.6e_module表用來保存權(quán)限信息,表圖5.2.7:e_module列名類型長度描述Module_idint11權(quán)限IDModule_namevarchar30權(quán)限名 圖5.2.7e_admin表用來保存管理員,表圖5.2.8:e_admin列名類型長度描述Admin_idint11類型IDAdmin_namevarchar30類型名passwordvarchar100描述TelVarchar20電話emailvarchar20電郵 圖5.2.8e_admin_rights表用來保存管理員權(quán)限,表圖5.2.9:e_admin列名類型長度描述admin_idint11管理員IDMod_idint30權(quán)限ID 圖5.2.9 5.2.1數(shù)據(jù)庫表的E-R圖e_user表保存了用戶的基本信息:姓名(name)和密碼(password),其子表由e_user_item(用戶明細(xì)),它保存了用戶的其他信息如地址等聯(lián)系方式。user和user_item的關(guān)系是一對多,一個(gè)用戶可以有多個(gè)明細(xì),將用戶的電話地址等信息放在明細(xì)表中。其建表語句如下:CREATETABLE`e_user`(`userid`int(11)NOTNULLauto_increment,`username`varchar(30)NOTNULL,`password`varchar(15)defaultNULL,PRIMARYKEY(`userid`))DEFAULTCHARACTERSETutf8;下面是用戶明細(xì)表的E-R圖,對應(yīng)建表語句如下:CREATETABLE`e_user_item`(`user_item_id`int(11)NOTNULLauto_increment,`item_name`varchar(30)defaultNULL,`item_address`varchar(100)defaultNULL,`item_postcode`varchar(10)defaultNULL,`item_officephone`varchar(50)defaultNULL,`item_mobilephone`varchar(20)defaultNULL,`item_email`varchar(50)defaultNULL,`userid`int(12)NOTNULL,PRIMARYKEY(`user_item_id`),KEY`userid`(`userid`))DEFAULTCHARACTERSETutf8;商品是由類型的,如數(shù)碼產(chǎn)品由電腦,手機(jī),mp3等,其作為product類的父表,故設(shè)計(jì)e_catalog如下:CREATETABLE`e_catalog`(`catalogid`int(11)NOTNULLauto_increment,`catalogname`varchar(100)NOTNULL,`description`varchar(100)defaultNULL,PRIMARYKEY(`catalogid`))DEFAULTCHARACTERSETutf8;e_admin表用來保存管理員,管理員信息主要有:姓名(adminname),密碼(password),電話(tel),郵箱(email):管理員的權(quán)限是通過一個(gè)中間表e_adm_rights實(shí)現(xiàn)的,Admin的見表語句如下:createtablee_admin(admin_idintegerauto_increment, admin_namevarchar(32), passwordvarchar(32),telvarchar(32),emailvarchar(32),primarykey(admin_id))DEFAULTCHARACTERSETutf8;權(quán)限表,用來保存權(quán)限,它不直接和管理員聯(lián)系,而是通過中間表e_adm_rights,這樣最大限度地做到解耦合。其建表語句如下:createtablee_module(module_idintegerauto_increment,module_namevarchar(32),primarykey(module_id))DEFAULTCHARACTERSETutf8;;中間表e_admin_rights表用來保存管理員的權(quán)限,建表語句:createtablee_adm_rights(adm_idintegerreferencese_admin(admin_id),mod_idintegerreferencese_module(module_id),primarykey(adm_id,mod_id));e_order表用來保存用戶的訂單,主要屬性有orderid(訂單ID),orderstate(訂單狀態(tài)),payinfo(付款方式),User_item_id(訂單所對應(yīng)的用戶明細(xì)的ID,userid訂單所對應(yīng)的用戶的ID。Order表的見表語句如下:CREATETABLE`e_order`(`orderid`int(11)NOTNULLauto_increment,`totalprice`doubledefault'0',`orderstate`int(11)default'0',`payinfo`int(11)defaultNULL,`createtime`datedefaultNULL,`userid`int(11)NOTNULL,`user_item_id`int(11)NOTNULL,PRIMARYKEY(`orderid`),KEY`user_item_id`(`user_item_id`),KEY`userid`(`userid`))DEFAULTCHARACTERSETutf8;(以上代碼創(chuàng)建表r_order,該表主要用來保存一個(gè)訂單,并且引用用戶表主鍵,用戶名細(xì)表主鍵為外鍵,與user和user_item表為一對多的關(guān)系) 在實(shí)際運(yùn)用中一個(gè)order對應(yīng)多個(gè)order_items,設(shè)計(jì)order_item如下:其建表語句如下:CREATETABLE`e_order_item`(`order_item_id`int(11)NOTNULLauto_increment,`productid`int(11)NOTNULL,`orderid`int(11)NOTNULL,`quality`int(11)NOTNULL,PRIMARYKEY(`order_item_id`),KEY`productid`(`productid`),KEY`orderid`(`orderid`))DEFAULTCHARACTERSETutf8;產(chǎn)品表保存了產(chǎn)品的詳細(xì)信息,設(shè)計(jì)如下:以下是其建表語句: CREATETABLE`e_product`(`productid`int(10)NOTNULLauto_increment,`module`varchar(50)NOTNULL,`name`varchar(100)defaultNULL,`company`varchar(50)defaultNULL,`price`doubledefaultNULL,`weight`int(4)defaultNULL,`catalogid`int(10)NOTNULL,`description`varchar(1500)defaultNULL,`imagepath`varchar(100)defaultNULL,`createtime`datedefaultNULL,`state`int(2)default'0',PRIMARYKEY(`productid`),KEY`catalogid`(`catalogid`))DEFAULTCHARACTERSETutf8;最后介紹一下message表,它保存了用戶的留言信息。見表語句如下:createtablee_message(messageIdintegerauto_increment,useridint(11);tilevarchar(32),content varchar(32),createDatedatedefaultNULL,;primarykey(messageId));

5.3系統(tǒng)的類設(shè)計(jì)這是類的關(guān)系圖從類關(guān)系圖上可以看到:一個(gè)用戶可以有多個(gè)明細(xì)(主要保存了用戶收貨地址,用戶電話,用戶郵箱等)在生成訂單時(shí),選擇其中一條用戶明細(xì)保存到訂單中去,訂單有多個(gè)訂單項(xiàng)組成,訂單訂單項(xiàng)與產(chǎn)品關(guān)聯(lián),訂單項(xiàng)保存了產(chǎn)品ID,訂購數(shù)量,該訂單條目總價(jià)格。用戶可以對應(yīng)多個(gè)留言類。產(chǎn)品和產(chǎn)品類型類關(guān)聯(lián),一個(gè)產(chǎn)品只能有一種類型,類型類是產(chǎn)品類的父類。在這個(gè)類關(guān)系圖中,管理員類沒有列出來,管理員類和權(quán)限類通過中間類(即管理員權(quán)限類)銜接在一起。管理員可以管理用戶,產(chǎn)品,留言,和普通管理員。上圖是數(shù)據(jù)庫表中各個(gè)表之間的關(guān)系圖,從這些表之間的對應(yīng)關(guān)系可以看出其所代表的類之間的關(guān)系。5.4系統(tǒng)的用例圖 通過這張用戶的用例圖(圖5.4.1),我們可以看到用戶所能做的業(yè)務(wù),用戶可以登錄和退出系統(tǒng),用戶還可以注冊為網(wǎng)站的會員成為注冊用戶,用戶登陸以后可以修改個(gè)人信息,可以增加用戶明細(xì)。關(guān)于產(chǎn)品操作方面,用戶無論注冊與否都可以瀏覽和檢索產(chǎn)品,若用戶登陸以后就可以將產(chǎn)品放入購入購物車中,進(jìn)而生成訂單。用戶可以管理自己的購物車,可以在購物車中增加或刪除商品,還可以修改放入購物車中的商品的數(shù)量等,當(dāng)用戶決定購買后,購物車中的商品被提交到訂單項(xiàng)中,用戶在確認(rèn)訂單之前還可以修改訂單條目,比如返回購物車修改訂購產(chǎn)品數(shù)量,增刪所修改產(chǎn)品等,還可以選擇或添加收貨地址,可以選擇付款方式,當(dāng)用戶確認(rèn)無誤后,這些信息將被提交到數(shù)據(jù)庫中,訂單即被生成。用戶還可以在網(wǎng)站上留言。 圖5.4.1這張是管理員的用例圖(圖5.4.2),通過這張圖我們可以看到,管理員登陸系統(tǒng)后可以進(jìn)行管理員管理,用戶管理,產(chǎn)品管理,訂單管理,留言管理等,這都是對超級管理員而言,管理員是有權(quán)限之分的,超級管理員可以添加普通管理員,可以修改普通管理員信息,比如修改普通管理員的權(quán)限密碼等,特定全線的管理員只能至星期對應(yīng)權(quán)限的操作,比如一個(gè)知具有用戶管理權(quán)限的管理員就不能操作產(chǎn)品管理。對于一個(gè)超級管理員,他具有最大權(quán)限,在管理員管理中,它可以對普通管理員進(jìn)行增刪改查,在用戶管理中,它可以修改用戶的個(gè)人資料,可以將某個(gè)用戶刪除等,當(dāng)然也可以查看用戶列表,在訂單管理中,管理員可以查看訂單列表,處理用戶提交的訂單。留言管理模塊,管理員可以講用戶的留言刪除。圖總體功能需求設(shè)計(jì)

6電子產(chǎn)品交易系統(tǒng)網(wǎng)站的詳細(xì)設(shè)計(jì)6.1系統(tǒng)中我所做的主要模塊及具體實(shí)現(xiàn)6.1.1用戶管理模塊用戶管理模塊主要包括用戶注冊,登錄,退出3個(gè)部分.(1)用戶注冊當(dāng)用戶第一次登錄時(shí)首先要注冊,成為會員后,才可以購買物品.用戶可以通過單擊首頁的注冊按鍵來打開注冊頁面進(jìn)行會員注冊操作,用戶注冊頁面的運(yùn)行結(jié)果如下圖所示. 用戶注冊頁面圖如果用戶的注冊信息不符合要求,系統(tǒng)會提示用戶,部分結(jié)果如下圖: 圖校驗(yàn)用戶注冊信息是是否正確的javaScript部分代碼如下:<script>if(form1.username.value==""){ alert(“請輸入用戶名"); form1.username.focus(); returnfalse; } if(form1.pasa.value==""){ alert("請輸入確認(rèn)密碼"); form1.pasa.focus(); returnfalse; } if(form1.password.value!=form1.pasa.value){ alert("你輸入的兩次密碼不一致"); returnfalse; } if(form1.email.value==""){ alert("請輸入你的Email址"); form1.email.focus(); returnfalse; returnfalse; } }--></script>當(dāng)用戶確認(rèn)所提按信息無誤后,單擊“注冊“按鈕,系統(tǒng)會執(zhí)行以下流程: 1,request請求將頁面上的信息傳遞到控制層的struts中的Action類中,執(zhí)行以下代碼/* *注冊一個(gè)新用戶 */ publicActionForwardregister(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ …… Useruser=newUser(); user.setUsername(request.getParameter("userName")); user.setPassword(request.getParameter("password")); user.setCreatetime(newDate(System.currentTimeMillis())); user.setState(1); user.setRole(1); user.setAddress(request.getParameter("address")); user.setPostcode(request.getParameter("postcode")); user.setOfficephone(request.getParameter("officephone")); user.setMobilephone(request.getParameter("mobilephone")); user.setEmail(request.getParameter("email")); if(userService.getUserByName(username)!=null){ Stringmessage="用戶名已存在!請<aonclick='javascript:history.go(-1)'style='color:red;'>返回</a>"; request.setAttribute("message",message); returnmapping.findForward("error"); } userService.register(user); returnmapping.findForward("registersuccess");}在UserService中調(diào)用dao中的addUser方法,代碼如下:publicvoidaddUser(Useruser)throwsStoreException{ try{ session=HibernateSessionFactory.getSession(); tx=session.beginTransaction(); session.save(user); mit(); } } (2)用戶登錄用戶登錄窗口設(shè)置在首頁上,主要用來接收用戶輸入的用戶名和密碼,并更新用戶在網(wǎng)站中的狀態(tài)信息.會員登錄窗口的運(yùn)行結(jié)果如下圖所示。會員登錄窗口圖網(wǎng)站首頁在用戶第一次訪問時(shí)會判斷用戶是否登錄,未登錄則顯示用戶登錄窗口,提示用戶登錄或注冊.對于已經(jīng)登錄的用戶,在用戶登錄窗口將顯示用戶的相關(guān)信息.首頁主要是根據(jù)保存用戶名信息的Session參數(shù)來判斷用戶是否已經(jīng)登錄的,關(guān)鍵代碼如下:<% Stringname=(String)session.getAttribute("name"); }%>在會員登錄窗口中單擊登錄按紐后,系統(tǒng)將對用戶名和密碼進(jìn)行驗(yàn)證,判斷用戶是否是已注冊用戶,如果已注冊,則更新用戶在網(wǎng)站中的狀態(tài),如果沒有注冊,則拒絕用戶的登錄操作,登錄數(shù)據(jù)驗(yàn)證的程序代碼如下:/* *用戶登錄方法 */ publicActionForwardlogin(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ Stringusername=request.getParameter("userid"); Stringpassword=request.getParameter("password"); if(userService.isLoginCorrect(username,password)){ Useruser=userService.getUserByName(username); /* *只有在用戶登錄的時(shí)候才創(chuàng)建一個(gè)session,并且把用戶的信息存放到session中; *同時(shí)sessionListener也會把car同時(shí)也放到session中,這樣能保證為每一個(gè)來 *網(wǎng)站需要購物的用戶分配一個(gè)session,一個(gè)購物車,并且也可以利用session來跟蹤用戶. */ HttpSessionsession=((HttpServletRequest)request).getSession(true); session.setAttribute("user",user); returnmapping.findForward("loginsuccess"); }else{ Stringmessage="用戶名或者密碼錯誤!"; request.setAttribute("message",message); returnmapping.findForward("loginfailed"); } }publicUsergetUserByName(Stringname)throwsStoreException{ Sessionsession=null; try{ session=HibernateSessionFactory.getSession(); Useruser=(User)session.createQuery( "fromUseruwhereu.username='"+name+"'") .uniqueResult(); returnuser; } }(3)用戶退出 當(dāng)用戶決定退出網(wǎng)站時(shí),只要點(diǎn)擊當(dāng)前頁面上的“退出”按鈕,就會回到首頁,結(jié)果如下圖: 圖實(shí)現(xiàn)代碼如下:/* *用戶退出系統(tǒng)并做一些清理工作; */ publicActionForwardlogout(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ HttpSessionsession=request.getSession(); session.removeAttribute("user"); session.removeAttribute("cart"); returnmapping.findForward("logout"); }6.1.2.定單模塊生成訂單是網(wǎng)上購物商城的最終目的,前面的所有的功能的實(shí)現(xiàn)都是為最后生成一個(gè)用戶滿意的訂單做基礎(chǔ),在此要生成一個(gè)可以供用戶隨時(shí)查詢訂單號,還要保存用戶訂單中所購買的商品信息。當(dāng)用戶確認(rèn)對購物車不再改變后,就可以到收銀臺結(jié)帳并生成訂單。結(jié)帳的流程是:從購物車中讀取商品名稱,商品數(shù)量,商品價(jià)格信息,生成唯一的一個(gè)訂單號,同時(shí)也把用戶注冊的基本信息讀取出來,形成一個(gè)完整的訂單寫入數(shù)據(jù)庫中。創(chuàng)建一個(gè)訂單 客戶選好了所有的商品時(shí),并確認(rèn)要買時(shí),會向服務(wù)器發(fā)送一個(gè)“生成定單”的請求,運(yùn)行結(jié)果如下圖: 圖此時(shí)用戶可以添加收貨人的地址,點(diǎn)擊圖的“添加收貨人地址“,會彈出一個(gè)頁面,在此寫上收貨人地址,如下圖:部分代碼如下:/* *為用戶添加一個(gè)新地址 */ publicActionForwardsaveUserItem(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ HttpSessionsession=request.getSession(); Useruser=(User)session.getAttribute("user"); UserItemuseritem=newUserItem(); useritem.setUser(user); useritem.setItem_name(request.getParameter("username")); useritem.setItem_address(request.getParameter("address")); useritem.setItem_postcode(request.getParameter("postcode")); useritem.setItem_officephone(request.getParameter("officephone")); useritem.setItem_mobilephone(request.getParameter("mobilephone")); useritem.setItem_email(request.getParameter("email")); userService.addUserItem(useritem); request.getSession().setAttribute("useritems",userService.getUserItem(user)); returnmapping.findForward("confirm"); }/**將新增加UserItem保存數(shù)據(jù)庫中,其中保存了用戶的信息:id*/ publicvoidaddUserItem(UserItemuseritem)throwsStoreException{ .. try{ session=HibernateSessionFactory.getSession(); tx=session.beginTransaction(); session.save(useritem); mit(); }.. }用戶確認(rèn)無誤后點(diǎn)擊圖的“提交訂單“,會出現(xiàn)下圖: 圖 部分實(shí)現(xiàn)代碼: /* *向服務(wù)器提交定單,生成一個(gè)用戶定單保存到數(shù)據(jù)庫中; * *需要:用戶信息,用戶的詳細(xì)信息,付款方式,定單項(xiàng),商品; */ publicActionForwardaddOrder(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ intPayinfo=Integer.parseInt(request.getParameter("payway")); intuseritemid=Integer.parseInt(request.getParameter("useritemid")); HttpSessionsession=request.getSession(); Cartcart=(Cart)session.getAttribute("cart"); Useruser=(User)session.getAttribute("user"); Orderorder=newOrder(); order.setCreatetime(newjava.sql.Date(System.currentTimeMillis())); order.setOrderstate(0); order.setPayinfo(Payinfo); /* *order不但和用戶user有關(guān)系,也和useritem有關(guān)系, *因?yàn)槟硞€(gè)用戶也可以給別人定書; */ order.setUser(user); order.setUserItem(userService.getUserItemById(useritemid)); /* *遍歷session中car里面的商品,并且為每一類商品都生成一個(gè)定單項(xiàng),存放在orderitem中; *定單和定單項(xiàng)是一對多的關(guān)系; *從Car中獲得用戶所選擇的商品,并生成相應(yīng)的訂單項(xiàng)。 */ Map<Integer,CartProduct>products=cart.getProducts(); Set<Integer>keys=products.keySet(); Iterator<Integer>it=keys.iterator(); //記錄一個(gè)定單的總和 doublesum=0; while(it.hasNext()){ Integerkey=it.next(); CartProductcartproduct=products.get(key); Productproduct=cartproduct.getProduct(); System.out.println(product); intnum=cartproduct.getNum(); sum=sum+(num*product.getPrice()); /* *<1>.把從cart中存放的商品取出來放到OrderItem對象中, *每一個(gè)商品product對應(yīng)一個(gè)OrderItem對象; *<2>.然后把創(chuàng)建的OrderItem對象標(biāo)示為其本身屬性哪個(gè)定單的OrderItem對象; *<3>.最后將剛創(chuàng)建的OrderItem對象保存到指定的Order中,并且Order對象保存到數(shù)據(jù)庫中; *更具從Car中取出的每個(gè)商品都生成一個(gè)對應(yīng)的訂單項(xiàng)。 */ OrderItemorderItem=newOrderItem(); orderItem.setProduct(product); //orderItem.setPrice(product.getPrice()); orderItem.setQuality(num); //建立雙向關(guān)系 orderItem.setOrder(order); order.addOrderItem(orderItem); } order.setTotalprice(sum); orderService.saveOrder(order); request.setAttribute("order",order); returnmapping.findForward("success"); } /* *確定定單 */ publicActionForwardconfirmOrder(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ HttpSessionsession=request.getSession(); Useruser=(User)session.getAttribute("user"); request.setAttribute("useritems",userService.getUserItem(user)); returnmapping.findForward("confirm"); }/* *向數(shù)據(jù)庫中保存一個(gè)指定的order對象; */ publicvoidsaveOrder(Orderorder)throwsStoreException{ try{ session=HibernateSessionFactory.getSession(); tx=session.beg

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論