本科畢業(yè)論文--基于ssh框架的自由交易系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
本科畢業(yè)論文--基于ssh框架的自由交易系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
本科畢業(yè)論文--基于ssh框架的自由交易系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
本科畢業(yè)論文--基于ssh框架的自由交易系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
本科畢業(yè)論文--基于ssh框架的自由交易系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

東??茖W(xué)技術(shù)學(xué)院畢業(yè)論文PAGEPAGEII基于SSH框架的自由交易系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要在互聯(lián)網(wǎng)快速發(fā)展的時代里,電商已經(jīng)不是什么陌生的名詞了,網(wǎng)購也已經(jīng)成為我們?nèi)粘I钪胁豢煞指畹囊徊糠?。由電子商?wù)衍生而來的校園電子商務(wù)文化業(yè)越來越深受大學(xué)生的歡迎。但因?yàn)樵谛@環(huán)境里,大學(xué)生苦于尋找買家,導(dǎo)致許多書籍,器材,電子設(shè)備等學(xué)生用品只能廉價的賣到廢品收購站,有的甚至丟棄,造成了嚴(yán)重的資源浪費(fèi)。而且義賣,跳蚤市場等都需要大量的人力物力。因此,對于這些資源的利用,以及對學(xué)生直接的服務(wù)就需要一個以大學(xué)校園為環(huán)境的自由交易系統(tǒng),實(shí)現(xiàn)學(xué)生之間自由交易。本系統(tǒng)只對用戶和留言進(jìn)行管理,對于商品以及訂單的操作完全交給用戶自己管理,充分實(shí)現(xiàn)了自由交易的目的。用戶只要注冊登錄就能進(jìn)行商品的出售,對正在出售的商品下訂單,在線下完成最終的交易。本系統(tǒng)是在Struts+Hibernate+Spring框架下,采用了MyEclipse10.6開發(fā)工具和MYSQL數(shù)據(jù)庫進(jìn)行設(shè)計(jì)開發(fā)。本論文按照系統(tǒng)的設(shè)計(jì)過程參考軟件工程的思想作了詳細(xì)說明,并對核心的模塊代碼做了詳細(xì)介紹,最后對已完成的系統(tǒng)進(jìn)行測試驗(yàn)證?!娟P(guān)鍵詞】自由交易系統(tǒng),數(shù)據(jù)庫,Struts框架,Hibernate框架SSH-basedFreeTradeSystemDesignandImplementation(Departmentofmathematicsphysicsandinformation,DonghaiScience&TechnologySchool316004)AbstractWiththerapiddevelopmentoftheInternetera,E-commerceisnotastrangenounanymore,andonlineshoppinghasbeenaninseparablepartinourdailylife.Thecampuselectroniccommerceculturalindustrywhichderivesfromelectroniccommercehasbeenmoreandmorepopularwithuniversitystudents.However,it’sdifficultforstudentstofindbuyers,resultinginmanybooks,material,electronicequipmentandotherstudentsuppliescanonlybesoldcheaptotherecyclingstation,andsomeevendiscarded,causingaseriouswasteofresources.Thebazaar,fleamarketrequiresalotofmanpowerandmaterialresources.Therefore,fortheuseoftheseresources,aswellasthedirectserviceforstudentsrequiresafreetradingsystemenvironmentinuniversitycampustorealizethefreetradeamongstudents.Thesystemonlymanagesusersandmessages,thecommodityandtheoperationoforderarecompletelyinthehandsoftheusermanagement,whichcanfullyrealizethepurposesofthefreetrading.Aslongastheuserregisteredandlogged,goodscanbesold.Theusercanplaceanordergoodsarebeingsoldundertheorder,thenhecanfinishthefinaldealunderline.ThissystemisdesignedanddevelopedundertheStruts+Hibernate+Springframe,usingtheMyEclipse10.6developmenttoolsandMySQLdatabase.Thisthesiswillmakeadetailedexplanationofthethoughtthataccordingtothereferencesoftwareprocessdesignprocessofthesystem,andmakeadetailedintroductionofthecoreofthemodulecode,finallyteststhecompletedsystem.【Keywords】Freetradesystem,Database,Strutsframe,Hibernateframe

