




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘要電子商務(wù)指利用簡單、快捷、低成本的電子通訊方式,買賣雙方通過網(wǎng)絡(luò)進行各種商貿(mào)活動的一種商業(yè)交易模式。隨著互聯(lián)網(wǎng)的發(fā)展,以及人們消費觀念和生活方式的改變,這種新型的商業(yè)模式逐漸融入了人們的生活中。通過企業(yè)的門戶網(wǎng)站,人們可以足不出戶的尋找自己所需的物品,通過對不同虛擬商城的訪問,“顧客”可以找出性價比最高的商品,自己有極大地選擇空間,通過下訂單,你可以很快得到自己想要的物品,這給顧客節(jié)省很多時間和精力,對于廠家來說,可以極大的降低庫存風(fēng)險,根據(jù)客戶需要,按需生產(chǎn)和采購,大大的提高了效益。本次畢業(yè)設(shè)計的題目就是設(shè)計并且實現(xiàn)一個基于web技術(shù)的在線電子產(chǎn)品交易門戶網(wǎng)站。本系統(tǒng)主要以j2EE作為開發(fā)基礎(chǔ),使用了struts+hibernate+mysql等多種協(xié)議或技術(shù),以Macromedia公司的Dreamweaver作為開發(fā)工具和界面美化工具。在功能方面也基本實現(xiàn)了電子門戶網(wǎng)站應(yīng)有的幾個基本功能模塊包括:管理員的登錄,管理和維護;用戶注冊、登錄、注銷,個人信息的查詢、修改;商品管理,購物車管理,訂單管理,用戶反饋;該系統(tǒng)界面簡單、操作容易,容易維護。關(guān)鍵詞:j2EE;struts;hibernate;Dreamweaver;mysql;tomcat;
Abstracte-commerceisanewbusinesstransaction,whichbothbuyersandsellersthroughasimple,fast,low-costelectronicmeansofcommunicationmethod.alongwiththedevelopmentoftheInternet,andpeople'sconsumptionandthewayoflifeChanges,thisnewbusinessmodelgraduallyintegrateintopeople'slives.Throughthedifferentvirtualmallvisit,peoplecanfindthemostcost-effectiveproductswithnotgoout,andtheyhavemunchself-choice.throughorders,peoplecanfindthethingswhichtheyneeded,andquicklygettheproductswhichtheyordered.Thisnewbusinessmodlecansavealotoftimeandenergyforbothcustormersandmanufacturers,andgreatlyreduceinventoryrisk.Themanufacturescanproduceandprocureaccordingtocustomerneeds,thiswascalledon-demandproductionandprocurementwhichgreatlyimprovedtheefficiency.Thissubjectofthisgraduationprojectisdesigningaweb-basedtechnologyofelectronicproductsonlinetradingportal.Thissystemismainlytoj2EEasabasisforthedevelopment,andalsousethestruts+hibernate+mysqltechnologiesandotherorders.ThisprojectuseMacromedia'sDreamweaverasthedevelopmenttoolsandinterfaceslandscapingtools.Thebasicfunctionoftherealizationelectronicportalshouldhaveafewbasicmodulesinclude:administratorlogin,managementandmaintenance;userstoregister,login,write-offs,personalinformationenquiries,amendmentstotheCommodityManagement,themanagementCart,Ordermanagement,theuserfeedback;interfaceofthesystemsimple,easytouse,easytomaintain.
Keywords:j2EE;struts;hibernate;mysql;tomcat;
TOC\o"1-3"\h\u摘要 IAbstract II1.緒論 12.開發(fā)環(huán)境及開發(fā)工具的介紹 22.1關(guān)于WEB 22.2關(guān)于J2EE 22.3.1J2EE的問世 22.3.2J2EE的優(yōu)勢 32.3.3J2EE的發(fā)展 32.4關(guān)于Struts 32.4.1Struts簡介 32.4.2Struts的主要功能 32.4.3Struts工作原理 32.5mysql數(shù)據(jù)庫 52.5.1mysql的定義 52.5.2mysql的安裝和配置 52.6Tomcat服務(wù)器 72.6.1TomCat服務(wù)器簡介 72.6.2Tomcat的特點 72.6.3Tomca的優(yōu)勢 72.6.3Tomcat服務(wù)器的安裝和配置 82.7HTML語言簡介 102.7.1Html語言的定義 102.7.2Html語言的特點 113hibernate數(shù)據(jù)庫編程 123.1為什么引入hibernate 123.2使用Hibernate的好處 123.3Hibernate的工作原理 124電子產(chǎn)品交易系統(tǒng)需求分析 144.1系統(tǒng)界面要求 144.2電子產(chǎn)品交易系統(tǒng)的模塊劃分 144.3電子產(chǎn)品交易系統(tǒng)角色及其功能分 144.4電子產(chǎn)品交易系統(tǒng)功能分析 145電子產(chǎn)品交易系統(tǒng)總體設(shè)計 165.1設(shè)計思想概述 165.2數(shù)據(jù)庫部分 165.3數(shù)據(jù)庫表的E-R圖 195.4系統(tǒng)的類設(shè)計 265.5系統(tǒng)的用例圖 275.6系統(tǒng)的業(yè)務(wù)流程 286電子產(chǎn)品交易系統(tǒng)的詳細設(shè)計 306.1電子產(chǎn)品交易系統(tǒng)模塊的劃分 306.2電子產(chǎn)品交易系統(tǒng)部分主要模塊流程及的具體實現(xiàn) 306.2.1購物車管理模塊 306.2.2后臺部分 376.3電子產(chǎn)品交易系統(tǒng)的測試 44總結(jié) 45致謝 46參考文獻 47附錄一:英文資料原文 48附錄二:英文資料譯文 581.緒論在Internet飛速發(fā)展的今天,互聯(lián)網(wǎng)成為人們快速獲取、發(fā)布和傳遞信息的重要渠道,它在人們政治、經(jīng)濟、生活等各個方面發(fā)揮著重要的作用。Internet上發(fā)布信息主要是通過WEB系統(tǒng)來實現(xiàn)的,隨著社會的發(fā)展,信息受到人們的重視和關(guān)注,人們對WEB系統(tǒng)的關(guān)注和要求也越來越多,互聯(lián)網(wǎng)已完全融入到人們的生活中,深深地影響了人們的生活,改變了人們的生活方式,一個比較具有代表性的例子,人們不用為了買一個手機而跑遍全市所有的數(shù)碼賣場,只有鼠標(biāo)輕輕的點擊,通過幾分鐘的網(wǎng)上沖浪,在輕松愜意之間一切就搞定,只需在家等著送貨員把貨送來就行了,十分方便,現(xiàn)在又無法統(tǒng)計的電子交易網(wǎng)站,它們的界面十分友好,流程清晰,你不必擔(dān)心自己是個新手而不知如何購物,越來越多的人們有過網(wǎng)上購物的經(jīng)歷,但人們對于一個電子門會網(wǎng)站是如何構(gòu)建的可能都十分陌生,通過這次畢業(yè)設(shè)計,我將細致的分析如何在基于j2EE協(xié)議,運用hibernate,struts,mysql等技術(shù)實現(xiàn)一個電子門戶網(wǎng)站的。這次設(shè)計,成功地實現(xiàn)了一個電子門戶網(wǎng)站所必需的幾個功能,例如用戶模塊:用戶可以登陸一個網(wǎng)站,可以進行注冊,修改個人信息,可以講自己需要的東西放入購物車生成訂單,系統(tǒng)可以保存用戶的信息,保存訂單,并且用戶還可以在網(wǎng)站上留言,系統(tǒng)管理員可以管理用戶的留言,可以處理用戶的訂單,并且可以管理用戶,在管理員模塊中,設(shè)有超級管理員和普通管理員,管理員的權(quán)限不同,超級管理員可以管理普通管理員的權(quán)限,在系統(tǒng)中,購物車是臨時生成的,并不保存在數(shù)據(jù)庫中,只有用戶確認購買后才生成訂單后才將訂單保存。
2.開發(fā)環(huán)境及開發(fā)工具的介紹2.1關(guān)于WEBWEB是一組原則:互聯(lián)網(wǎng)作為平臺,利用集體智慧,數(shù)據(jù),沒有軟件發(fā)布周期,輕量級編程,軟件超越單一設(shè)備,豐富的用戶體驗WEB的主要特點就是用戶可以通過瀏覽器從WEB系統(tǒng)上獲取信息,用戶既是WEB系統(tǒng)的消費者(信息獲取者),同時也是這個系統(tǒng)的內(nèi)容制造者。WEB的主要特點就是用戶可以通過瀏覽器從WEB系統(tǒng)上獲取信息,而在WEB2.0中,用戶的角色則被提高到了一個不同的位置,它更加重視用戶的交互作用,用戶既是WEB系統(tǒng)的消費者(信息獲取者),同時也是這個系統(tǒng)的內(nèi)容制造者。 2.2關(guān)于J2EEJ2EE(Java2PlatformEnterpriseEdition)是使用Java技術(shù)開發(fā)企業(yè)級應(yīng)用的一種事實上的工業(yè)標(biāo)準(zhǔn)(Sun公司出于其自身利益的考慮,至今沒有將Java及其相關(guān)技術(shù)納入標(biāo)準(zhǔn)化組織的體系),它是Java技術(shù)不斷適應(yīng)和促進企業(yè)級應(yīng)用過程的產(chǎn)物。目前,Java平臺有三個版本:適用于小型設(shè)備和智能卡的J2ME(Java2PlatformMicroEdition)、適用于桌面系統(tǒng)的J2SE(Java2PlatformStandardEdition)和適用于企業(yè)級應(yīng)用的J2EE(Java2PlatformEnterpriseEdition)。2.3.1J2EE的問世Sun推出J2EE的目的是為了克服傳統(tǒng)Client/Server模式的弊病,迎合Browser/Server架構(gòu)的潮流,為應(yīng)用Java技術(shù)開發(fā)服務(wù)器端應(yīng)用提供一個平臺獨立的、可移植的、多用戶的、安全的和基于標(biāo)準(zhǔn)的企業(yè)級平臺,從而簡化企業(yè)應(yīng)用的開發(fā)、管理和部署。J2EE是一個標(biāo)準(zhǔn),而不是一個現(xiàn)成的產(chǎn)品。各個平臺開發(fā)商J2EE規(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同時給出了一個建議性的J2EE應(yīng)用設(shè)計模型:J2EEBlueprints。J2EEBlueprints提供了實施J2EE企業(yè)級應(yīng)用的體系架構(gòu)、設(shè)計模式和相關(guān)的代碼,通過應(yīng)用J2EEBlueprints所描述的體系模型,能夠部分簡化架構(gòu)企業(yè)級應(yīng)用這項復(fù)雜的工作。J2EEBlueprints是開發(fā)人員設(shè)計和優(yōu)化J2EE組件的基本原則,同時為圍繞開發(fā)工作進行職能分工給出了指導(dǎo)性策略,以幫助應(yīng)用開發(fā)設(shè)計人員合理地分配技術(shù)資源。2.3.2J2EE的優(yōu)勢主要有以下幾點:1.高效的開發(fā)2.持續(xù)性服務(wù)3.支持異構(gòu)環(huán)境4.可伸縮性5.穩(wěn)定的可用性2.3.3J2EE的發(fā)展為了推廣并規(guī)范化使用J2EE架構(gòu)企業(yè)級應(yīng)用的體系架構(gòu),Sun同時給出了一個建議性的J2EE應(yīng)用設(shè)計模型:J2EEBlueprints。J2EEBlueprints提供了實施J2EE企業(yè)級應(yīng)用的體系架構(gòu)、設(shè)計模式和相關(guān)的代碼,通過應(yīng)用J2EEBlueprints所描述的體系模型,能夠部分簡化架構(gòu)企業(yè)級應(yīng)用這項復(fù)雜的工作。2.4關(guān)于Struts2.4.1Struts簡介Struts已逐步越來越多運用于商業(yè)軟件,是一種非常優(yōu)秀的J2EEMVC實現(xiàn)方式。Struts用JavaServlet/JavaServerPages技術(shù),開發(fā)Web應(yīng)用程序的開放源碼的framework。2.4.2Struts的主要功能1.包含一個controllerservlet,能將用戶的請求發(fā)送到相應(yīng)的Action對象。2.JSP自由tag庫,并且在controllerservlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)用。3.提供了一系列實用對象:XML處理、通過JavareflectionAPIs自動處理JavaBeans屬性、國際化的提示和消息。Struts項目的目標(biāo)是為創(chuàng)建Javaweb應(yīng)用提供一個開放源代framework。Strutsframework的內(nèi)核是基于例如JavaServlets,JavaBeans,ResourceBundles,和XML,以及各種JakartaCommons包的標(biāo)準(zhǔn)技術(shù)的靈活的控制層。Struts提供了它自身的控制器組件,并整合了其他技術(shù),以提供模型和視圖。Struts已逐步越來越多運用于商業(yè)軟件,是一種非常優(yōu)秀的J2EEMVC實現(xiàn)方式。2.4.3Struts工作原理MVC即Model-View-Controller的縮寫,是一種常用的設(shè)計模式。MVC減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合,以及讓視圖層更富于變化,MVC可以讓整個邏輯很清晰,這種思想和思維和人的思維很接近,很容易被理解。MVC的工作原理如圖2-1所示:圖2-1Struts是MVC的一種實現(xiàn),它將Servlet和JSP標(biāo)記(屬于J2EE規(guī)范)用作實現(xiàn)的一部分。Struts繼承了MVC的各項特性,并根據(jù)J2EE的特點,做了相應(yīng)的變化與擴展。Struts的工作原理,如圖2-2所示:圖2-21.Controller:在XML文件Struts-config.xml中,與之相關(guān)聯(lián)的是Controller,在Struts中,承擔(dān)MVC中Controller角色的是一個Servlet,叫ActionServlet。ActionServlet是一個通用的控制組件。這個控制組件提供了處理所有發(fā)送到Struts的HTTP請求的入口點。它截取和分發(fā)這些請求到相應(yīng)的動作類(這些動作類都是Action類的子類)。另外控制組件也負責(zé)用相應(yīng)的請求參數(shù)填充ActionFrom(通常稱之為FromBean),并傳給動作類(通常稱之為ActionBean)。動作類實現(xiàn)核心商業(yè)邏輯,它可以訪問javabean或調(diào)用EJB。最后動作類把控制權(quán)傳給后續(xù)的JSP文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。2.視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP標(biāo)簽庫:Html,Bean,Logic,Template等,這有利于分開表現(xiàn)邏輯和程序邏輯。3.模型:模型以一個或多個javabean的形式存在。這些bean分為三類:ActionForm、Action、JavaBeanorEJB。ActionForm通常稱之為FormBean,封裝了來自于Client的用戶請求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來的FormBean,取出FormBean中的相關(guān)信息,并做出相關(guān)的處理,一般是調(diào)用JavaBean或EJB等。2.5mysql數(shù)據(jù)庫數(shù)據(jù)庫(Database)是一系列信息資源的集合。在一個數(shù)據(jù)庫中,與一個項目有關(guān)的所有信息都可以叫做一條記錄(Record)。每一條記錄都是由一系列的字段(Field)組成的。一系列記錄的集合就構(gòu)成了數(shù)據(jù)表格(Table)。對于一個簡單的“平面文件”的數(shù)據(jù)庫來說,它僅包含了一個數(shù)據(jù)表格,而對一個“關(guān)系型”數(shù)據(jù)庫來說,它卻包含兩個或兩個以上的數(shù)據(jù)表格,表格的各字段之間存在這一種或多種關(guān)系(有時可以把這種關(guān)系叫做“鏈接”)。2.5.1mysql的定義MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言—結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)庫管理。
由于MySQL是開放源代碼的,因此任何人都可以在GeneralPublicLicense的許可下下載并根據(jù)個性化的需要對其進行修改。MySQL因為其速度、可靠性和適應(yīng)性而備受關(guān)注。大多數(shù)人都認為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇。它使用系統(tǒng)核心提供的多線程機制提供完全的多線程運行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等編程語言的編程接口(APIs),支持多種字段類型并且提供了完整的操作符支持查詢中的SELECT和WHERE操作。2.5.2mysql的安裝和配置以下是部分截圖:圖2-3安裝時一般采用默認路徑:圖2-4圖2-5為了支持中文,在下面的列表框中學(xué)者jb2312(切記)圖2-62.6Tomcat服務(wù)器2.6.1TomCat服務(wù)器簡介Tomcat是一個免費的開源的Serlvet容器,它是Apache基金會的Jakarta項目中的一個核心項目,由Apache,Sun和其它一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。
Tomcat中采用了Servlet容器:Catalina,完整的實現(xiàn)了Servlet2.3和Jsp1.2規(guī)范。Tomcat提供了各種平臺的版本供下載,可以從其官方網(wǎng)站上下載其源代碼版或者二進制版。由于Java的跨平臺特性,基于Java的Tomcat也具有跨平臺性。2.6.2Tomcat的特點在Tomcat中,應(yīng)用程序的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個文件,并將其解壓。你在瀏覽器中訪問這個應(yīng)用的Jsp時,通常第一次會很慢,因為Tomcat要將Jsp轉(zhuǎn)化為Servlet文件,然后編譯。編譯以后,訪問將會很快。另外Tomcat也提供了一個應(yīng)用:manager,訪問這個應(yīng)用需要用戶名和密碼,用戶名和密碼存儲在一個xml文件中。通過這個應(yīng)用,輔助于Ftp,你可以在遠程通過Web部署和撤銷應(yīng)用。當(dāng)然本地也可以。
2.6.3Tomca的優(yōu)勢Tomcat不僅僅是一個Servlet容器,它也具有傳統(tǒng)的Web服務(wù)器的功能:處理Html頁面。但是與Apache相比,它的處理靜態(tài)Html的能力就不如Apache.我們可以將Tomcat和Apache集成到一塊,讓Apache處理靜態(tài)Html,而Tomcat處理Jsp和Servlet.這種集成只需要修改一下Apache和Tomcat的配置文件即可。
2.6.3Tomcat服務(wù)器的安裝和配置在開始安裝之前,先準(zhǔn)備J2SDK和TOMCAT兩個軟件,如果已經(jīng)安裝了J2SDK,就只需TOMCAT即可。變量名:CATALINA_HOME
變量值:d:\Tomcat5.0
另外可再增加一個環(huán)境變量
變量名:CLASSPATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tool.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;%CATALINA_HOME%\common\lib\jsp-api.jar安裝J2SDK
設(shè)置環(huán)境變量,方法如下:
右擊“我的電腦”==》屬性==》高級==》環(huán)境變量==》新建...
變量名:JAVA_HOME
變量值:d:\j2sdk1.4.2_04
安裝TOMCAT
運行jakarta-tomcat-5.0.28.exe按照提示安裝,圖2-7圖2-8圖2-9安裝完成后,打開tomcat服務(wù)器,啟動瀏覽器,在地址欄上輸入:http://localhost:8080/若出現(xiàn)以下界面說明安裝成功。圖2-102.7HTML語言簡介2.7.1Html語言的定義HTML(HyperTextMarkupLanguage超文本標(biāo)記語言)是一種用來制作超文本文檔的簡單標(biāo)記語言。用HTML編寫的超文本文檔稱為HTML文檔,它能獨立于各種操作系統(tǒng)平臺(如UNIX,WINDOWS等)HTML語言是通過利用各種標(biāo)記(tags)來標(biāo)識文檔的結(jié)構(gòu)以及標(biāo)識超鏈接(Hyperlink)的信息。雖然HTML語言描述了文檔的結(jié)構(gòu)格式,但并不能精確地定義文檔信息必須如何顯示和排列,而只是建議Web瀏覽器(如Mosiac,Netscape等)應(yīng)該如何顯示和排列這些信息,最終在用戶面前的顯示結(jié)果取決于Web瀏覽器本身的顯示風(fēng)格及其對標(biāo)記的解釋能力。這就是為什么同一文檔在不同的瀏覽器中展示的效果會不一樣。HTML標(biāo)記語法和文檔結(jié)構(gòu)2.7.2Html語言的特點HTML的標(biāo)記總是封裝在由小于號(<)和大于號(>)構(gòu)成的一對尖括號之中。1.單標(biāo)記某些標(biāo)記稱為“單標(biāo)記”,因為它只需單獨使用就能完整地表達意思,這類標(biāo)記的語法是:<標(biāo)記>;最常用的單標(biāo)記是<P>,它表示一個段落(Paragraph)的結(jié)束,并在段落后面加一空行。2.雙標(biāo)記另一類標(biāo)記稱為“雙標(biāo)記”,它由“始標(biāo)記”和“尾標(biāo)記”兩部分構(gòu)成,必須成對使用,其中始標(biāo)記告訴Web瀏覽器從此處開始執(zhí)行該標(biāo)記所表示的功能,而尾標(biāo)記告訴Web瀏覽器在這里結(jié)束該功能。始標(biāo)記前加一個斜杠(/)即成為尾標(biāo)記。這類標(biāo)記的語法是:<標(biāo)記>內(nèi)容</標(biāo)記>;其中“內(nèi)容”部分就是要被這對標(biāo)記施加作用的部分。例如你想突出對某段文字的顯示,就將此段文字放在一對<EM></EM>標(biāo)記中: <EM>texttoemphasize</EM>3.標(biāo)記屬性許多單標(biāo)記和雙標(biāo)記的始標(biāo)記內(nèi)可以包含一些屬性,其語法是: <標(biāo)記屬性1屬性2屬性3…>4.文檔結(jié)構(gòu)除了一些個別的標(biāo)記外,HTML文檔的標(biāo)記都可嵌套使用。通常由三對標(biāo)記來構(gòu)成一個HTML文檔的骨架,它們是: <HTML> <HEAD> 頭部信息 </HEAD> <BODY> 文檔主體,正文部分 </BODY> </HTML>其中<HTML>在最外層,表示這對標(biāo)記間的內(nèi)容是HTML文檔。<HEAD>之間包括文檔的頭部信息,如文檔總標(biāo)題等,若不需頭部信息則可省略此標(biāo)記。我們還會看到一些Homepage省略<HTML>標(biāo)記,因為.html或.htm文件被Web瀏覽器默認為是HTML文檔。<BODY>標(biāo)記一般不省略,表示正文內(nèi)容的開始。
3hibernate數(shù)據(jù)庫編程3.1為什么引入hibernate在B/S項目的開發(fā)中,和數(shù)據(jù)庫的交互式不可避免的,J2EE的規(guī)范中提供了JDBC的接口來操作數(shù)據(jù)庫,對于JDBC,開發(fā)人員可以獲取數(shù)據(jù)庫連接,然后向數(shù)據(jù)庫發(fā)送SQL語句,并返回數(shù)據(jù)庫操作的結(jié)果集,然后封裝成對象返回給上層的應(yīng)用程序。這就造成開發(fā)人員不但要求能夠編寫程序,熟悉業(yè)務(wù)邏輯,還要求開發(fā)人員同時能夠擔(dān)任DBA,對開發(fā)人員的要求很高;同時,當(dāng)引入新的項目時,很多地方必須廢棄,因為我們的代碼中不光是業(yè)務(wù)邏輯,其中也嵌入了許多和底層有關(guān)的一些SQL代碼;另外這些嵌入在代碼中的SQL語句也影響了我們程序的可測試性,我們在對代碼進行調(diào)試的時候,既要測試代碼,同時我們還要測試SQL語句。為了解決這些問題,引入了hibernate3.2使用Hibernate的好處1、Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架,和AppServer,和EJB沒有什么必然的聯(lián)系。Hibernate可以用在任何JDBC可以使用的場合,例如Java應(yīng)用程序的數(shù)據(jù)庫訪問代碼,DAO接口的實現(xiàn)類,甚至可以是BMP(Bean-Managed
Persistence)里面的訪問數(shù)據(jù)庫的代碼。2、Hibernate是一個和JDBC密切關(guān)聯(lián)的框架,所以Hibernate的兼容性和JDBC驅(qū)動,和數(shù)據(jù)庫都有一定的關(guān)系,但是和使用它的Java程序,和ApplicationServer沒有任何關(guān)系,也不存在兼容性問題。3、Hibernate不能用來直接和EntityBean做對比,只有放在整個J2EE項目的框架中才能比較。并且即使是放在軟件整體框架中來看,Hibernate也是做為JDBC的替代者出現(xiàn)的,而不是EntityBean的替代者出現(xiàn)的。4、由于是對JDBC的輕易級封閉,內(nèi)存消耗少,最快的運行效率。5、開發(fā)效率高,Eclipse、JBuilder等主流JAVA集成開發(fā)環(huán)境對Hibernate有很好的支持,在大的項目,特別是持久層關(guān)系映射很復(fù)雜的情況下,Hibernate效率高的驚人。6、分布式,安全檢查,集群,負載均衡的支持。Hibernate的工作原理Hibernate的工作就是為Object和Ralational之間提供一個映射,其工作流程如下面的圖所示。圖3-11.
啟動Hibernate,如果在系統(tǒng)中添加Hibernate的支持,此處加載由系統(tǒng)自動完成。2.
讀取hibernate.cfg.xml或者perties文件的配置信息,并將其加載為實例。3.
構(gòu)建SessionFactory實例(包含二級緩存)。4.
從SessionFactory中取得Session對象,從而可以調(diào)用其方法,對數(shù)據(jù)庫進行操作,實現(xiàn)ORM的功能。Hibernate可以通過一個XML的mapping文件把一個POJO(Plainoldjavaobject)和數(shù)據(jù)庫中的表對應(yīng)起來,在這個XML文件(一般命名為*.hbm.xml)中,我們可以配置好Object和數(shù)據(jù)庫中標(biāo)的映射關(guān)系,然后把這個mapping加入到hibernate.cfg.xml中,這樣Hibernate在啟動時就可以加載這些mapping,并可以根據(jù)配置文件對對象實現(xiàn)自動的加載,并且可以對這些Object實習(xí)自動的維護。Hibernate還提供查詢語句(HQL)供應(yīng)用程序使用,Hibernate對數(shù)據(jù)訪問實現(xiàn)封裝,還可以對查詢語句的發(fā)送實現(xiàn)管理,達到優(yōu)化的目的,能夠有效減少數(shù)據(jù)庫的訪問頻率。4電子產(chǎn)品交易系統(tǒng)需求分析4.1系統(tǒng)界面要求系統(tǒng)的初始界面門戶首頁,列出當(dāng)前商品列表,用戶可以瀏覽和檢索商品但不能做其他操作,當(dāng)用戶注冊后從新登陸后就可以進行購物,用戶登錄流程如圖所示.4.2電子產(chǎn)品交易系統(tǒng)的模塊劃分本系統(tǒng)實現(xiàn)了一個電子門戶網(wǎng)站所具有的基本功能,包括用戶注冊、用戶登錄、查找商品、提交訂單購買商品,個人資料修改、提交留言,管理員的登錄,管理員管理操作等……。4.3電子產(chǎn)品交易系統(tǒng)角色及其功能分電子產(chǎn)品交易系統(tǒng)應(yīng)具有4個角色:(1).注冊用戶(2).超級管理員(3)普通管理員(4).普通的網(wǎng)站瀏覽者(即游客)4.4電子產(chǎn)品交易系統(tǒng)功能分析1、普通管理員應(yīng)該具有的功能(1).產(chǎn)品管理包括網(wǎng)數(shù)據(jù)庫中增加商品,修改商品的價格,數(shù)量,狀態(tài)等屬性….(2).對用戶的管理包括添加新用戶、修改用戶密碼、刪除用戶. (3)對用戶訂單的管理,進行發(fā)貨,確認訂單有效性……(4)對用戶留言的管理………。2、超級管理員應(yīng)具有的功能超級管理員可以管理普通管理員,其權(quán)限最高,除了具有普通管理員的用戶管理,訂單管理以外還有管理普通管理員的權(quán)限。 3、普通用戶網(wǎng)站的普通瀏覽者(即游客)只能瀏覽商品。4、注冊應(yīng)具有的功能普通瀏覽者只要注冊為網(wǎng)站用戶后,獲得自己的帳號,設(shè)置自己的密碼就具有以下功能:登錄,登出,向購物車中添加商品,生成并提交訂單。添加或修改個人明細資料。
5電子產(chǎn)品交易系統(tǒng)總體設(shè)計5.1設(shè)計思想概述本電子產(chǎn)品交易系統(tǒng)是基于B/s架構(gòu)下的多層結(jié)構(gòu)應(yīng)用系統(tǒng)。在此系統(tǒng)中每個軟件都有自身的特點,因此不可能提供一個適用于所有軟件的結(jié)構(gòu)體系??偟膩碚f,采用分層結(jié)構(gòu)的設(shè)計思想,可以讓每個層由一組相關(guān)的類或組件構(gòu)成,共同完成特定的功能。層與層之間存在自上而下的依賴關(guān)系,上層組件會依賴下層組件的API,而下層組件則不依賴于上層組件。例如:表述層依賴于業(yè)務(wù)邏輯層,而業(yè)務(wù)邏輯層依賴于數(shù)據(jù)庫層。并且每個層對對上層公開API,但具體的實現(xiàn)細節(jié)對外透明。當(dāng)某一層發(fā)生變化,只要API不變,不會影響其他層的實現(xiàn)。如圖下圖:圖5-1/在數(shù)據(jù)庫層,該系統(tǒng)使用開源的mysql數(shù)據(jù)庫,持久層用到Hibernate技術(shù),業(yè)務(wù)邏輯層用普通javabean實現(xiàn),表述層運用基于struts的MVC設(shè)計模式。5.2數(shù)據(jù)庫部分e_order表用來保存客戶的訂單信息,設(shè)計出e_order表如表5.2e_order列名類型長度描述orderidint11訂單IDtotalpriceNUMBER16總價錢orderstateNUMBER1訂單狀態(tài)payinfoDATE付款方式CreatetimeDATE創(chuàng)建日期useridVARCHAR220用戶IDUser_item_idNUMBER8用戶明細ID圖5-2e_order_item表用來保存客戶訂單中的訂單項信息,設(shè)計出e_order_item表如表5.3e_order_item列名類型長度描述order_item_idNUMBER16訂單條目IDProductidNUMBER16商品對象IDOrderidVARCHAR220訂單對象IDqualityNUMBER8數(shù)量numNUMBER8商品數(shù)量 圖5-33.e_user表用來保存用戶個人信息,設(shè)計出e_user表如表圖5-4e_user列名類型長度描述user_idint11用戶IDusernamevarchar30用戶namepasswordvarchar15用戶密碼圖5-44.e_user_item表用來保存用戶個人明細,設(shè)計出e_user_item表如表圖5-5e_user_item列名類型長度描述User_item_idint11用戶IDItem_namevarchar30用戶nameItem_addressvarchar15用戶密碼Item_postcodevarchar20郵編Item_officephvarchar50辦公室電話Item_mobilephvarchar20手機Item_emailvarchar20電郵useridInt12用戶Id圖5-55.e_product表用來保存商品,設(shè)計出e_product表如表圖5-6e_product列名類型長度描述productidint11產(chǎn)品modlevarchar30產(chǎn)品型號namevarchar15品牌名companyvarchar20出品公司weightdouble50產(chǎn)品重量pricedouble20價格statevarchar20產(chǎn)品狀態(tài)createtimedate出廠日期CatalogidInt10產(chǎn)品類型descriptionvarchar1000產(chǎn)品描述圖5-66.e_catalog表用來保存商品類型,設(shè)計出e_catalog表如表圖5-7e_catalog列名類型長度描述catalogidint11類型IDcaatlognamevarchar30類型名descriptionvarchar100描述圖5-77.e_module表用來保存權(quán)限信息,設(shè)計出e_module表如表圖5-8e_module列名類型長度描述Module_idint11權(quán)限IDModule_namevarchar30權(quán)限名圖5-88.e_admin表用來保存管理員,設(shè)計出e_admin表如表圖5-9e_admin列名類型長度描述Admin_idint11類型IDAdmin_namevarchar30類型名passwordvarchar100描述TelVarchar20電話emailvarchar20電郵圖5-99.e_admin_rights表用來保存管理員權(quán)限,設(shè)計出e_admin_right表如表圖5-10e_admin列名類型長度描述admin_idint11管理員IDMod_idint30權(quán)限ID5.3數(shù)據(jù)庫表的E-R圖User表保存了用戶的基本信息:姓名(name)和密碼(password),其子表由e_user_item(用戶明細),user和user_item的關(guān)系是一對多,一個用戶可以有多個明細,將用戶的電話地址等信息放在明細表中。圖5-11其建表語句如下:CREATETABLE`e_user`(`userid`int(11)NOTNULLauto_increment,`username`varchar(30)NOTNULL,`password`varchar(15)defaultNULL,PRIMARYKEY(`userid`))DEFAULTCHARACTERSETutf8;下面是用戶明細表的E-R圖,圖5-12對應(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)品由電腦,手機,mp3等,其作為product類的父表,故設(shè)計e_catalog如下:圖5-13CREATETABLE`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)限是通過一個中間表e_adm_rights實現(xiàn)的,圖5-14Admin的見表語句如下: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,這樣最大限度地做到解耦合。圖5-15其建表語句如下:createtablee_module(module_idintegerauto_increment,module_namevarchar(32),primarykey(module_id))DEFAULTCHARACTERSETutf8;;中間表e_admin_rights表用來保存管理員的權(quán)限,圖5-16建表語句: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)的用戶明細的ID,userid訂單所對應(yīng)的用戶的ID。圖5-17Order表的見表語句如下: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,該表主要用來保存一個訂單,并且引用用戶表主鍵,用戶名細表主鍵為外鍵,與user和user_item表為一對多的關(guān)系) 在實際運用中一個order對應(yīng)多個order_items,設(shè)計order_item如下:圖5-18其建表語句如下: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)品的詳細信息,設(shè)計如下:圖5-19以下是其建表語句: 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表,它保存了用戶的留言信息。圖5-20見表語句如下:createtablee_message(messageIdintegerauto_increment,useridint(11);tilevarchar(32),content varchar(32),createDatedatedefaultNULL,;primarykey(messageId));
5.4系統(tǒng)的類設(shè)計這是類的關(guān)系圖從類關(guān)系圖上可以看到:一個用戶可以有多個明細(主要保存了用戶收貨地址,用戶電話,用戶郵箱等)在生成訂單時,選擇其中一條用戶明細保存到訂單中去,訂單有多個訂單項組成,訂單訂單項與產(chǎn)品關(guān)聯(lián),訂單項保存了產(chǎn)品ID,訂購數(shù)量,該訂單條目總價格。用戶可以對應(yīng)多個留言類。產(chǎn)品和產(chǎn)品類型類關(guān)聯(lián),一個產(chǎn)品只能有一種類型,類型類是產(chǎn)品類的父類。在這個類關(guān)系圖中,管理員類沒有列出來,管理員類和權(quán)限類通過中間類(即管理員權(quán)限類)銜接在一起。管理員可以管理用戶,產(chǎn)品,留言,和普通管理員。圖5-21上圖是表與表之間的關(guān)系圖,圖中反映出類之間的依賴關(guān)系。5.5系統(tǒng)的用例圖 通過這張用戶的用例圖,我們可以看到用戶所能做的業(yè)務(wù),用戶可以登錄和退出系統(tǒng),用戶還可以注冊為網(wǎng)站的會員成為注冊用戶,用戶登陸以后可以修改個人信息,可以增加用戶明細。關(guān)于產(chǎn)品操作方面,用戶無論注冊與否都可以瀏覽和檢索產(chǎn)品,若用戶登陸以后就可以將產(chǎn)品放入購入購物車中,進而生成訂單。用戶可以管理自己的購物車,可以在購物車中增加或刪除商品,還可以修改放入購物車中的商品的數(shù)量等,當(dāng)用戶決定購買后,購物車中的商品被提交到訂單項中,用戶在確認訂單之前還可以修改訂單條目,比如返回購物車修改訂購產(chǎn)品數(shù)量,增刪所修改產(chǎn)品等,還可以選擇或添加收貨地址,可以選擇付款方式,當(dāng)用戶確認無誤后,這些信息將被提交到數(shù)據(jù)庫中,訂單即被生成。用戶還可以在網(wǎng)站上留言。圖5-22這張是管理員的用例圖,通過這張圖我們可以看到,管理員登陸系統(tǒng)后可以進行管理員管理,用戶管理,產(chǎn)品管理,訂單管理,留言管理等,這都是對超級管理員而言,管理員是有權(quán)限之分的,超級管理員可以添加普通管理員,可以修改普通管理員信息,比如修改普通管理員的權(quán)限密碼等,特定全線的管理員只能至星期對應(yīng)權(quán)限的操作,比如一個知具有用戶管理權(quán)限的管理員就不能操作產(chǎn)品管理。對于一個超級管理員,他具有最大權(quán)限,在管理員管理中,它可以對普通管理員進行增刪改查,在用戶管理中,它可以修改用戶的個人資料,可以將某個用戶刪除等,當(dāng)然也可以查看用戶列表,在訂單管理中,管理員可以查看訂單列表,處理用戶提交的訂單。留言管理模塊,管理員可以講用戶的留言刪除。圖5-235.6系統(tǒng)的業(yè)務(wù)流程圖5-24圖5-25圖5-26
6電子產(chǎn)品交易系統(tǒng)的詳細設(shè)計6.1電子產(chǎn)品交易系統(tǒng)模塊的劃分在本次設(shè)計中,本人完成以下模塊的設(shè)計:購物車模塊管理員模塊產(chǎn)品管理6.2電子產(chǎn)品交易系統(tǒng)部分主要模塊流程及的具體實現(xiàn)6.2.1購物車管理模塊 購物車管理模塊主要功能有如下幾個部分:創(chuàng)建購物車 當(dāng)客戶訪問客戶端,并且進入登錄界面進行登錄操作時,這時會系統(tǒng)會給客戶創(chuàng)建一個購物車放入服務(wù)器的Session會話中。使客戶在整個會話中都擁有一個相同的購物車。這里主要運用了Http協(xié)議中的會話機制,將購物車保存在客戶的會話中,這樣在整個客戶游覽不同頁面商品的過程中,都會使用同一個購物車對象。 具體執(zhí)行步驟:從客戶的請求對象中獲取Session會話對象從會話對象中獲取購物車對象判斷是購物車對象是不是空的,如果是空是就創(chuàng)建一個 /* *在監(jiān)聽到session被創(chuàng)建之后,就立即向session中添加一個購物車Car; */ publicvoidsessionCreated(HttpSessionEventarg0){ HttpSessionsession=arg0.getSession(); Cartcart=newCart(); session.setAttribute("cart",cart); } /* *從session中獲得購物車 */ Cartcart=(Cart)session.getAttribute("cart"); if(cart==null){ cart=newCart(); }向購物車中添加一個商品項圖6-1 客戶在查看網(wǎng)頁上的一個商品時,當(dāng)向服務(wù)器發(fā)送一個“添加到購物車”的請求時,會執(zhí)行這個功能。功能執(zhí)行過程:從客戶請求對象中獲取商品的ID調(diào)用業(yè)務(wù)層的方法根據(jù)商品ID去數(shù)據(jù)查詢商品的信息,返回商品對象從商品對象中獲取商品名,商品價格,來構(gòu)建一個商品項對象從Session會話中獲取購物車對象調(diào)用業(yè)務(wù)層的方法來根據(jù)購物車對象和商品項對象來執(zhí)行添加操作將些商品項對象放入到購物車中功能流程圖:圖6-2部分實現(xiàn)代碼: /* *從數(shù)據(jù)庫中把商品取到; */ ProductServiceproductService=(ProductService)ServiceFactory .getInstance().getService(Globals.PRODUCT_SERVICE); Integerid=Integer.parseInt(request.getParameter("productid")); Productproduct=productService.getProductById(id); /* *在向購物車中添加商品的時候會判斷商品是否已經(jīng)存在, *已存在的就不讓在加入了; */ if(cart.isExist(id)){ message="該商品已經(jīng)存在!請<aonclick='javascript:history.go(-1)'>返回</a>!"; request.setAttribute("message",message); returnmapping.findForward("error"); }else{ /* *向購物車添加一個商品; */ cart.addCart(product); session.setAttribute("cart",cart); returnmapping.findForward("addcartsuccess"); } }修改購物車中一個商品項圖6-3 在客戶查看購物車時,想修改自己的購買商品時,會執(zhí)行這個功能。由于商品的名稱和價格都是系統(tǒng)管理人員設(shè)置的,所以客戶都不可以修改,客戶只能修改他/她所購買商品的數(shù)量。修改所選購的商品數(shù)量時,相應(yīng)的商品項的小計和購物車的總計都會保持實時的更新。 功能的執(zhí)行步驟:將ActionForm轉(zhuǎn)換為ItemForm對象從ItemForm對象中獲取商品ID從Session會話中獲取購物車對象根據(jù)商品ID去調(diào)用業(yè)務(wù)層的方法去修改商品項修改小計將些商品項對象放入到購物車中 功能流程圖: 圖6-4 部分實現(xiàn)代碼: productid=Integer.parseInt(request.getParameter("productid")); intnum=Integer.parseInt(request.getParameter("num")); HttpSessionsession=request.getSession(); Cartcart=(Cart)session.getAttribute("cart"); cart.modifyNum(productid,num);查看購物車圖6-5客戶選取了所有的商品后,來向服務(wù)器發(fā)送“購物車”請求時,會執(zhí)行此功能,系統(tǒng)根據(jù)會話中的購物車中的商品項,來獲取客戶所選選商品的一個集合,在JSP頁面上對這個集合中的商品項進行顯示。功能的執(zhí)行步驟:從客戶的請求對象中獲取購物車對象從購物車對象中獲取所有的商品項將所有的商品項對象加載到請求對象中發(fā)送給客戶端功能流程圖:圖6-6部分實現(xiàn)代碼:<c:iftest="${!emptyducts}"> <c:forEachvar="carproducts"items="${cart.cartProducts}"varStatus="status"> <tr> <formmethod="post" action="<%=request.getContextPath()%>/biz/cart.do"name="f1"> <inputtype="hidden"name="productid"value="${ductid}"> <inputtype="hidden"name="number"value="${carproducts.num}"> <inputtype="hidden"name="method"value="modify"> <tdclass=tablebody2valign=middlealign=centerwidth=""> ${status.count} </td> <tdclass=tablebody1valign=middlewidth=""> ${} </td> <tdclass=tablebody2valign=middlealign=centerwidth=""> ${duct.price} </td> <tdclass=tablebody1valign=middlealign=centerwidth=""> <inputtype="text"name="num"value="${carproducts.num}"size="4" onblur="javascript:if(this.value<1){alert('對不起,產(chǎn)品數(shù)量不能小于1');this.focus();}else{number.value=this.value;}"/> </td> <tdclass=tablebody2valign=middlealign=leftwidth=""> ${carproducts.total} </td> <tdclass=tablebody1valign=middlealign=centerwidth=""> <inputtype="button"value="刪除"class="button" onclick="javascript:window.location='<%=request.getContextPath()%>/biz/cart.do?method=remove&productid=${ductid}';"> <inputtype="submit"value="保存修改"class="button"> </td> </tr> </c:forEach>刪除購物車中的一個商品項客戶在查看購物車時,當(dāng)向服務(wù)器發(fā)送一個“刪除商品項”的請求時,會執(zhí)行這個功能。刪除商品項時,系統(tǒng)會自動更新購物車的總計值。 圖6-7功能執(zhí)行過程:1從客戶請求對象中獲取商品的ID2調(diào)用業(yè)務(wù)層的方法根據(jù)商品ID去數(shù)據(jù)查詢商品的信息,返回商品對象3從Session會話中獲取購物車對象4調(diào)用業(yè)務(wù)層的方法根據(jù)商品ID去刪除購物車對象中的商品項5將購物車重新加入到Session會話中,來更新Session會話中的購物車對象部分代碼實現(xiàn)://刪除購物車中一個商品項 ItemFormitemForm=(ItemForm)form; Cartcart=null; cart=(Cart)request.getSession().getAttribute("cart"); if(cart==null){ returnmapping.findForward("error"); } try{ CartManagercm=newCartManager(); Integerpid=itemForm.getPid(); cm.removeItem(cart,pid); Set<Item>items=cm.getAllItems(cart); doublecost=cm.getCost(cart); request.setAttribute("items",items); request.setAttribute("cost",cost); // /** *按商品號刪除訂單項 *@paramcart購物車 *@paramid商品號 */ publicvoidremoveItem(Cartcart,Integerid)throwsBizException{ Set<Item>items=cart.getItems(); for(Itemitem:items){ if(item.getPid().equals(id)){ cart.deleteItem(item); break; } } }清空購物車 圖6-8客戶在查看購物時不要想要所有所選的商品時,向服務(wù)器發(fā)送“清空購物車”請求時會執(zhí)行此功能。 執(zhí)行此功能的步驟:從請求對象中獲取Session會話從Session會話中獲取購物車對象將購物車對象傳給業(yè)務(wù)層的方法去清空購物車中的所有商品項 功能流程圖: 圖6-9 部分實現(xiàn)代碼: /* *也就是從session中把購物車清除掉; */ publicActionForwardremoveall(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ HttpSessionsession=request.getSession(); Cartcart=(Cart)session.getAttribute("cart"); session.removeAttribute("cart"); returnmapping.findForward("success"); }6.2.2后臺部分后臺功能只允許具有管理員權(quán)限的用戶使用,它是實現(xiàn)前臺功能的基礎(chǔ)。主要包括管理員身份驗證,訂單信息管理模塊,添加商品模塊,查詢用戶信息管理模塊組成后臺功能介紹(1)功能模塊細分:管理員身份驗證:為合法用戶提供一個后臺入口。訂單信息管理模塊:網(wǎng)站管理者對用戶訂單的執(zhí)行和編輯狀態(tài)。添加商品模塊:向商品表插入前臺首頁展示的商品信息。查詢用戶信息管理模塊:查詢注冊所有用戶,對一些非法或失信用戶進行刪除操作。公告信息管理模塊:網(wǎng)站向用戶發(fā)送最新公告信息。(2)后臺首頁運行結(jié)果網(wǎng)站后臺首頁運行結(jié)果,如圖6-10所示。圖6-101管理員登錄在前臺首頁單擊管理員入口,將轉(zhuǎn)到管理員登錄頁面。該頁面的功能是對管理員身份驗證,用戶輸入用戶名和密碼后單擊“登錄”按鍵,系統(tǒng)將判斷用戶名和密碼的有效性,如果通過驗證則轉(zhuǎn)到后臺首頁,反之則提示錯誤。管理員登錄頁面的運行結(jié)果如下圖6-11所示。圖6-11管理員登陸代碼實現(xiàn)如下 publicActionForwardadminLogin(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ ActionForwardforward=mapping.findForward("error"); Stringname=request.getParameter("name"); Stringpassword=request.getParameter("password"); try{ AdmincurrentAdmin=adminService.login(name,password); if(currentAdmin==null){ returnforward=mapping.findForward("error"); } request.getSession().setAttribute("currentAdmin",currentAdmin); forward=mapping.findForward("success"); }catch(Exceptione){ e.printStackTrace(); returnforward=mapping.findForward("error"); } returnforward; }當(dāng)管理員進入系統(tǒng)后就可以根據(jù)其權(quán)限,進行指定的操作,系統(tǒng)使用了過濾器執(zhí)行此功能 HttpSessionsession=httpServletRequest.getSession(); AdmincurrentAdmin=(Admin)session.getAttribute("currentAdmin"); SethadModules=currentAdmin.getModules(); IntegermoduleId=Integer.parseInt(request.getParameter("moduleId")); for(Iteratorit=hadModules.iterator();it.hasNext();){ Modulem=(Module)it.next(); if(m.getModuleId().equals(moduleId)){ chain.doFilter(request,response); return; } } 2管理員管理圖6-12如果該管理員具有管理員管理的權(quán)限,那么他可以看到管理員列表,可以增加管理員,可以刪除一個管理員,還可以修改一個管理員的權(quán)限,其中修改管理員權(quán)限地實現(xiàn)如下:修改一個管理員的信息: try{ Adminadmin=adminService.findAdminById(adminId); admin.setPassword(password1); admin.setEmail(email); admin.setTel(tel); Collectionmodules=null; modules=moduleService.findAll(); Setmods=newHashSet(); if(modulesId==null){ returnforward=mapping.findForward("success"); } for(inti=0;i<modulesId.length;i++){ IntegermoduleId=Integer.parseInt(modulesId[i]); for(Objecto:modules){ Modulemodule=(Module)o; if(moduleId.equals(module.getModuleId())){ mods.add(module); } } } admin.setModules(mods); adminService.modify(admin); Collectionadmins=adminService.findAll(); HttpSessionsession=request.getSession(); session.setAttribute("admins",admins); 增加管理員的窗口如xxxxxxxxxxxxxxx 代碼實現(xiàn)如下:Stringadminname=request.getParameter("adminName"); StringloginPassword1=request.getParameter("password1"); StringloginPassword2=request.getParameter("password2"); Stringemail=request.getParameter("email"); Stringtel=request.getParameter("tel"); String[]modulesId=request.getParameterValues("modules"); Adminadmin=newAdmin(); admin.setAdminname(adminname); admin.setPassword(loginPassword1); admin.setEmail(email); admin.setTel(tel); Collectionmodules=null; try{ modules=moduleService.findAll(); Setmods=newHashSet(); for(inti=0;i<modulesId.length;i++){ IntegermoduleId=Integer.parseInt(modulesId[i]); for(Objecto:modules){ Modulemodule=(Module)o; if(moduleId.equals(module.getModuleId())){ mods.add(module); } } } admin.setModules(mods); adminService.addAdmin(admin); Collectionadmins=adminService.findAll(); request.getSession().setAttribute("admins",admins);以下商品管理,用戶管理,留言管理的實現(xiàn)方法和此類似,不再贅述,只說明其業(yè)務(wù)方法。3商品管理單擊導(dǎo)航區(qū)的“產(chǎn)品管理”超鏈接,系統(tǒng)將打開添加商品頁面,該頁面主要用于商品信息添加到數(shù)據(jù)庫表中,以提供前臺首頁商品展示類別展示所需要的數(shù)據(jù)依據(jù)。目錄添加頁面的運行結(jié)果如圖圖6-13所示。 圖6-13為了減少錯誤,在提交商品信息時,需要對數(shù)據(jù)的合法性進行驗證,輸入的商品價格不能是空字符型,而輸入的圖片只支持Gif格式等,這些任務(wù)可以用Bean來實現(xiàn)的,也可以由腳本語言Javascript編寫,以下是腳本語言函數(shù)check()來完成的。為了確保信息在數(shù)據(jù)表中的唯一性,在
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公設(shè)備耗材采購協(xié)議書
- 商鋪承包出租合同
- 2025年長春貨運從業(yè)資格考試題庫及答案詳解
- 企業(yè)網(wǎng)站建設(shè)與維護指南含實操字樣
- 瑞香種苗批發(fā)合同6篇
- 2025年高中化學(xué)新教材同步 必修第一冊 模塊綜合試卷(一)
- 養(yǎng)生館合股協(xié)議合同范本
- 醫(yī)院員工勞務(wù)合同范本
- 司機聘用合同范例范例
- 公司和員工勞動合同范本
- 深入推進依法行政
- GB/T 14643.5-2009工業(yè)循環(huán)冷卻水中菌藻的測定方法第5部分:硫酸鹽還原菌的測定MPN法
- 醫(yī)院轉(zhuǎn)診轉(zhuǎn)院記錄單
- 余熱回收節(jié)能技術(shù)課件
- 表面工程學(xué)第四章-表面淬火和表面形變強化技術(shù)
- 健康管理調(diào)查表
- 汶川地震波時程記錄(臥龍3向)
- NACHI那智機器人(操作篇)課件
- 企業(yè)員工培訓(xùn)PPT課件:職務(wù)犯罪培訓(xùn)
- 場地租賃安全管理協(xié)議書
- 數(shù)學(xué)物理方程(很好的學(xué)習(xí)教材)PPT課件
評論
0/150
提交評論