目錄摘要 IAbstract II1緒論 11.1課題背景 11.2目的和意義 11.3系統(tǒng)設(shè)計(jì)思想 11.4系統(tǒng)的開發(fā)環(huán)境與技術(shù)背景 21.4.1開發(fā)環(huán)境 21.4.2技術(shù)背景 32自由交易系統(tǒng)分析 62.1自由交易系統(tǒng)的可行性分析 62.1.1市場可行性 62.1.2技術(shù)可行性 62.1.3經(jīng)濟(jì)可行性 72.2自由交易系統(tǒng)業(yè)務(wù)流程分析 72.3自由交易系統(tǒng)需求分析 72.3.1系統(tǒng)的功能需求 82.3.2系統(tǒng)的性能需求 82.3.3系統(tǒng)的其他需求 83自由交易系統(tǒng)設(shè)計(jì) 103.1系統(tǒng)功能模塊設(shè)計(jì) 103.2系統(tǒng)的詳細(xì)設(shè)計(jì) 113.2.1主界面的設(shè)計(jì) 113.2.2用戶模塊的設(shè)計(jì) 123.2.3商品模塊的設(shè)計(jì) 133.2.4訂單模塊的設(shè)計(jì) 133.3數(shù)據(jù)庫的設(shè)計(jì) 143.3.1數(shù)據(jù)分析 143.3.2數(shù)據(jù)庫的關(guān)聯(lián)關(guān)系圖 153.3.3數(shù)據(jù)表的設(shè)計(jì) 153.3.4數(shù)據(jù)庫安全性和完整性的設(shè)計(jì) 194自由交易系統(tǒng)的實(shí)現(xiàn)與編碼 204.1架構(gòu)設(shè)計(jì) 204.1.1攔截器的設(shè)計(jì) 204.1.2應(yīng)用配置文件 214.1.3Spring配置文件 224.2用戶模塊的實(shí)現(xiàn)與編碼 254.3商品訂單模塊的實(shí)現(xiàn)與編碼 274.4管理員模塊的實(shí)現(xiàn)與編碼 335自由交易系統(tǒng)測試 345.1測試的基本概念 345.2軟件測試的任務(wù)和目的 355.3軟件測試的原則、內(nèi)容及方法 355.4自由交易系統(tǒng)測試 355.4.1用戶注冊模塊測試 365.4.2添加商品測試 365.4.3修改用戶信息模塊測試 376結(jié)論 39參考文獻(xiàn) 40東??茖W(xué)技術(shù)學(xué)院畢業(yè)論文PAGEPAGE141緒論1.1課題背景在互聯(lián)網(wǎng)還沒有產(chǎn)生之前,人們的交易都局限在規(guī)定的市場里。有時候,人們?yōu)榱虽N售自己的產(chǎn)品,都要早出晚歸的出售著自己的商品。或者帶著自己商品走街串巷,有時候一整天的勞動也沒有一個好的成交量。傳統(tǒng)的市場不僅需要大量的人力財(cái)力的付出,銷售的數(shù)量也不是很良好。但隨著互聯(lián)網(wǎng)的普及,電子商務(wù)也隨著互聯(lián)網(wǎng)快速的發(fā)展起來。有了電子商務(wù)之后,人們的交易變得豐富多彩,不用大老遠(yuǎn)的跑到市場進(jìn)行購物,只要在自己的電腦上點(diǎn)點(diǎn)鼠標(biāo)就能買到自己想要的商品[1]。而大學(xué)生做為主要電子商務(wù)的主要市場,已經(jīng)成為了網(wǎng)購電商的主要市場。但現(xiàn)在大學(xué)校園的市場和現(xiàn)在網(wǎng)購的市場并不是完全重疊的。校園有校園穩(wěn)定的市場,是網(wǎng)購所不能提供的。自由交易系統(tǒng)是現(xiàn)代校園交易發(fā)展的必然方向,特別是在現(xiàn)在這樣一個互聯(lián)網(wǎng)發(fā)達(dá)的校園環(huán)境里,我們每天的生活都離不開互聯(lián)網(wǎng)。并且在校園環(huán)境中,隱藏著巨大而穩(wěn)定的交易市場。大一新生剛進(jìn)校園時,需要購買大量的生活用品,每一年都是如此,購買物品單一,需求巨大而且穩(wěn)定;巨大的二手市場,每一屆學(xué)生畢業(yè)有很多都是將自己的書賣掉,但在大學(xué)中,基本上一本書只用了一個學(xué)期,因此可以將二手書出售給需要的人。但是校園有市場卻沒有一個好的平臺,使得造成了大量的資源浪費(fèi)。因此,開發(fā)一個校園版的自由交易系統(tǒng)是非常必要的。1.2目的和意義雖然現(xiàn)在互聯(lián)網(wǎng)購物如茶如火,但是在校園環(huán)境下的交易也是很急需的,卻沒有這樣一個平臺。因此,提供這么一個系統(tǒng)來當(dāng)平臺是非常有必要的,不僅能將一些義賣活動轉(zhuǎn)移到線上,而且能促成校園二手市場的形成,對于資源的再利用有很大的幫助。因?yàn)閷W(xué)生所購買的物品也比較單一,因此可以在該平臺上比較低價出售學(xué)生必需品,并且能發(fā)布一些消費(fèi)活動,能有效的拉動周邊經(jīng)濟(jì)增長。1.3系統(tǒng)設(shè)計(jì)思想對于一個交易平臺,必須有一個合理的系統(tǒng)來支持它。因此就該明確系統(tǒng)有什么功能、能解決什么問題,要有一個完整的設(shè)計(jì)思想。一個合理實(shí)用的自由交易系統(tǒng),應(yīng)該具備操作容易、界面清晰、交互直觀、功能全面等優(yōu)點(diǎn)??梢宰層脩艨焖俚臑g覽自己意向的商品,并且能直觀的和賣家進(jìn)行交流。該自由交易系統(tǒng)的設(shè)計(jì)目標(biāo)從以下幾個方面考慮:(1)技術(shù)性:本系統(tǒng)采用Java語言開發(fā),采用MyEclipse開發(fā)工具和MySQL數(shù)據(jù)庫整合開發(fā),并采用SSH框架進(jìn)行設(shè)計(jì),大大減少了開發(fā)時間。MyEclipse開發(fā)工具和MySQL數(shù)據(jù)庫都是免費(fèi)的,大大節(jié)省了成本。(2)實(shí)用性:本系統(tǒng)主要將校園內(nèi)的交易從線下搬到線上,一切以用戶交易的方便出發(fā),方便校園內(nèi)的交易,提高物品的利用率,減少資源浪費(fèi)。(3)可維護(hù)性:實(shí)用SSH框架進(jìn)行設(shè)計(jì)開發(fā),大大降低了代碼的耦合性,使系統(tǒng)不用大面積維護(hù),當(dāng)出現(xiàn)問題時,可以隨時快速的進(jìn)行維護(hù)1.4系統(tǒng)的開發(fā)環(huán)境與技術(shù)背景1.4.1開發(fā)環(huán)境開發(fā)一個JavaWeb應(yīng)用程序的環(huán)境,需要的環(huán)境是:JavaJDK,IDE(集成開發(fā)環(huán)境)、Web服務(wù)器以及數(shù)據(jù)庫。JavaJDK為Java的開發(fā)環(huán)境,其中包含了開發(fā)Java程序的一切工具,是面向開發(fā)人員的。自由交易系統(tǒng)采用Sun公司官方標(biāo)準(zhǔn)的JDK,并且使用MyEclipse做為集成開發(fā)環(huán)境。MyEclipse是對EclipseIDE的擴(kuò)展,利用它可以使我們在數(shù)據(jù)庫和JavaEE開發(fā)、發(fā)布,以及項(xiàng)目整合方面大大提高工作效率。它不僅支持JavaEE5官方標(biāo)準(zhǔn),而且開發(fā)功能非常強(qiáng)大,只要開發(fā)者輸入代碼的前幾個字母,并使用快捷鍵就能非??焖俚耐瓿纱a編寫,不僅集成Spring、Struts、Hibernate、iBatis、WebWork等各種民間框架,還能自動將Web應(yīng)用程序部署到Tomcat、JBoss、WebLogic等各類服務(wù)器,瀏覽MySQL、Oracle、DB2、Derby、MSSQLServer等各類數(shù)據(jù)庫。顯而易見,這是一個非常理想的開發(fā)工具[2,3]。在服務(wù)器方面,本系統(tǒng)使用了免費(fèi)的Tomcat服務(wù)器。Tomcat是Apache軟件基金會開發(fā)的,并且有Sun公司的參與和支持,已經(jīng)實(shí)現(xiàn)了JavaEE5中Web層的各種規(guī)范因此最新的Servlet和JSP技術(shù)總能在Tomcat中體現(xiàn)。因?yàn)門omcat技術(shù)先進(jìn)、服務(wù)器穩(wěn)定,使得大部分Java開發(fā)者采用Tomcat服務(wù)器,是目前主流的服務(wù)器之一,只要在官網(wǎng)上下載好服務(wù)器,并在MyEclipse里配置Tomcat服務(wù)器路徑就能使用。因此本系統(tǒng)也不例外的使用了該服務(wù)器[4]。MySQL數(shù)據(jù)是一個小型關(guān)系型數(shù)據(jù)庫,其特點(diǎn)是體積小、速度快、總體擁有成本低,在開發(fā)者自己的電腦上就能安裝使用。并且MySQL開放源碼,使得許多中小型網(wǎng)站選擇使用MySQL數(shù)據(jù)庫[5]。1.4.2技術(shù)背景HTML技術(shù):超文本標(biāo)記語言,是WWW的描述語言。HTML語言能把一臺電腦中的文本或圖形與另一臺電腦中的文本或圖形方便地聯(lián)系在一起,形成有機(jī)的整體,人們不用考慮具體信息是在當(dāng)前電腦上還是在網(wǎng)絡(luò)的其它電腦上。HTML文本是由HTML命令組成的描述性文本,HTML命令可以說明文字、圖形、動畫、聲音、表格、鏈接等。HTML的結(jié)構(gòu)包括頭部(Head)、主體(Body)兩大部分。頭部描述瀏覽器所需的信息,主體包含所要說明的具體內(nèi)容。JSP技術(shù):JSP技術(shù)基于平臺和服務(wù)器的相互獨(dú)立,能夠在任何Web服務(wù)器上并且支持來自多家開發(fā)商提供的各種各樣工具包。JSP技術(shù)使用Java編程語言編寫類XML的tags和Scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和Scriptleets訪問存在于服務(wù)器端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。JSP技術(shù)的特點(diǎn)如下:JSP代碼具有較高的移植性,可以實(shí)現(xiàn)一次編寫,到處運(yùn)行。JSP代碼基本上可以再所有平臺上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。因?yàn)?,JSP和JavaBeans甚至不用重新編譯,因?yàn)镴ava字節(jié)碼都是標(biāo)準(zhǔn)的與平臺無關(guān)。絕大多數(shù)JSP頁面依賴于可重用的、夸平臺的組件(JavaBeans或者EnterpriseJavaBeansTM組件)來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。JSP封裝了許多功能,通過JSP標(biāo)識能夠訪問和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性等。由于JSP頁面的內(nèi)置腳本語言是基于Java編程語言的,而且所有的JSP頁面都被編譯成為JavaServlet,因此JSP頁面就具有Java技術(shù)的所有好處,包括健壯的存儲管理和安全性。Java中鏈接數(shù)據(jù)庫的技術(shù)是JDBC,Java程序通過JDBC驅(qū)動程序與數(shù)據(jù)相連,執(zhí)行查詢、提取數(shù)據(jù)等操作[6]。JavaScript技術(shù):JavaScript,一種直譯式腳本語言,是基于對象(Object)和事件驅(qū)動(EventDriven)并具有安全性能的腳本語言,有網(wǎng)景公司的布蘭登·艾克,在網(wǎng)景導(dǎo)航者瀏覽器上首次設(shè)計(jì)實(shí)現(xiàn)而成。是基于對象的語言,所有對象都是有瀏覽器提供給用戶的,直接使用即可。完整的JavaScript包括:ECMAScript,描述了該語言的語法和基本對象;文檔對象模型(DOM),描述處理網(wǎng)頁內(nèi)容的方法和接口;瀏覽器對象模型(BOM),描述與瀏覽器進(jìn)行交互的方法和接口。JavaScript基本特點(diǎn):是一種解釋性腳本語言;向HRML頁面添加交互行為;可以直接嵌入HTML頁面,能夠?qū)懗詥为?dú)的js文件,在HTML頁面鏈接使用,有利于結(jié)構(gòu)和行為的分離。利用JavaScript技術(shù)我們可以完成嵌入動態(tài)文本于HTML頁面;對瀏覽器事件做出響應(yīng);讀取HTML元素;在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù)(常用來完成用戶注冊,添加數(shù)據(jù)等);檢測方可的瀏覽器信息,控制cookies,包括創(chuàng)建和修改等。JavaScript具有簡單性:直譯語言,它所定義的變量類型是采用弱類型;動態(tài)性:直接對客戶端的輸入做出響應(yīng),不需要經(jīng)過Web服務(wù)器;跨平臺性:JavaScript依賴瀏覽器本身,與操作環(huán)境無關(guān),只要瀏覽器支持JavaScript即可;安全性:JavaScript只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動態(tài)交互,有效的防止了數(shù)據(jù)的丟失。因此,JavaScript是專門為Web制作而量身定做的一種編程語言。MVC設(shè)計(jì)模式:作為一種經(jīng)典的設(shè)計(jì)模式典范,MVC設(shè)計(jì)模式強(qiáng)制性的使應(yīng)用程序的輸入處理和輸出分開。因此,應(yīng)用程序被分成三個核心部件:M是指業(yè)務(wù)模型(Model):應(yīng)用程序的主體部分,表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯。包含應(yīng)用程序的核心功能,封裝系統(tǒng)的狀態(tài)。一個模型能為多個視圖提供數(shù)據(jù),由于同一個模型可以被多個視圖重用,大大提高了應(yīng)用的可重用性。V是指用戶界面視圖(View):用戶看到并與之交互的界面,對Web應(yīng)用程序來說,視圖就是HTML元素和像XHTML、XML/XSL等一些標(biāo)識語言和Webservices。MVC模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理是在模型中進(jìn)行的。C則是控制器(Controller):接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求,所以當(dāng)單擊Web頁面中的超鏈接和發(fā)送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是將模型與視圖匹配在一起,共同完成用戶的請求。只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。MVC設(shè)計(jì)模式基本分層圖如圖1-1所示[7]。圖1-1MVC設(shè)計(jì)模式基本分層圖Struts2框架:Struts2是基于MVC模式的JavaEE技術(shù)Web開發(fā)框架。使用Struts2框架有利于Web項(xiàng)目的維護(hù)。Struts2是WebWork框架基礎(chǔ)和Struts1的優(yōu)點(diǎn)進(jìn)行整合而設(shè)計(jì)出的新MVC分層框架。Struts2框架大大降低了代碼的耦合性,它的分層架構(gòu)使得開發(fā)思路變得非常清晰,更利于修改,是國內(nèi)的主流框架[8]。Hibernate框架:Hibernate是一種ORM框架(持久化對象/關(guān)系映射框架),在Web開發(fā)中占據(jù)了重要地位。Hibernate框架的應(yīng)用,改變了傳統(tǒng)的JDBC連接數(shù)據(jù)庫的方式,使連接數(shù)據(jù)庫的方式變得非常簡單。傳統(tǒng)的數(shù)據(jù)持久化操作中,需要使用JDBC并配合大量的SQL語句。Connection、Statement、ResultSet等JDBCAPI與SQL語句夾雜在一起,開發(fā)效率很低。而Hibernate框架使用簡單、功能強(qiáng)大、對卻大多數(shù)數(shù)據(jù)庫都支持。Hibernate能直接操作POJO,并且是一種輕量級的框架,不依賴于任何容器[9]。Spring框架:Spring框架也是一個輕量級的JavaEE框架,因此也不需要依賴于容器就能運(yùn)行的。它以IoC、AOP為主要思想,協(xié)同Struts、Hibernate、iBatis等眾多框架。用于項(xiàng)目的整合,好處是解耦[10,11]。其特點(diǎn)如下:輕量級:無需繼承Spring中的類。IoC:又稱依賴注入,對象被動接收依賴類而不是主動去找,從而降低耦合度。AOP:面向切向面編程??梢酝ㄟ^預(yù)編譯的方式或運(yùn)行期的動態(tài)代理類,實(shí)現(xiàn)修改代碼的前提下給程序添加統(tǒng)一功能的一種技術(shù)。Spring是免費(fèi)開源代碼的。Spring擁有眾多社區(qū)支持。2自由交易系統(tǒng)分析系統(tǒng)分析是傳統(tǒng)工程生命周期里的一個環(huán)節(jié),亦即:分析設(shè)計(jì)開發(fā)測試,當(dāng)然,整個過程會有迭代和變更,但仍遵循著這樣的順序。系統(tǒng)分析要解決的是“軟件做什么”的問題。當(dāng)系統(tǒng)分析把軟件功能確定無誤時,整個軟件過程才有良好的開端。在軟件工程中,一個軟件的系統(tǒng)分析是軟件工程中的一個重要過程,相當(dāng)于這款軟件的血液。在這個過程中,軟件開發(fā)者應(yīng)該先確定客戶的需要,再根據(jù)需求進(jìn)行開發(fā)。只有在確定了這些需要后,他們才能夠找到問題的解決方法,使軟件更加完善。2.1自由交易系統(tǒng)的可行性分析軟件可行性分析最根本的任務(wù)是對以后的行動方案提出建議。它主要通過實(shí)際調(diào)查,對新系統(tǒng)的開發(fā)是否具備可行性和必要性而進(jìn)行的一種分析和研究,主要從市場、技術(shù)、經(jīng)濟(jì)等方面來進(jìn)行分析和研究,并通過這種分析來確定新系統(tǒng)是否值得開發(fā)。2.1.1市場可行性一個大學(xué)生四年大學(xué)生活積累下的各種書籍和用品很少能畢業(yè)后全部帶回去。較為普遍解決的方式是,在外面擺攤、出售給廢品收購者、贈送學(xué)弟學(xué)妹或者丟棄。并且畢業(yè)生擺攤時間多為期末時期,非畢業(yè)生都比較忙碌,而對于一個新學(xué)期的開始,許多學(xué)生對購買舊教材,自行車等物品也變得非常熱衷。但在校生也會因?yàn)樾畔⒉蛔慊蚪?jīng)濟(jì)緊張而無法以相對優(yōu)惠的價格購買到自己需要的東西。所以校內(nèi)市場供求很不平衡。因此,提出這樣一個平臺,恰恰符合了校園交易的需求。2.1.2技術(shù)可行性本系統(tǒng)采用Java開發(fā),選用了MyEclipse開發(fā)環(huán)境和MySQL數(shù)據(jù)庫進(jìn)行開發(fā),同時采用流行的SSH框架進(jìn)行開發(fā)設(shè)計(jì),這些軟件都是方便、免費(fèi)、安全可靠的。因?yàn)檫x用MyEclipse開發(fā)工作,使得開發(fā)的系統(tǒng)具有界面美觀,功能俱全,顯示內(nèi)容簡明,操作簡單,使用戶更容易上手。4G的內(nèi)存,1T的硬盤來存儲數(shù)據(jù),大大滿足了系統(tǒng)的設(shè)計(jì)開發(fā)和運(yùn)行2.1.3經(jīng)濟(jì)可行性由于本系統(tǒng)的設(shè)計(jì)開發(fā)采用開源的開發(fā)工具,以及免費(fèi)的數(shù)據(jù)庫,和免費(fèi)的web服務(wù)器,大大降低了開發(fā)成本。并且采用SSH框架開發(fā),減少了人力的投入。綜上所述,本系統(tǒng)在市場上的需求是很大的,而且開發(fā)目標(biāo)已經(jīng)非常明確,在市場、技術(shù)、經(jīng)濟(jì)方面都可行,并且符合需求、系統(tǒng)操作簡單、上手容易等優(yōu)點(diǎn)。開發(fā)該系統(tǒng)是完全可行的。2.2自由交易系統(tǒng)業(yè)務(wù)流程分析通過對校園生活中業(yè)務(wù)進(jìn)行調(diào)查分析及對系統(tǒng)整體業(yè)務(wù)流程進(jìn)行流程的分析,選擇部分模塊做如下具體描述。網(wǎng)站產(chǎn)品發(fā)布及商品選購業(yè)務(wù)流程描述對系統(tǒng)整體業(yè)務(wù)中最主要的自由交易及訂單進(jìn)行描述,訪問者進(jìn)入網(wǎng)站首頁,注冊成為用戶后才能訪問其他頁面。注冊成功的用戶可以發(fā)布自己的寶貝,也可以查看其他用戶發(fā)布的寶貝。如果用戶有意中的商品,就可以加入訂單,自行與賣家聯(lián)系。核心流程如下圖2-1所示。圖2-1核心流程圖2.3自由交易系統(tǒng)需求分析對于開發(fā)一個系統(tǒng),必須要明確知道用戶的需求。所以,深入分析用戶需求是軟件開發(fā)工作取得成功的關(guān)鍵所在,也是前提條件,只有滿足用戶需求才能留住用戶。因此需求分析是非常必要的過程。2.3.1系統(tǒng)的功能需求通過對校園內(nèi)交易的研究,以及校園市場條件的分析,總結(jié)出自由交易系統(tǒng)需要完成的一些具體功能,分析如下:1.訪問者注冊:訪問者只有通過注冊成為用戶后才能繼續(xù)訪問其他頁面,需要對用戶名、密碼、學(xué)號、聯(lián)系電話、性別、年齡、QQ號碼、寢室住址等進(jìn)行填寫。2.用戶修改信息:本系統(tǒng)的用戶可以修改自己的基本信息,但不允許修改學(xué)號,因?yàn)樵谛@的環(huán)境了,學(xué)號是一個學(xué)生的代表,目的是為了防止不誠信的問題發(fā)生。3.添加商品信息:用戶可以添加自己想要出售的寶貝,添加時需要詳細(xì)添加商品的簡介,方便買家購買。4.添加訂單信息:用戶登錄后,可以訪問正在出售的商品,如有意中的寶貝,可以直接加入訂單。5.用戶留言信息:用戶登錄后,對本自由交易系統(tǒng)有建議的,可以在留言頁面進(jìn)行留言,版主會根據(jù)留言的信息及時回復(fù)用戶。6.后臺管理信息:管理員登錄自由交易后臺管理系統(tǒng)就能對用戶和留言進(jìn)行管理,對于一些不遵循規(guī)則,不講信用的用戶刪除賬號。對用戶的留言進(jìn)行查看,并及時回復(fù)。2.3.2系統(tǒng)的性能需求一個系統(tǒng)的運(yùn)行不僅要有強(qiáng)硬的技術(shù)支持,更需要強(qiáng)大的運(yùn)行環(huán)境作為基礎(chǔ)。因此,高配置的硬件是必不可少的。系統(tǒng)的配置應(yīng)該要保證整個程序安全、穩(wěn)定的運(yùn)行,要提高程序處理的效率,對于用戶提交的請求,服務(wù)器能夠快速的進(jìn)行對于請求的回應(yīng),并且要及時回收沒有用的資源,釋放資源,減少資源的浪費(fèi)。2.3.3系統(tǒng)的其他需求一個系統(tǒng)在運(yùn)行后,對于運(yùn)行時產(chǎn)生的問題,系統(tǒng)應(yīng)該進(jìn)行修補(bǔ),所以定期的系統(tǒng)升級是非常必要的。不僅是系統(tǒng)升級,系統(tǒng)還應(yīng)該具備高效性、穩(wěn)定性、時效性、可塑性,自由交易系統(tǒng)在開發(fā)過程中,應(yīng)注重用戶的體驗(yàn),對于用戶上傳的寶貝能夠及時的保存在數(shù)據(jù)庫中,并且能在頁面上及時的出售;穩(wěn)定性要求自由交易系統(tǒng)正常運(yùn)行時不應(yīng)該出現(xiàn)錯誤,對于一些不可恢復(fù)的錯誤要保證數(shù)據(jù)庫的安全完整,能夠?qū)ο到y(tǒng)突發(fā)的情況進(jìn)行處理,例如服務(wù)器無法使用,要確保已經(jīng)提交的數(shù)據(jù)保存在數(shù)據(jù)庫中;對于時效性,自由交易系統(tǒng)要及時更新合作商家的廣告,對于合作方的活動要及時放在網(wǎng)站首頁。為了方便修改信息,自由交易系統(tǒng)要提供用戶信息科修改,密碼可修改,系統(tǒng)要提供相應(yīng)的信息以確保用戶正確填寫修改信息。對于交易-系統(tǒng),首要的是從用戶體驗(yàn)出發(fā),只有用戶的體驗(yàn)上去了,才能留住用戶,才能使更多的商家加入自由交易平臺來。3自由交易系統(tǒng)設(shè)計(jì)本自由交易系統(tǒng)是針對校園的自由交易平臺,通過之前對系統(tǒng)各方面的分析,現(xiàn)在可以為系統(tǒng)設(shè)計(jì)具體的模塊,以及數(shù)據(jù)庫的分析。3.1系統(tǒng)功能模塊設(shè)計(jì)自由交易系統(tǒng)根據(jù)功能可以分為七個模塊,只有一個數(shù)據(jù)庫。核心模塊為:用戶模塊、管理員模塊、商品模塊和訂單模塊;其他三個為輔助模塊,分別是:留言模塊、廣告模塊和鏈接模塊。其中,核心模塊是通過對系統(tǒng)合理的分析之后設(shè)計(jì)的,其他三個為系統(tǒng)的人性化設(shè)計(jì),主要是為了支持和輔助系統(tǒng)的。(1)用戶模塊:訪問者通過注冊成為本系統(tǒng)的用戶,用戶自身對自己的信息進(jìn)行修改,密碼的修改。(2)管理員模塊:管理員是不能被注冊的,是寫在數(shù)據(jù)庫里的,管理員主要是對用戶和留言的管理,刪除不遵守規(guī)則的用戶以及對用戶的留言及時回復(fù)。(3)商品模塊:用戶登錄后,可以添加商品到商品頁面出售自己的商品,也可以在商品頁面選購自己喜歡的寶貝。(4)訂單模塊:當(dāng)用戶出售的商品被下訂單后,在用戶的我的訂單里會顯示被下訂單的物品,用戶也可以對別人出售的寶貝下訂單,訂單會保存在用戶的另外一個訂單頁面里。(5)留言模塊:用戶對于本站建設(shè),或者自身有什么要求的,可以通過對本網(wǎng)站的留言頁面聯(lián)系網(wǎng)站管理員。(6)廣告模塊:對于一些商家想在本網(wǎng)站上進(jìn)行促銷活動的宣傳,本系統(tǒng)在網(wǎng)站的首頁上有提供了相應(yīng)的廣告位,這也是本網(wǎng)站收入的主要來源和經(jīng)濟(jì)支持。(7)鏈接模塊:本系統(tǒng)還對目前主流的網(wǎng)站進(jìn)行了友情的鏈接,友情鏈接可以更換,方便本系統(tǒng)與其他商家的合作,有利于長遠(yuǎn)的發(fā)展。系統(tǒng)功能模塊圖如圖3-1所示。圖3-1系統(tǒng)功能模塊圖3.2系統(tǒng)的詳細(xì)設(shè)計(jì)3.2.1主界面的設(shè)計(jì)本系統(tǒng)主界面是一個導(dǎo)航界面,包括用戶登錄、用戶注冊、瀏覽首頁、給我留言、網(wǎng)站維護(hù),主要功能是給各個頁面進(jìn)行導(dǎo)航。用戶只要登錄后才能進(jìn)入有功能的頁面,訪問者只有注冊登錄以后才能進(jìn)入有功能的頁面。網(wǎng)站維護(hù)鏈接到的是管理員登錄頁面,登錄后可進(jìn)行后臺管理,如用戶的管理,留言的管理。給我留言鏈接到用戶留言頁面,如果用戶對本系統(tǒng)有什么建議,可以通過留言的方式,也可以通過留言的方式聯(lián)系我們。系統(tǒng)主界面如圖3-2所示。

圖3-2系統(tǒng)主界面3.2.2用戶模塊的設(shè)計(jì)用戶模塊主要實(shí)現(xiàn)的功能是用戶添加出售商品和訂購商品,用戶還能修改自己的信息,以便交易時能及時聯(lián)系到。為安全起見,用戶還能修改自己的密碼。如圖3-3所示為用戶模塊流程圖。圖3-3用戶模塊流程圖3.2.3商品模塊的設(shè)計(jì)用戶登錄后可以將自己的寶貝添加到商品展示的頁面進(jìn)行出售。同樣的,用戶也可以在商品展示頁面訂購自己喜歡的物品,系統(tǒng)會對訂購的物品自動生成對應(yīng)的訂單。添加商品時,需要填寫所有設(shè)定好的商品信息,這樣有助于賣家對商品的銷售。而購買商品時,買家只要有意中的商品,點(diǎn)擊加入訂單即可。用戶也可以直接收索自己所意愿購買的物品。以下是商品模塊流程圖如圖3-4所示。圖3-4商品模塊流程圖3.2.4訂單模塊的設(shè)計(jì)訂單模塊主要是給用戶查詢自己售出和訂購的商品。因?yàn)楸鞠到y(tǒng)為自由交易系統(tǒng),所以每個用戶都用兩個訂單頁面,一個顯示已出售的訂單頁面,另一個顯示已訂購商品的訂單頁面。將兩種結(jié)果的訂單分開,能夠更方便用戶了解自己的信息。訂單模塊流程圖如圖3-5所示。圖3-5訂單模塊流程圖3.3數(shù)據(jù)庫的設(shè)計(jì)本系統(tǒng)采用的數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫以行和列的形式存儲數(shù)據(jù),以便于用戶理解,這一系列的行和列被稱為表,一組表組成了數(shù)據(jù)庫。即一個數(shù)據(jù)庫是由各個數(shù)據(jù)庫表Table組成;一個表Table是由行組成,表示行的集合;一個數(shù)據(jù)記錄行是由列組成,行是列的集合。在應(yīng)用程序設(shè)計(jì)中數(shù)據(jù)庫設(shè)計(jì)是最為關(guān)鍵的一項(xiàng)任務(wù)。數(shù)據(jù)庫是信息的存儲庫,供應(yīng)用程序的其他部分進(jìn)行管理并顯示給用戶。如果數(shù)據(jù)庫沒有存儲正確的數(shù)據(jù),沒有安全的保存數(shù)據(jù),或者應(yīng)用程序無法找到所需的數(shù)據(jù),那么應(yīng)用程序很少有成功的機(jī)會。在這里無用輸入無用輸出(GIGO)原則完全適用。如果底層的數(shù)據(jù)不可靠,那么無論適用這些數(shù)據(jù)的應(yīng)用程序完成什么任務(wù),結(jié)果充其量也將是不可信的[12]。因此,設(shè)計(jì)數(shù)據(jù)數(shù)據(jù)庫時必須使數(shù)據(jù)能夠正確的存儲、安全的保存。因此數(shù)據(jù)庫的設(shè)計(jì)需要從實(shí)際出發(fā)從系統(tǒng)的需求分析中合理的設(shè)計(jì)出數(shù)據(jù)庫,并將實(shí)體合理的轉(zhuǎn)換為關(guān)系表如下:用戶表,管理員表,商品表,訂單表,留言表。3.3.1數(shù)據(jù)分析通過之前的系統(tǒng)需求分析,自由交易系統(tǒng)只是一個平臺,交易的主體還是用戶,通過對用戶需求的分析來進(jìn)行數(shù)據(jù)分析是非常必要的。只有了解了用戶需求后,才能根據(jù)這些需求分析出數(shù)據(jù)需求。從而能保證數(shù)據(jù)的完整性。得到用戶需求后,就是將用戶需求轉(zhuǎn)換成數(shù)據(jù)模型。在構(gòu)建一個數(shù)據(jù)模型后,可以使用它來構(gòu)建關(guān)系型模型。在構(gòu)建了關(guān)系模型后,可以使用它來構(gòu)建數(shù)據(jù)庫。3.3.2數(shù)據(jù)庫的關(guān)聯(lián)關(guān)系圖通過對數(shù)據(jù)庫的設(shè)計(jì)以及數(shù)據(jù)分析,并結(jié)合自由交易系統(tǒng)本身的需求分析,系統(tǒng)各個模塊之間的聯(lián)系設(shè)計(jì)出了自由交易系統(tǒng)數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系圖。數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系圖如圖3-6所示。圖3-6數(shù)據(jù)庫關(guān)聯(lián)關(guān)系圖3.3.3數(shù)據(jù)表的設(shè)計(jì)自由交易系統(tǒng)數(shù)據(jù)庫命名為:nongchaoren,用來存儲系統(tǒng)中所有數(shù)據(jù)。由ER圖可知nongchaoren數(shù)據(jù)庫共有5張表。如下表3-1至3-5所示。(1)管理員表(admin):存儲管理員信息,管理員登陸時使用。如表3-1所示。表3-1admin字段名數(shù)據(jù)類型是否為空KEY默認(rèn)值描述idint(11)NoPRIid(自動編號)namevarchar(50)No管理員的賬號passwordvarchar(50)No管理員的密碼idcadvarchar(50)No管理員的等級(2)用戶表(user):存儲用戶信息,用戶登錄、添加商品、查看訂單時,能夠準(zhǔn)確的查詢出于用戶相關(guān)的信息。如表3-2所示。表3-2user字段名數(shù)據(jù)類型是否為空KEY默認(rèn)值描述idintNOPRIid(自動增長)usernamevarchar(50)NO用戶登陸賬號passwordvarchar(50)NO用戶登陸密碼stu_numberint(11)NOUNI用戶學(xué)號phonevarchar(20)NO用戶電話short_numint(11)YES用戶移動短號qqvarchar(20)NO用戶QQ號sexvarchar(2)YES用戶性別ageint(11)YES用戶年齡adderssvarchar(130)YES用戶地址(3)商品表(items):存儲商品信息,用戶登錄后,若添加出售自己的寶貝,則該商品的信息將存儲在該表中。表3-3items字段名數(shù)據(jù)類型是否為空KEY默認(rèn)值描述idintNOPRIid(自動增長)item_namevarchar(50)NO商品名稱item_pricedoubleNO商品價格item_descvarchar(200)YES商品描述item_imagevarchar(100)NO商品圖片item_kindvarchar(20)NO商品種類item_salevarchar(5)NO是否出售stu_numberint(11)NO賣家學(xué)號(4)訂單表(ordersss):存儲訂單信息,當(dāng)有交易生成時,系統(tǒng)會生成相應(yīng)的訂單,以便用戶查詢自己出售或訂購的寶貝的詳細(xì)情況。表3-4ordersss字段名數(shù)據(jù)類型是否為空KEY默認(rèn)值描述order_idint(11)NOPRIid(自動增長)item_namevarchar(50)NO訂購的商品名imagesvarchar(100)NO商品圖片item_descvarcahr(200)YES商品描述item_pricedoubleNO商品價格stu_numberint(11)NO賣家學(xué)號phonevarchar(20)NO賣家電話qqvarchar(20)NO賣家qqusernamevarchar(20)YES買家姓名buyer_addressvarchar(500)NO買家地址buyer_phonevarchar(20)NO買家電話(5)留言表(message):存儲用戶留言建議信息,提供了一個渠道供用戶與本系統(tǒng)聯(lián)系。表3-5message字段名數(shù)據(jù)類型是否為空KEY默認(rèn)值描述idint(11)NOPRIid(自動增長)inamevarchar(50)NO用戶名稱phonevarchar(20)NO聯(lián)系電話emailvarcahr(50)NO用戶郵箱addressvarchar(130)NO用戶地址contactsvarchar(260)NO留言信息3.3.4數(shù)據(jù)庫安全性和完整性的設(shè)計(jì)一個好的MySQL數(shù)據(jù)庫系統(tǒng)需要建立它的數(shù)據(jù)安全性和完整性。一個安全的數(shù)據(jù)庫要具備防范攻擊、服務(wù)器風(fēng)險和客戶端風(fēng)險,使得這些數(shù)據(jù)記錄只能被那些正確授權(quán)的用戶訪問,這涉及到數(shù)據(jù)庫的內(nèi)部安全性和外部安全性。對于內(nèi)部安全性,系統(tǒng)要防止MySQL數(shù)據(jù)目錄被在服務(wù)器主機(jī)有賬號的人進(jìn)行攻擊,不能過分對數(shù)據(jù)目錄內(nèi)容進(jìn)行授權(quán);對于外部安全性,要保護(hù)MySQL服務(wù)器免受來自通過網(wǎng)絡(luò)對服務(wù)器的鏈接對服務(wù)器鏈接的攻擊,只有提供有效的用戶名和口令才能訪問服務(wù)器管理的數(shù)據(jù)庫內(nèi)容。而數(shù)據(jù)庫的完整性,主要依靠各種各樣的關(guān)聯(lián)約束來保證的,能夠防止合法用戶使用數(shù)據(jù)庫時向數(shù)據(jù)庫中添加不合語義的數(shù)據(jù)。在本系統(tǒng)中,沒有使用明文密碼。所有的管理員和用戶密碼都是通過MD5加密技術(shù)來設(shè)置密碼。而且在Web頁面的跳轉(zhuǎn)中,不使用明文參數(shù),而是使用action進(jìn)行跳轉(zhuǎn)。保證了數(shù)據(jù)的安全性。在數(shù)據(jù)庫設(shè)計(jì)方面,每個表都設(shè)置了主鍵,用戶表中學(xué)生學(xué)號設(shè)置了唯一性約束,各個表之間存在外鍵約束,保證了數(shù)據(jù)庫的完整性。4自由交易系統(tǒng)的實(shí)現(xiàn)與編碼4.1架構(gòu)設(shè)計(jì)B/S多幾分布結(jié)構(gòu),實(shí)現(xiàn)了單一結(jié)構(gòu)想靈活多變結(jié)構(gòu)的轉(zhuǎn)變。一般基于B/S結(jié)構(gòu)的Web應(yīng)用系統(tǒng)在邏輯上可分為5層:客戶層、表示層、業(yè)務(wù)服務(wù)層、持久層和數(shù)據(jù)庫層。這種多層的體系結(jié)構(gòu)向開發(fā)者提供了一種基于組件設(shè)計(jì)和多層次Web系統(tǒng)的設(shè)計(jì)方法。用Struts實(shí)現(xiàn)從Web到后臺系統(tǒng)的映射,然后由Spring管理這些Action,把它們作為Bean和其他對象一起處理。這些Bean之間處理業(yè)務(wù)邏輯、數(shù)據(jù)、系統(tǒng)狀態(tài)等,且它們被Spring統(tǒng)一管理。然后需要持久化數(shù)據(jù)由Spring和Hibernate之間的接口交由Spring處理[13,14]。4.1.1攔截器的設(shè)計(jì)Struts2攔截器是在訪問某個Action或Action的某個方法,字段之前或之后實(shí)施攔截,并且Struts2攔截器是可以插拔的,攔截器是AOP的一種實(shí)現(xiàn)。是進(jìn)行Struts2攔截器的方法比較簡單,當(dāng)請求Struts2的action時,Struts2會查找配置文件,并根據(jù)其配置文件實(shí)例化對象的攔截器對象,然后串成一個列表,最后一個一個地調(diào)用列表中的攔截器。主要編碼如下:/***<p>*ProjectName:nongchaoren畢業(yè)設(shè)計(jì):自由交易系統(tǒng)<br>*FileName:UserActionInterceptor.java<br>*Description:系統(tǒng)攔截器<br>**CreateTime:2013-11-**@authorW*@version:1.0*/publicclassUserActionInterceptorextendsAbstractInterceptor{ privatestaticfinallongserialVersionUID=-4993160081236162516L; @Override publicStringintercept(ActionInvocationinvocation)throwsException{ //TODOAuto-generatedmethodstub //通過invocation獲取本次調(diào)用的上下文 UserPojologinUser=newSessionUtil().getSessionLoginUser("loginUser"); if(loginUser==null){ return"login"; } returninvocation.invoke(); }}Struts.xml攔截器配置如下: <!--攔截器--> <interceptors><!--攔截器名稱--> <interceptorname="userinterceptoraction" class="erceptor.UserActionInterceptor"> </interceptor> <!--攔截器類--> </interceptors> <actionname="userinterceptoraction" class="gradedesign.www.action.UserAction"> <!--默認(rèn)攔截器--> <interceptor-refname="defaultStack"></interceptor-ref> <!--action實(shí)現(xiàn)類--> <interceptor-refname="userinterceptoraction"></interceptor-ref> <result>/user/userLogin.jsp</result> </action>4.1.2應(yīng)用配置文件在WEB-INF文件夾下,在web.xml文件里制定Spring核心配置文件的路徑、Struts過濾器。主要編碼如下:<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.4"xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"> <!--指定spring核心配置文件的路徑(包含文件名)--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--struts2過濾器--><filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>4.1.3Spring配置文件Spring配置文件名為applicationContext.xml,其中將Struts和Hibernate的管理都交由該配置文件處理。其中連接數(shù)據(jù)庫,設(shè)置連接池,將對應(yīng)的數(shù)據(jù)庫表映射實(shí)現(xiàn)代碼如下: <beanid="dataSource"class="mons.dbcp.BasicDataSource"> <propertyname="driverClassName"value="com.mysql.jdbc.Driver"> </property> <propertyname="url"value="jdbc:mysql://localhost:3306/nongchaoren"> </property> <propertyname="username"value="root"></property> <propertyname="password"value="828088"></property> <propertyname="maxActive"value="100"></property> <propertyname="initialSize"value="10"/> <propertyname="minIdle"value="2"/> <propertyname="maxIdle"value="10"/> </bean> <beanid="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <propertyname="dataSource"> <refbean="dataSource"/> </property> <propertyname="hibernateProperties"> <props> <propkey="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <propkey="hibernate.show_sql">false</prop> <propkey="hibernate.format_sql">false</prop> </props> </property> <propertyname="mappingResources"> <list> <value>gradedesign/www/pojo/AdminPojo.hbm.xml</value> <value>gradedesign/www/pojo/UserPojo.hbm.xml</value> <value>gradedesign/www/pojo/ItemsPojo.hbm.xml</value> <value>gradedesign/www/pojo/OrdersssPojo.hbm.xml</value> <value>gradedesign/www/pojo/MessagePojo.hbm.xml</value></list> </property> </bean>DAO與Service關(guān)聯(lián)關(guān)系實(shí)現(xiàn)編碼如下: <!--userbean--> <beanid="userDao"class="gradedesign.www.dao.impl.UserDaoImpl"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <beanid="userService"class="gradedesign.www.service.impl.UserServiceImpl"> <propertyname="ud"ref="userDao"></property> </bean> <!--itemsbean--> <beanid="itemsDao"class="gradedesign.www.dao.impl.ItemsDaoImpl"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <beanid="itemsService"class="gradedesign.www.service.impl.ItemsServiceImpl"> <propertyname="itd"ref="itemsDao"></property> </bean> <!--ordersssbean--> <beanid="ordersssDao"class="gradedesign.www.dao.impl.OrdersssDaoImpl"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <beanid="orderService"class="gradedesign.www.service.impl.OrdersssServiceImpl"> <propertyname="ord"ref="ordersssDao"></property> </bean> <!--messagebean--> <beanid="messageDao"class="gradedesign.www.dao.impl.MessageDaoImpl"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <beanid="messageService"class="gradedesign.www.service.impl.MessageServiceImpl"> <propertyname="md"ref="messageDao"></property> </bean> <!--adminbean--> <beanid="adminDao"class="gradedesign.www.dao.impl.AdminDaoImpl"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <beanid="adminService"class="gradedesign.www.service.impl.AdminServiceImpl"> <propertyname="ad"ref="adminDao"></property> </bean>4.2用戶模塊的實(shí)現(xiàn)與編碼(1)實(shí)現(xiàn)目標(biāo):用戶只有登錄后才能對其他頁面進(jìn)訪問,訪問者只有注冊登錄后才能對其他頁面進(jìn)行訪問。訪問者注冊時,必須正確填寫注冊內(nèi)容,這樣才能注冊成功。用戶登錄后能對自己的信息進(jìn)行修改,并且為了安全性,用戶能夠修改自己的密碼。用戶登錄后直接進(jìn)入網(wǎng)站主頁。登錄結(jié)果如下圖所示4-1所示。圖4-1用戶登錄頁面(2)主要編碼如下:<bodyclass="blue-style"style="background-image:url('images/bg_login.jpg');"><formaction="<%=basePath%>www/doLogin"method="post"name="form1"> <fieldsetstyle="width:240px;height:110px; vertical-align:middle; background-image:url('images/userLogin.jpg;'); border:3pxsolidpurple; margin:15%0%0%56%; padding:24px24px;"> <legendstyle="padding:8px;">用戶登錄</legend> <li>用戶名:<inputname="user.username"/></li> <li>密  碼:<inputname="user.password"type="password"/></li><br/>       <inputtype="submit"value="登錄"class="input-button"/> <inputtype="reset"value="重置"class="input-button"/> <inputtype="button"value="返回"class="input-button"onclick="toDemo()"/> <s:iftest="flagCheck==1"><span><fontcolor="red">登錄失敗,請重新登錄</font></span></s:if> </fieldset> </form></body>

4.3商品訂單模塊的實(shí)現(xiàn)與編碼(1)實(shí)現(xiàn)目標(biāo):用戶登錄以后,點(diǎn)擊“User”導(dǎo)航進(jìn)入用戶頁面,再點(diǎn)擊“我出售的”按鈕可以查看用戶正在出售的。在該頁面,用戶可以刪除自己添加出售的商品,也可以添加出售自己未出售的商品。添加商品時,必須正確填寫商品的信息才能上架。用戶通過點(diǎn)擊“Products”后進(jìn)入正在出售商品的頁面,點(diǎn)擊“加入訂單”按鈕,系統(tǒng)會自動生成該商品的訂單,用戶可以在點(diǎn)擊“Order”導(dǎo)航鍵查看自己訂購的商品。點(diǎn)擊“Saled”導(dǎo)航鍵查看自己出售的商品是否有買家訂購。當(dāng)有交易產(chǎn)生時,系統(tǒng)會通過商品的信息以及買家的信息生成訂單信息存放到訂單表中。商品頁面如下圖4-2,訂單頁面圖4-3所示。圖4-2商品頁面圖4-3訂單頁面(2)主要編程如下:添加商品代碼:functioncheckItemsName(){ if($("#items").val().trim()==""){ $("#sit").text("商品名不能為空"); returnfalse; }else{ $("#sit").text(""); }}functioncheckItemsPrice(){ varprice=$("#price").val().trim(); if(price==""){ $("#spr").text("價格不能為空"); returnfalse; }else{ $("#spr").text(""); }}functioncheckItemsDesc(){ vardesc=$("#desc").val().trim(); if(desc==""){ $("#sde").text("商品描述不能為空"); returnfalse; }else{ $("#sde").text(""); }}functioncheckItemsImage(){ varimage=$("#image").val().trim(); if(image==""){ $("#sim").text("圖片不能為空"); returnfalse; }else{ $("#sim").text(); }}functioncheckItemsKind(){ varkind=$("#kind").val().trim(); if(kind==""){ $("#ski").text("商品種類不能為空"); returnfalse; }else{ $("#ski").text(); }}functiontrunBack(){ document.formIA.action="<%=basePath%>www/toMyItems"; document.formIA.submit();}顯示商品代碼:<table><tbody><tr> <td><formmethod="post"action="<%=basePath%>www/toFindItemsCPLS?page.currentPage=1"><inputname="flag"value="search"type="hidden"class="input-text"/>商品名稱:<inputname="keyItemName"type="text"id="getKey"value="${keyItemName}"/> <inputtype="submit"value="查詢"/> </form> </td> </tr> </tbody> </table></div> <divclass="main1"><divclass="optitleclearfix"><divclass="title">在售商品>></div></div><divclass="content1"> <tableclass="list"> <tbody> <tr> <tdwidth="180"height="30"><divclass="STYLE1"align="center">商品圖片</div></td> <tdwidth="70"><divclass="STYLE1"align="center">商品名稱</div></td> <tdwidth="340"><divclass="STYLE1"align="center">商品介紹</div></td> <tdwidth="70"><divclass="STYLE1"align="center">商品價格</div></td> <tdwidth="70"><divclass="STYLE1"align="center">加入訂單</div></td> </tr> <s:iftest="flagCheck==1"><tr><tdcolspan="7"><h1>沒有該商品</h1></td></tr></s:if> <s:iteratorvalue="itemsList"> <tr> <tdalign="center"><imgsrc="<%=basePath%>images/${itemImage}"width="180"height="130"></td> <tdalign="center">${itemName}</td> <tdalign="center">${itemDesc}</td> <tdalign="center">${itemPrice}</td> <tdalign="center"><ahref="<%=basePath%>www/doAddOrder?items.id=${id}">加入訂單</a></td> </tr> </s:iterator> </tbody> </table>顯示訂單代碼:<divclass="optitleclearfix"> <divclass="title">我的訂單>> </div></div><divclass="content1"> <tableclass="list"> <tbody> <tr> <tdwidth="180"height="30"><divclass="STYLE1"align="center">商品圖片</div></td> <tdwidth="70"><divclass="STYLE1"align="center">商品名稱</div></td> <tdwidth="300"><divclass="STYLE1"align="center">商品介紹</div></td> <tdwidth="70"><divclass="STYLE1"align="center">商品價格</div></td> <tdwidth="70"><divclass="STYLE1"align="center">賣家電話</div></td> <tdwidth="70"><divclass="STYLE1"align="center">賣家Qq</div></td> <tdwidth="70"><divclass="STYLE1"align="center">買家姓名</div></td> <tdwidth="70"><divclass="STYLE1"align="center">買家地址</div></td> <tdwidth="70"><divclass="STYLE1"align="center">買家電話</div></td> <tdwidth="70"><divclass="STYLE1"align="center">刪除訂單</div></td> </tr> <s:iftest="flagCheck==1"><tr><tdcolspan="7"><h1>沒有該訂單</h1></td></tr></s:if> <s:iterato

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論