版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
摘要在信息社會中,隨著電腦與網(wǎng)絡(luò)技術(shù)的日益興旺,電子商務(wù)空前開展,許多商品的銷售也逐漸從有形的市場轉(zhuǎn)向虛擬的網(wǎng)絡(luò),為了滿足人們購書的需求,網(wǎng)上書店應(yīng)運(yùn)而生。網(wǎng)上書店系統(tǒng)的創(chuàng)立可以更好地解決人們因沒有時間到書店而不能買到自己需要的書籍的問題,旨在書店與消費(fèi)者之間架起一座高速、便捷的網(wǎng)上信息橋梁,從而節(jié)省用戶的時間、方便他們購書,使其永遠(yuǎn)走在時代的前沿。本畢業(yè)設(shè)計(jì)嚴(yán)格遵循軟件開發(fā)流程,使用MVC模式,采用開源框架Struts、Spring、Hibernate進(jìn)行開發(fā),后端的數(shù)據(jù)庫采用MySQL,通過JDBC驅(qū)動程序和數(shù)據(jù)庫進(jìn)行無縫連接,應(yīng)用可以跨平臺的Web應(yīng)用技術(shù)JSP開發(fā)的網(wǎng)上購物系統(tǒng)—網(wǎng)上書店。設(shè)計(jì)的主要目的是了解Web應(yīng)用程序的這些開源框架技術(shù),熟練使用框架開發(fā)的流程。系統(tǒng)的功能主要分為兩局部:一是前臺網(wǎng)上訂購圖書功能,包括用戶注冊登錄、購物車、訂單生成等;二是后臺管理員對用戶、圖書、訂單等的管理功能。對管理員而言,用戶、會員、圖書管理等模塊實(shí)現(xiàn)了添加、刪除、修改、瀏覽的功能,訂單管理模塊實(shí)現(xiàn)了訂單處理、查看、刪除的功能。對會員而言,可以通過輸入圖書名稱搜索圖書,可以查看自己的購物車和訂單信息。本論文主要論述了網(wǎng)上書店系統(tǒng)的功能設(shè)計(jì)與實(shí)現(xiàn)過程,包括需求分析、系統(tǒng)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)及相關(guān)前后臺頁面的界面設(shè)計(jì)等。關(guān)鍵詞:網(wǎng)上書店,Struts,Spring,Hibernate,MVC,JSPAbstractIntheinformationsociety,withthecomputerandnetworktechnologyincreasinglydeveloped,theunprecedenteddevelopmentofe-commerce,salesofmanycommoditiesmarketshavegraduallyshiftedfromthetangiblevirtualnetwork,inordertomeettheneedsofpeopletextbook,onlinebookstorecameintobeing.Onlinebookstoresystemcanbecreatedtobetteraddressthepeoplebecausethereisnotimetothebookstoretobuytheirownneedsandnottheissueofbooksdesignedtobuildabridgebetweenconsumersbookstorehigh-speed,convenientonlineinformationbridge,whichsavesuserstimefacilitatetheirbooks,sothatitalwayswalkintheforefrontofthetimes.Graduationstrictlyfollowthesoftwaredevelopmentprocess,theuseoftheMVCpattern,usingtheopen-sourceframeworkStruts,Spring,Hibernatefordevelopment,backenddatabaseusingMySQL,anddatabasesthroughJDBCdriversforseamlessconnectivity,applicationscanbecross-platformWebapplicationtechnologiesJSPdevelopmentoftheonlineshoppingsystem-onlinebookstore.ThemainpurposeofthedesignistounderstandtheseopensourceWebapplicationframeworktechnology,skilleduseofframeworkdevelopmentprocess.Themainfunctionofthesystemisdividedintotwoparts:First,orderbooksonlinereceptionfeatures,includinguserregistrationlogin,shoppingcart,ordergeneration,etc.;Second,backgroundadministratoruser,books,ordersandotheradministrativefunctions.Fortheadministrators,users,membership,booksmanagementmodule,delete,modify,addbrowsing,ordermanagementmodulerealizestheorderprocessing,view,deletefunction.Themembership,tosearchforbooksbyenteringthelibraryname,youcanviewyourshoppingcartandorderinformation.Thispapermainlydiscussestheonlinebookstoresystemfunctiondesignandimplementationprocess,includingrequirementsanalysis,systemdesign,databasedesignandassociatedfrontandbackpagesoftheinterfacedesign.Keywords:onlinebookstore;Struts;Spring;Hibernate;MVC;JSP目錄1前言11.1網(wǎng)上書店研究背景及意義11.2網(wǎng)上書店的研究現(xiàn)狀21.3課題主要工作22系統(tǒng)技術(shù)及運(yùn)行環(huán)境32.1主流技術(shù)框架32.1.1Struts框架32.1.2Spring框架32.1.3ORM中間件名流Hibernate42.2MySQL簡介42.3MyEclipse簡介42.4MVC設(shè)計(jì)模式53需求分析73.1工程概述73.2用例圖74系統(tǒng)設(shè)計(jì)114.1系統(tǒng)架構(gòu)設(shè)計(jì)114.2模塊設(shè)計(jì)114.2.1功能結(jié)構(gòu)114.2.2功能詳細(xì)說明124.3數(shù)據(jù)庫設(shè)計(jì)134.3.1概念模型設(shè)計(jì)134.3.2邏輯模型設(shè)計(jì)165系統(tǒng)實(shí)現(xiàn)245.1后臺管理員登錄模塊設(shè)計(jì)245.1.1數(shù)據(jù)校驗(yàn)245.1.2控制器類265.2購物車管理頁面275.2.1視圖層275.2.2業(yè)務(wù)控制器285.3圖書管理頁面345.4書店前臺界面設(shè)計(jì)357總結(jié)37致謝39參考文獻(xiàn)401前言1.1網(wǎng)上書店研究背景及意義隨著網(wǎng)絡(luò)時代的開展,信息技術(shù)、數(shù)據(jù)庫技術(shù)的不斷開展,網(wǎng)絡(luò)進(jìn)程的加快,傳統(tǒng)的購物方式已經(jīng)越來越不能滿足人們快節(jié)奏的生活需求,網(wǎng)上書店正是適應(yīng)了當(dāng)今社會快節(jié)奏的生活,打破地域與空間的限制,以一種全新的姿態(tài)步入我們的生活,給圖書愛好者一個全新的購書體驗(yàn)。它以其方便、快捷的優(yōu)勢沖擊著傳統(tǒng)的圖書發(fā)行行業(yè),與傳統(tǒng)書店相比,網(wǎng)上書店的建立可以大大減少圖書銷售中的中間環(huán)節(jié),節(jié)省大量的人力、物力,并且圖書種類豐富,讀者可以隨時隨地的查詢及訂購所需圖書,節(jié)省了他們許多珍貴的時間。另外,還便于商家根據(jù)讀者留言,為其提供個性化效勞,極大地滿足了讀者的需求。隨著業(yè)務(wù)量的增長,客戶量及圖書量都會大幅度增加。這意味著,網(wǎng)上書店的訪問量的提高,同時需要處理的數(shù)據(jù)量也更加龐大,這對網(wǎng)上書店系統(tǒng)的性能就有了更高的要求。網(wǎng)上書店的管理者們發(fā)現(xiàn),他們的系統(tǒng)越來越不堪重負(fù),越來越不能夠滿足客戶的需求。比方,現(xiàn)有的圖書信息檢索系統(tǒng)效率低下,按圖書標(biāo)題進(jìn)行的一個簡單搜索也要花費(fèi)10秒鐘。如此慢的響應(yīng)速度,成了該系統(tǒng)的軟肋。因此,“解決性能瓶頸,提高效勞質(zhì)量,并為在未來擴(kuò)展客戶效勞范圍打下良好根底〞,成為管理者們的燃眉之急。經(jīng)過以上的分析,可得網(wǎng)上書店具有光明的前景。因此,構(gòu)建一個應(yīng)用系統(tǒng)之前,首先考慮的是采用哪種結(jié)構(gòu)來實(shí)現(xiàn)這個應(yīng)用系統(tǒng),怎樣設(shè)計(jì)可以實(shí)現(xiàn)組件之間的松散耦合,使其具有良好的靈活性,所以對工程開發(fā)框架的選擇很重要。本課題在開發(fā)過程中使用輕量級架構(gòu)SSH來處理頁面邏輯、業(yè)務(wù)控制和對象的持久化工作,即用Struts來架構(gòu)表示層,用Spring來架構(gòu)業(yè)務(wù)層,而用Hibernate架構(gòu)持久層,然后把這些框架無縫的整合起來,使系統(tǒng)的結(jié)構(gòu)更加清晰,同時簡化開發(fā)工作。使用MYSQL作為后臺數(shù)據(jù)庫,MYSQL是高性能、客戶/效勞器的RDBMS〔關(guān)系型數(shù)據(jù)庫管理系統(tǒng)〕,能夠支持大吞吐量的事務(wù)處理,具有較高的平安性,也能與其他系統(tǒng)進(jìn)行完好的交互操作。1.2網(wǎng)上書店的研究現(xiàn)狀目前,國內(nèi)外網(wǎng)上書店都很多,如國內(nèi)的當(dāng)當(dāng)和卓越亞馬遜,國外的亞馬遜。國外的網(wǎng)上書店由于起步早,現(xiàn)在已較為成熟,最具代表性的首推亞馬遜網(wǎng)上書店。亞馬遜具有高質(zhì)量的綜合書目數(shù)據(jù)庫和方便的圖書檢索系統(tǒng),經(jīng)營的圖書達(dá)400多萬種,如今已成為全球的最大網(wǎng)上書店,控制著美國80%的網(wǎng)上圖書銷售市場。相對來說,國內(nèi)的網(wǎng)上書店起步晚,與國外有一定的差距。由于效勞不完善、查詢、分類形式單一,注重圖書數(shù)量的豐富而忽略圖書及相關(guān)知識和信息的提供,并且我國有許許多多的中小型書店仍只是采用傳統(tǒng)書店的經(jīng)營模式,而這種模式需要大量的人力、物力,且?guī)齑骐y以滿足所有顧客的需求。隨著人們?nèi)找嬖鲩L的購書需求,圖書數(shù)量劇增,有關(guān)購書的信息業(yè)成倍增長,這就需要有一個好的信息支持平臺。面對龐大的信息量,有必要開發(fā)網(wǎng)上書店來提高管理工作的效率,也順應(yīng)了電子商務(wù)的潮流.1.3課題主要工作網(wǎng)上書店系統(tǒng)主要采用JSP、MySQL、Struts等技術(shù)來實(shí)現(xiàn),遵循軟件開發(fā)流程,進(jìn)行了需求分析、系統(tǒng)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)和代碼實(shí)現(xiàn)。它的主要功能是實(shí)現(xiàn)后臺圖書管理的自動化,圖書新增、刪除的及時化,會員及管理員信息的更新,訂單的及時處理,圍繞這些主要功能,本系統(tǒng)涉及到以下核心功能:圖書管理、訂單管理、會員管理等。該系統(tǒng)設(shè)計(jì)的主要目標(biāo)是:設(shè)計(jì)一個網(wǎng)上書店系統(tǒng),主要功能分為圖書查詢、訂單、購物車和后臺圖書、管理員管理等。在訂單模塊中,用戶能夠?qū)⒆约合矚g的圖書添加至購物車,生成訂單;在圖書查詢模塊中,用戶能輸入需要查詢的圖書名稱按條件查詢;在圖書管理模塊中要求能完成如添加圖書的分類、圖書是否特價、圖書的根本信息等日常管理功能。2系統(tǒng)技術(shù)及運(yùn)行環(huán)境2.1主流技術(shù)框架所謂框架就是提供了一組統(tǒng)一的接口和編程方式的可重用組件,同時我們可以在框架中擴(kuò)充我們自己的特定邏輯。目前主流的技術(shù)框架如下:2.1.1Struts框架Struts是最早的Java開源框架之一,也是現(xiàn)在JavaWeb框架的事實(shí)標(biāo)準(zhǔn),現(xiàn)在的絕大多數(shù)JavaWeb應(yīng)用程序都是基于Struts框架構(gòu)建的。Struts是MVC設(shè)計(jì)模式一個優(yōu)秀的實(shí)現(xiàn)。Struts定義了通用的Controller〔控制器〕,通過配置文件〔一般是struts-config.xml〕隔離了Model〔模型〕和View〔視圖〕,以Action的概念對用戶請求做了封裝,使代碼更清晰易讀。Struts還提供了自動將請求的數(shù)據(jù)填充到對象中以及頁面標(biāo)簽等簡單編碼工具。Struts使開發(fā)大型JavaWeb工程成為可能。2.1.2Spring框架Spring的出現(xiàn)改變了Java世界。它的目標(biāo)是使現(xiàn)有的JavaEE技術(shù)更易用和促進(jìn)良好的編程習(xí)慣。它是一個輕量級的框架,滲透了JavaEE技術(shù)的方方面面。它主要作為依賴注入容器和AOP實(shí)現(xiàn)存在。還提供了聲明事務(wù)、對DAO層的支持等簡化開發(fā)的功能。Spring還可以很方便地與Struts、Hibernate等技術(shù)集成,致力于JavaEE應(yīng)用的各層的解決方案,而不是僅僅專注于某一層的方案,可以說Spring是企業(yè)應(yīng)用開發(fā)的“一站式〞選擇,并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。Spring的核心概念是IoC(InversionofControl),IoC的抽象概念是控制反轉(zhuǎn)。它可以完成組件之間的依賴關(guān)系注入,使得組件之間的依賴關(guān)系到達(dá)最小,進(jìn)而提高組件的重用性。通過Spring提供的IoC容器,我們可以將對象之間的依賴關(guān)系交由Spring進(jìn)行控制,防止硬編碼所造成的過度程序耦合。有了Spring,用戶不必再為單實(shí)例模式類、屬性文件解析等這些底層的需求編寫代碼,可以更專注于上層的應(yīng)用。2.1.3ORM中間件名流HibernateHibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。對于對象——關(guān)系映射ORM〔Object-RelationMapping〕,它是用來將對象和對象之間的關(guān)系對應(yīng)到數(shù)據(jù)庫表與表之間的關(guān)系的一種模式?,F(xiàn)在,ORM工具有很多種,其中比擬有影響力的一種就是Hibernate。Hibernate確實(shí)是一個優(yōu)秀的持久化框架,主要負(fù)責(zé)簡化將對象數(shù)據(jù)保存到數(shù)據(jù)庫中或從數(shù)據(jù)庫中讀取數(shù)據(jù)并封裝到對象的工作。通過簡單配置和編碼即可替代JDBC繁瑣的程序代碼。Hibernate處理數(shù)據(jù)庫操作的方式代表了當(dāng)前的趨勢。2.2MySQL簡介MySql是一個快速、多線程、多用戶的SQL數(shù)據(jù)庫效勞器,其出現(xiàn)雖然只有短短的數(shù)年時間,但憑借著“開放源代碼〞的東風(fēng),它從眾多的數(shù)據(jù)庫中脫穎而出,支持正規(guī)的SQL查詢語言和采用多種數(shù)據(jù)類型,能對數(shù)據(jù)進(jìn)行各種詳細(xì)的查詢等特點(diǎn)。MySQL的開發(fā)者為瑞典MySQLAB公司,它作為開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),目前被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。正因?yàn)槠潴w積小、速度快、總體擁有本錢低,尤其是開放源碼這一特點(diǎn),所以許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有本錢而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。2.3MyEclipse簡介MyEclipse,是一個十分優(yōu)秀的用于開發(fā)Java,J2EE的Eclipse插件集合,MyEclipse的功能非常強(qiáng)大,支持也十分廣泛,尤其是對各種開源產(chǎn)品的支持十分不錯。MyEclipse企業(yè)級工作平臺〔MyEclipseEnterpriseWorkbench,簡稱MyEclipse〕是對EclipseIDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布以及應(yīng)用程序效勞器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完全支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC數(shù)據(jù)庫鏈接工具等多項(xiàng)功能。可以說MyEclipse幾乎囊括了目前所有主流開源產(chǎn)品的專屬eclipse開發(fā)工具。本系統(tǒng)采用的開發(fā)環(huán)境為MyEclipse8.5+MySQLServer5.1+JSP。2.4MVC設(shè)計(jì)模式MVC是模型(Model)、視圖(View)和控制〔Controller)的縮寫,其目的實(shí)現(xiàn)Web系統(tǒng)的職能分工。其中Model層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,通??梢杂肑avaBean或EJB來實(shí)現(xiàn);View層用于與用戶的交互,通常用JSP來實(shí)現(xiàn);Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求并選擇恰當(dāng)?shù)囊晥D以用于顯示,同時它也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。MVC是一個設(shè)計(jì)模式,模式圖如圖2-1,它強(qiáng)制性的將應(yīng)用程序的輸入、處理和輸出分開。MVC使應(yīng)用程序被分成三個核心部件:模型、視圖、控制器,它們各自處理自己的任務(wù)。圖2-1MVC模式圖模型組件:負(fù)責(zé)業(yè)務(wù)邏輯,模型包含應(yīng)用程序的核心功能,模型封裝了應(yīng)用程序的狀態(tài)。有時它包含的唯一功能就是狀態(tài),它對視圖或控制器一無所知。視圖組件:負(fù)責(zé)表示業(yè)務(wù)范圍的視圖,視圖提供模型的表示,它是應(yīng)用程序的外觀。視圖可以訪問模型的讀方法,但不能訪問寫方法。此外,它對控制器一無所知。當(dāng)更改模型時,視圖應(yīng)得到通知??刂破鹘M件:負(fù)責(zé)控制用戶輸入的流和狀態(tài),控制器對用戶的輸入作出反響。它創(chuàng)立并設(shè)置模型。3需求分析3.1工程概述隨著Internet的飛速開展,網(wǎng)上購物已成為越來越多人首選的購物方式。商家可以通過這個電子商務(wù)平臺銷售自己的圖書,消費(fèi)者可以通過該系統(tǒng)訂購自己要買的圖書。消費(fèi)者通過網(wǎng)上書店系統(tǒng)的用戶界面,可以瀏覽圖書、查看圖書的詳細(xì)信息。在瀏覽圖書的過程中,如果消費(fèi)者對某本圖書感興趣,那么可以將其添加到購物車。消費(fèi)者隨時可以查看購物車中的情況,并及時更新。購物活動完成后,消費(fèi)者如需購置,必須結(jié)賬生成訂單。消費(fèi)者可以搜索查詢所需的書籍,如果不存在可以填寫缺書登記,也可以給管理員留言。消費(fèi)者可以針對某本圖書發(fā)表自己的評論。系統(tǒng)管理員從后臺管理程序入口登錄,如果驗(yàn)證通過,那么具有管理員權(quán)限,可以進(jìn)入后臺管理系統(tǒng),維護(hù)圖書信息、管理訂單、管理留言、管理用戶等模塊。3.2用例圖用例圖用來確定需求的范圍,這些需求是設(shè)計(jì)開發(fā)的依據(jù)。用例圖將系統(tǒng)看作黑盒,從外部執(zhí)行者的角度來理解系統(tǒng)。圖中的用例是用戶與計(jì)算機(jī)之間一次典型的交互作用,在UML中,用例表示為一個橢圓,執(zhí)行者是指用戶在系統(tǒng)中用類似人的圖形來表示的,但執(zhí)行者未必是人。例如,執(zhí)行者可以是一個外界系統(tǒng),該外界系統(tǒng)可能需要從當(dāng)前系統(tǒng)中獲取信息,與當(dāng)前系統(tǒng)進(jìn)行交互。根據(jù)以上需求分析,我們利用RationalRose畫出系統(tǒng)的主要用例圖,如圖3-1所示。主要的角色包括系統(tǒng)管理員和顧客。圖3-1系統(tǒng)用例圖系統(tǒng)主要用例說明如下:會員登錄和注冊會員登錄是電子商務(wù)網(wǎng)站應(yīng)用必須具備的功能之一。博友網(wǎng)上書店系統(tǒng)登錄頁面要求用戶輸入用戶名和密碼,在輸入用戶名和密碼之后,系統(tǒng)將驗(yàn)證用戶名和密碼是否正確。如果驗(yàn)證成功,就使會員處于登錄狀態(tài),否那么,系統(tǒng)顯示用戶名和密碼錯誤的信息。會員登錄UseCase圖如3-2所示。圖3-2會員登錄用例圖另外,游客在登錄頁面中能夠進(jìn)行新會員注冊,這時系統(tǒng)要求用戶輸入用戶注冊信息,包括用戶名、電子郵箱、居住地址、郵政編碼等內(nèi)容。新會員注冊UseCase圖如圖3-3所示,新會員注冊要檢驗(yàn)注冊信息,然后成為會員,具有普通會員的功能。當(dāng)用戶登錄后可以隨時修改個人的注冊信息。圖3-3新會員注冊用例圖瀏覽與搜索圖書用戶可以通過系統(tǒng)瀏覽各種圖書。在系統(tǒng)主頁面提供了所有圖書列表,通過單擊某種圖書的鏈接,用戶可以查看該圖書的名稱、描述和單價等信息以及添加該圖書到購物車的通道。用戶還可以根據(jù)圖書作者、圖書名稱搜索圖書信息。維護(hù)購物車當(dāng)用戶單擊“添加到購物車〞按鈕時,圖書會被自動添加到購物車中。在購物車頁面,將列出用戶的購物車中的所有圖書,并且會列出每種圖書的圖書名、作者、出版社等相應(yīng)信息。用戶也可以修改、刪除購物車的內(nèi)容。填寫/確認(rèn)訂單當(dāng)用戶最終確定所選購的圖書后,進(jìn)入購物車頁面,生成訂單。生成訂單是網(wǎng)上書店系統(tǒng)的最終目的,購物車的所有功能實(shí)現(xiàn)都是為最后生成一個客戶滿意的訂單做根底??蛻暨€可以點(diǎn)擊“我的訂單〞,查看訂單的狀態(tài)。5.管理員后臺登錄只有管理員才有權(quán)限進(jìn)入后臺,所以要設(shè)計(jì)管理員的登陸功能。管理員輸入用戶名和密碼后,系統(tǒng)會檢驗(yàn)用戶名、密碼和權(quán)限是否正確,校驗(yàn)成功后,進(jìn)入后臺系統(tǒng),進(jìn)行圖書的管理操作和其他信息的維護(hù)。管理員UseCase圖如圖3-4所示。圖3-4管理員登錄用例圖4系統(tǒng)設(shè)計(jì)在分析了整個網(wǎng)站的需求以后,下面開始設(shè)計(jì)系統(tǒng)的整體架構(gòu)。4.1系統(tǒng)架構(gòu)設(shè)計(jì)整個系統(tǒng)遵循多層次的架構(gòu)模式,從上到下依次為視圖層、控制器層、模型層、持久化層和數(shù)據(jù)庫層,如圖4-1所示。層次間的依賴關(guān)系的原那么應(yīng)該是自頂向下的,即上層可以依賴下層,而下層應(yīng)該盡量減少對上層的依賴,同時層次之間的交互應(yīng)該表達(dá)延遲實(shí)現(xiàn)的原那么,通過接口進(jìn)行交互。例如在網(wǎng)上書店系統(tǒng)中使用Hibernate實(shí)現(xiàn)持久化層,假設(shè)要采用其他機(jī)制實(shí)現(xiàn)持久化層時,不需要改動業(yè)務(wù)邏輯中的代碼。視圖層和控制器層使用Struts2框架實(shí)現(xiàn),持久化層使用Hibernate實(shí)現(xiàn)。最后由Spring技術(shù)整合所有功能,配置數(shù)據(jù)源。并且管理組件與組件之間的關(guān)系,使整個系統(tǒng)有效地運(yùn)行。圖4-1系統(tǒng)架構(gòu)4.2模塊設(shè)計(jì)4.2.1功能結(jié)構(gòu)根據(jù)用例分析,網(wǎng)上書店系統(tǒng)分為前臺和后臺兩大局部。前臺局部由用戶使用,主要包括用戶注冊、登錄和修改信息、購物車、生成及查詢訂單和留言板、圖書查詢等模塊。后臺局部由管理員使用,主要包括管理員登錄、圖書類別管理、圖書信息管理、會員管理、訂單處理、公告管理等模塊。系統(tǒng)的功能結(jié)構(gòu)如圖4-2所示:圖4-2博友網(wǎng)上書店系統(tǒng)功能結(jié)構(gòu)圖4.2.2功能詳細(xì)說明前臺局部:1、用戶注冊、登錄用戶進(jìn)入書店首頁,可以在頁面頂端點(diǎn)擊“注冊〞按鈕。新用戶注冊進(jìn)行數(shù)據(jù)校驗(yàn)成功后成為網(wǎng)站會員,可以登錄到網(wǎng)站查詢、瀏覽、購置圖書。圖4-3用戶注冊、登錄功能圖2、圖書瀏覽當(dāng)瀏覽網(wǎng)頁的時候,可以單擊某一圖書,查看該圖書的詳細(xì)信息〔包括圖書名、廠家、市場價等〕。3、查詢圖書可以在網(wǎng)站的查詢框中按圖書名搜索圖書也可以按作者查找圖書。系統(tǒng)將查詢結(jié)果〔如果有此圖書返回圖書的詳細(xì)信息,如果沒有返回當(dāng)前沒有此圖書的信息等〕返回。4、訂購圖書在瀏覽圖書時會員可以查看選中圖書的詳細(xì)信息并添加此圖書到購物車,最后選擇是否購置此圖書。5、訂單查詢會員可以隨時查看自己的購物車,查看自己的訂單詳細(xì)情況。后臺局部:1、管理員登錄通過圖書后臺管理系統(tǒng),輸入具有相應(yīng)模塊的管理員權(quán)限的用戶名和密碼,數(shù)據(jù)校驗(yàn)成功后進(jìn)入后臺管理主界面,對相應(yīng)模塊的信息進(jìn)行管理。2、圖書分類管理管理員可以進(jìn)入圖書分類管理頁面添加二級圖書類別,對其進(jìn)行管理。3、會員級別管理在會員級別管理頁面添加指定用戶為會員,設(shè)置級別屬性及會員積分。4、圖書、會員、訂單、公告、友情鏈接管理管理員進(jìn)入后臺管理系統(tǒng)可以對這些模塊進(jìn)行添加、編輯、刪除等操作。4.3數(shù)據(jù)庫設(shè)計(jì)概念模型設(shè)計(jì)博友網(wǎng)上書店系統(tǒng)中的業(yè)務(wù)實(shí)體如下:圖書〔book〕:代表一個圖書實(shí)體,其主要屬性有圖書ID〔id〕、圖書名稱〔bookName〕、作者〔author〕、ISBN號〔isbn〕、出版社〔publisher〕、描述〔description〕、價格〔price〕、庫存〔stock〕、圖片〔picture〕、出版時間〔pubDate〕、圖書類別ID〔typeId〕、優(yōu)惠價〔sprice〕、是否特價〔special〕、發(fā)布狀態(tài)〔status〕、圖片保存路徑〔HtmlPath〕。圖書類別〔btype〕:圖書類別ID〔id〕、一級圖書分類ID〔ParentID〕、圖書類別名稱〔typeName〕。訂單〔orders〕:代表一個訂單實(shí)體,其主要屬性有訂單ID〔ID〕、會員ID〔MemberID〕、購物車ID〔CartID〕、訂單號〔OrderNO〕、訂購日期〔OrderDate〕、訂單狀態(tài)〔OrderStatus〕。會員〔member〕:代表一個會員實(shí)體,其主要屬性有會員ID〔id〕、會員級別ID〔MemberlevelID〕、登錄賬號〔LoginName〕、登錄密碼〔LoginPwd〕、真實(shí)姓名〔MemberName〕、電子郵箱〔EMail〕、居住地址〔Address〕、郵政編碼〔Zip〕、〔Phone〕、注冊日期〔RegDate〕、最后日期〔LastDate〕、登錄時間〔LoginTimes〕、會員積分〔Integral〕。會員級別〔memberlevel〕:ID(id)、會員級別名稱〔LevelName〕、會員積分〔Integral〕、優(yōu)惠百分比〔Favourable〕。購物車〔cart〕:其主要屬性有ID〔id〕、會員ID〔MemberID〕、金額〔Money〕、購物車狀態(tài)〔CartStatus〕。購物車商品選購記錄表〔cartselectedbook〕:ID〔id〕、購物車ID〔CartID〕、圖書ID〔BookID〕、選購數(shù)量〔Number〕、價格〔Price〕、金額〔Money〕。友情鏈接〔link〕:ID〔id〕、鏈接名稱〔linkName〕、鏈接地址〔linkAddr〕。公告〔notice〕:ID〔id〕、公告標(biāo)題〔noticeTitle〕、公告內(nèi)容〔noticeContent〕、公告日期〔noticeDate〕。圖書評論〔remark〕:ID〔id〕、圖書ID〔bookId〕、用戶ID〔userId〕、評論題目〔remarkTitle〕、評論內(nèi)容〔remarkContent〕、評論日期〔remarkDate〕。用戶留言〔comment〕:ID〔id〕、用戶ID〔userId〕、留言標(biāo)題〔commentTitle〕、留言內(nèi)容〔commentContent〕、留言日期〔commentDate〕。管理員〔admin〕:代表一個管理員實(shí)體,其主要屬性有管理員ID〔id〕、管理員姓名〔adminName〕、管理員密碼〔adminPassword〕、權(quán)限〔power〕。為了描述各個模型,可以使用實(shí)體關(guān)系圖,即E-R圖〔ERD,EntityRelationshipDiagram〕。用實(shí)體關(guān)系圖描述實(shí)體模型能夠預(yù)先精確定義數(shù)據(jù)需求,從而能夠?qū)σ院蟮母膭幼龀鲇行У囊?guī)劃。以上局部實(shí)體的E-R圖如下所示。管理員信息實(shí)體如圖4-4所示:圖4-4管理員實(shí)體的E-R圖圖書實(shí)體如圖4-5:圖4-5圖書信息實(shí)體的E-R圖訂單實(shí)體如圖4-6:圖4-6訂單信息的E-R圖4.3.2邏輯模型設(shè)計(jì)book、member、order等上述實(shí)體對象都需要持久化,它們在數(shù)據(jù)庫中有對應(yīng)的表。對應(yīng)于數(shù)據(jù)模型,設(shè)計(jì)出的數(shù)據(jù)庫一共分為12個表:圖書表〔book〕、圖書類別表〔btype〕、會員表〔member〕、會員級別表〔memberlevel〕、購物車表〔cart〕、購物車選購記錄表〔cartselectedbook〕、訂單表〔orders〕、圖書評論表〔remark〕、用戶留言表〔comment〕、管理員表〔admin〕、友情鏈接表〔link〕、公告表〔notice〕。數(shù)據(jù)庫名稱為bookshop,其建立的SQL語句如下:createdatabaseifnotexists‘bookshop’;接下來創(chuàng)立數(shù)據(jù)表,以下是bookshop的數(shù)據(jù)字典定義:1、圖書表表4-1圖書表字段名字段類型字段長度是否允許為空是否為主鍵描述idint11否是圖書IDbookNamevarchar45是否圖書名稱authorvarchar45是否作者typeIdint11是否圖書類別IDisbnvarchar64是否ISBN號publishervarchar64是否出版社續(xù)表4-1字段名字段類型字段長度是否允許為空是否為主鍵描述descriptiontext是否圖書描述pricedouble(20,0)是否價格stocksmallint5是否庫存picturevarchar32是否圖片pubDatedatetime是否出版日期spricedecimal(8,2)是否會員價specialint11是否特價statusiInt11是否狀態(tài)HtmlPathvarchar100是否圖片保存路徑約束:id作為主鍵,不允許重復(fù),不允許為空。2、圖書類別表表4-2圖書類別表字段名字段類型字段長度是否允許為空是否為主鍵描述idint11否是圖書類別IDParentIDint11是否上級類別IDtypeNamevarchar45是否圖書類別名3、會員表表4-3用戶表字段名字段類型字段長度是否允許為空是否為主鍵描述idint11否是會員IDMemberlevelIDint11是否會員級別IDLoginNamevarchar20是否會員登錄名LoginPwdvarchar50是否會員登錄密碼續(xù)表4-3字段名字段類型字段長度是否允許為空是否為主鍵描述EMailvarchar100是否電子郵箱Addressvarchar100是否居住地址Zipchar6是否郵政編碼Phonevarchar40是否RegDatedatetime是否注冊日期LoginTimesint11是否登錄時間Integralint11是否會員積分4、訂單表表4-4訂單表字段名字段類型字段長度是否允許為空是否為主鍵描述IDint11否是訂單IDMemberIDint11是否會員IDCartIDint11是否訂單IDOrderNOvarchar20是否訂單號OrderDatedatetime是否訂購日期OrderStatusint11是否訂單狀態(tài)5、會員級別表表4-5會員級別表字段名字段類型字段長度是否允許為空是否為主鍵描述IDint11否是IDLevelNamevarchar20是否會員級別名稱Integralint11是否會員積分Favourableint11是否優(yōu)惠百分比6、友情鏈接表表4-6友情鏈接表字段名字段類型字段長度是否允許為空是否為主鍵描述idint11否是IDlinkNamevarchar64否否鏈接名稱linkAddrvarchar128否否鏈接地址7、公告表表4-7公告表字段名字段類型字段長度是否允許為空是否為主鍵描述idint11否是IDnoticeTitlevarchar64否否公告標(biāo)題noticeContentvarchar128否否公告內(nèi)容noticeDatedatetime否否公告日期8、購物車圖書選購記錄表表4-8購物車圖書選購記錄表字段名字段類型字段長度是否允許為空是否為主鍵描述IDint11否是IDCartIDint11是否購物車IDBookIDint11是否圖書IDNumberint11是否訂購數(shù)量Pricedecimal(8,2)是否金額Moneydecimal(9,2)是否總價9.圖書評論表表4-9圖書評論表字段名字段類型字段長度是否允許為空是否為主鍵描述idint11否是IDbookIdint11否否圖書IDuserIdint11否否用戶IDremarkTitlevarchar64否否評論題目remarkContentvarchar128否否評論內(nèi)容remarkDatedatetime否否評論日期10.用戶留言表表4-10用戶留言表字段名字段類型字段長度是否允許為空是否為主鍵描述idint11否是IDuserIdint11否否用戶IDcommentTitlevarchar64否否留言標(biāo)題commentContentvarchar128否否留言內(nèi)容commentDatedatetime否否留言日期11.管理員表表4-11管理員表字段名字段類型字段長度是否允許為空是否為主鍵描述idint11否是管理員IDadminNamevarchar15否否管理員姓名adminPasswordvarchar32否否管理員密碼powervarchar15是否權(quán)限12、友情鏈接表表4-12友情鏈接表字段名字段類型字段長度是否允許為空是否為主鍵描述IDint11否是IDmemberIDint11是否會員IDMoneydecimal(9,2)是否金額CartStatusint11是否購物車狀態(tài)創(chuàng)立數(shù)據(jù)表腳本:在根本的數(shù)據(jù)表的結(jié)構(gòu)確定后,就可以在mysql中完成數(shù)據(jù)表的創(chuàng)立工作,下面給出建立對應(yīng)數(shù)據(jù)表的幾個主要的SQL腳本?!?〕圖書根本信息表:CREATETABLE`book`(`id`int(11)NOTNULLAUTO_INCREMENT,`bookName`varchar(45)DEFAULTNULL,`author`varchar(45)DEFAULTNULL,`typeId`int(11)DEFAULTNULL,`isbn`varchar(64)DEFAULTNULL,`publisher`varchar(64)DEFAULTNULL,`description`varchar(128)DEFAULTNULL,`price`decimal(8,2)DEFAULTNULL,`stock`int(5)DEFAULTNULL,`picture`varchar(100)DEFAULTNULL,`pubDate`datetimeDEFAULTNULL,`sprice`decimal(8,2)DEFAULTNULL,`special`int(11)DEFAULTNULL,`status`int(11)DEFAULTNULL,`HtmlPath`varchar(100)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=35DEFAULTCHARSET=gbkCOMMENT='圖書表';〔2〕管理員表:CREATETABLE`admin`(`id`int(11)NOTNULLAUTO_INCREMENT,`adminName`varchar(15)NOTNULL,`adminPassword`varchar(32)NOTNULL,`power`varchar(15)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=42DEFAULTCHARSET=gbkCOMMENT='管理員';〔3〕會員信息表:CREATETABLE`member`(`ID`int(11)NOTNULLAUTO_INCREMENT,`MemberlevelID`int(11)DEFAULTNULL,`LoginName`varchar(20)DEFAULTNULL,`LoginPwd`varchar(50)DEFAULTNULL,`MemberName`char(12)DEFAULTNULL,`Phone`varchar(40)DEFAULTNULL,`Address`varchar(100)DEFAULTNULL,`Zip`char(6)DEFAULTNULL,`RegDate`datetimeDEFAULTNULL,`LastDate`datetimeDEFAULTNULL,`LoginTimes`int(11)DEFAULTNULL,`EMail`varchar(100)DEFAULTNULL,`Integral`int(11)DEFAULTNULL,PRIMARYKEY(`ID`))ENGINE=InnoDBDEFAULTCHARSET=gbkCOMMENT='注冊會員表';〔4〕訂單表:CREATETABLE`orders`(`ID`int(11)NOTNULLAUTO_INCREMENT,`MemberID`int(11)DEFAULTNULL,`CartID`int(11)DEFAULTNULL,`OrderNO`varchar(20)DEFAULTNULL,`OrderDate`datetimeDEFAULTNULL,`OrderStatus`int(11)DEFAULTNULL,PRIMARYKEY(`ID`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=gbkCOMMENT='訂單表';〔5〕圖書類別表:/*圖書類別表*/CREATETABLE`btype`(`id`intNOTNULLauto_increment,/*圖書類別ID*/`ParentID`intDEFAULTNULL,`typeName`varchar(45)DEFAULTNULL,/*圖書類別名*/PRIMARYKEY(`id`)/*設(shè)置id為主鍵*/)ENGINE=InnoDBDEFAULTCHARSET=gbkCOMMENT='圖書類別表';5系統(tǒng)實(shí)現(xiàn)5.1后臺管理員登錄模塊設(shè)計(jì)超級管理員要維護(hù)圖書、會員、訂單等信息,需要進(jìn)入后臺管理系統(tǒng)登錄頁面,如圖5-1所示,然后針對用戶輸入的數(shù)據(jù),系統(tǒng)首先會進(jìn)行數(shù)據(jù)校驗(yàn),并給予提示。圖5-1管理員登錄數(shù)據(jù)校驗(yàn)在Web應(yīng)用程序中,為了防止客戶端傳來的數(shù)據(jù)引發(fā)程序的異常,需要對用戶輸入的數(shù)據(jù)進(jìn)行驗(yàn)證,防止一些惡意的用戶通過輸入精心偽造的數(shù)據(jù)來攻擊我們的系統(tǒng),破壞系統(tǒng)的運(yùn)行,竊取協(xié)同的機(jī)密資料。因此構(gòu)建一個強(qiáng)有力的驗(yàn)證機(jī)制,是保障系統(tǒng)穩(wěn)定運(yùn)行的前提條件。數(shù)據(jù)驗(yàn)證分為兩個局部:一是驗(yàn)證輸入數(shù)據(jù)的有效性,二是在用戶輸入了不正確的數(shù)據(jù)后向用戶提示錯誤信息。以前做的系統(tǒng)是在Servlet中進(jìn)行有效的效勞器端校驗(yàn),但是這種校驗(yàn)很繁瑣,需要書寫多行的校驗(yàn)代碼才能完成一個表單的數(shù)據(jù)校驗(yàn),而且這種方式開發(fā)效率低,校驗(yàn)不夠標(biāo)準(zhǔn)。在本次畢設(shè)過程中,我們使用Struts2提供的根本驗(yàn)證框架來實(shí)現(xiàn),主要是利用校驗(yàn)規(guī)那么文件來對輸入數(shù)據(jù)進(jìn)行校驗(yàn),Struts2中每個Action都可以對應(yīng)一個校驗(yàn)文件,而且校驗(yàn)文件命名有一定的標(biāo)準(zhǔn),對于管理員登錄信息的校驗(yàn),我采用了Action中某個方法的校驗(yàn)命名格式:ActionClassName-ActionAliasName-validation.xml,并且通過ActionSupport的getText()方法獲取國際化提示信息,管理員登錄數(shù)據(jù)校驗(yàn)文件AdminAction-admin_login-validation.xml如下所示:AdminAction-admin_login-validation.xml:<?xmlversion="1.0"encoding="GBK"?><!DOCTYPEvalidatorsPUBLIC"-//OpenSymphonyGroup//XWorkValidator1.0.2//EN" "://opensymphony/xwork/xwork-validator-1.0.2.dtd"><!--對登錄表單中的三個必填字段進(jìn)行必填驗(yàn)證--><validators> <fieldname="adminName"> <field-validatortype="requiredstring"> <paramname="trim">true</param> <message>${getText("name.required")}</message> </field-validator> <field-validatortype="regex"> <paramname="expression"><![CDATA[(\w{4,25})]]></param> <message>${getText("name.regex")}</message> </field-validator> </field> <fieldname="adminPassword"> <field-validatortype="requiredstring"> <paramname="trim">true</param> <message>${getText("password.required")}</message> </field-validator> <field-validatortype="regex"> <paramname="expression"><![CDATA[(\w{4,25})]]></param> <message>${getText("password.regex")}</message> </field-validator> </field></validators>國際化資源文件中關(guān)于管理員數(shù)據(jù)校驗(yàn)的信息如下所示:圖5-2管理員登錄數(shù)據(jù)校驗(yàn)國際化信息如果輸入的用戶名和密碼錯誤,提示信息如下列圖所示:圖5-3數(shù)據(jù)校驗(yàn)結(jié)果顯示控制器類當(dāng)用戶名和密碼都合法時,表單提交至控制器層的action類admin_login.action,該類具體實(shí)現(xiàn)如下:AdminAction.java:/**處理登錄請求*/ publicStringlogin(){ AdmintempAdmin=adminservice.adminLogin(admin.getAdminName(),admin.getAdminPassword()); if(tempAdmin!=null){ ServletActionContext.getRequest().getSession().setAttribute("admin",tempAdmin); return"main"; }else{ addActionError(getText("login_fail")); returnINPUT; } }當(dāng)從數(shù)據(jù)庫中查詢到有此用戶名和密碼后,頁面自動跳轉(zhuǎn)到后臺管理系統(tǒng)主界面。5.2購物車管理頁面視圖層1、查看購物車cart.jsp頁面顧客在瀏覽圖書詳細(xì)信息時,通過單擊“購置〞按鈕即可將圖書放入購物車內(nèi)?!百徶猫暤捻憫?yīng)按鈕是由以下這段JS代碼調(diào)用addToCart.action實(shí)現(xiàn)的:<scriptlanguage='javascript'> //選購圖書 functionbuy(bookid){ if(!loginStatus) alert('對不起,您尚未登錄,請先登錄后再選購圖書,謝謝合作!'); else window.location='addToCart.action?bookId='+bookid; }</script>購物車管理業(yè)務(wù)控制器CartAction.java的addToCart方法將指定的圖書放入指定注冊會員的購物車后再攜帶提示信息重定向到viewCart方法,viewCart方法提取當(dāng)前會員的所有選購記錄存入selList中,供cart.jsp展現(xiàn)給顧客,如下列圖所示。圖5-4cart.jsp頁面運(yùn)行效果2、購物車管理的國際化消息資源messageResource_zh_CN.properties中與購物車管理相關(guān)的消息內(nèi)容如下:圖5-5購物車國際化信息業(yè)務(wù)控制器1、購物車管理業(yè)務(wù)控制器類購物車管理業(yè)務(wù)控制器CartAction類采用模型驅(qū)動,直接使用持久化類Cart充當(dāng)模型類,用于封裝表單屬性、請求參數(shù)及處理結(jié)果。業(yè)務(wù)控制器CartAction.java局部代碼如下:/**購物車處理控制器*/@SuppressWarnings("serial")publicclassCartActionextendsActionSupportimplementsModelDriven<Cart>{/**通過依賴注入CartService與BookService組件實(shí)例*/ CartServicecartservice; BookServicebookservice;/**購物車管理所有請求中常用的參數(shù)值*/privateStringactionMsg;//Action間傳遞的消息參數(shù)privateList<Cart>cartList;//購物車列表privateList<Cartselectedbook>selList;//選購記錄列表privateIntegerbookId;//選購的圖書IDprivateIntegernumber;//選購數(shù)量privateIntegerselId;//選購記錄ID//采用模型驅(qū)動privateCartmodel=newCart();//用于封裝購物車屬性模型publicCartgetModel(){returnmodel; }/**處理購置請求*/publicStringaddToCart(){ Membermember=(Member)ServletActionContext.getRequest().getSession().getAttribute("member"); Cartcart=null; Bookbook=null; Cartselectedbooksel=null;doubleprice=0;if(member!=null){//裝載當(dāng)前注冊會員的購物車 cart=cartservice.loadCart(member);if(cart==null){//如果尚無購物車那么為該用戶創(chuàng)立一個購物車 cart=newCart();//購物車的初始狀態(tài)為0,表示尚未結(jié)帳 cart.setCartStatus(0);//購物車默認(rèn)總金額為0 cart.setMoney(Double.valueOf(0));//購物車與當(dāng)前注冊會員進(jìn)行關(guān)聯(lián) cart.setMember(member);//持久化購物車if(!cartservice.saveOrUpdateCart(cart)){ addActionMessage(getText("cart_add_fail")); } }//裝載被選購的圖書 book=bookservice.loadBook(bookId);if(book!=null){//該圖書有效//檢查是否已存在相同的選購記錄 sel=cartservice.loadCartselectedbook(cart,book);if(sel==null){//不存在相同的選購記錄sel.setCart(cart); sel.setBook(book); sel.setNumber(1);//默認(rèn)選購數(shù)量為1//圖書劃價if(book.getSpecial().intValue()==1){//特價圖書,購置價格即為特價 price=book.getSprice(); }else{//非特價圖書,購置價格為優(yōu)惠后的市場價 price=book.getPrice()*(100-member.getMemberlevel().getFavourable())/100; } sel.setPrice(price); sel.setMoney(price);//重新計(jì)算購物車總金額//cart.setMoney(cart.getMoney().doubleValue()+price); cart.setMoney(cart.getMoney()+price); }else{//已存在相同的選購記錄 sel.setNumber(sel.getNumber()+1);//選購數(shù)量加1sel.setMoney(sel.getMoney()+sel.getPrice());//金額加一個單價//重新計(jì)算購物車總金額//cart.setMoney(cart.getMoney().doubleValue()+sel.getPrice()); cart.setMoney(cart.getMoney()+sel.getPrice()); }//持久化購物車及其選購記錄if(cartservice.saveOrUpdateCart(cart)){if(cartservice.saveOrUpdateCartselectedbook(sel)){ addActionMessage(getText("cart_add_succ")); }else{ addActionMessage(getText("cart_add_fail")); } }else{ addActionMessage(getText("cart_add_fail")); } }else{//指定圖書不存在 addActionMessage(getText("cart_add_fail")); } }else{//會員尚未登錄,無法進(jìn)行在線購物 addActionMessage(getText("cart_add_fail")); }return"toViewCart"; }2、Spring中配置業(yè)務(wù)控制器CartAction類將Struts2的業(yè)務(wù)控制器CartAction委托給Spring容器負(fù)責(zé)從生成到消亡的生命周期管理,可充分利用Spring容器的IoC特性,實(shí)現(xiàn)高度解耦。在Spring3中配置業(yè)務(wù)控制器CartAction類使用原型模式,即設(shè)置scope=〞prototype〞;applicationContext.xml中配置業(yè)務(wù)控制器CartAction<!--部署Struts2.1負(fù)責(zé)購物車管理的控制器CartAction--><beanid="cartAction"class="com.bookshop.Action.CartAction"scope="prototype"><propertyname="cartservice"ref="cartservice"/><propertyname="bookservice"ref="bookservice"/></bean>3、Struts.xml中配置業(yè)務(wù)控制器CartAction類用戶的具體請求、業(yè)務(wù)控制器中的處理方法及結(jié)果展現(xiàn)視圖之間的對應(yīng)關(guān)系必須在Struts2的配置文件struts.xml中進(jìn)行正確配置方能生效,對于那些具有一定命名規(guī)那么的用戶請求可以使用通配符實(shí)現(xiàn)動態(tài)方法的調(diào)用。struts.xml中配置業(yè)務(wù)控制器CartAction<!--配置購物車管理的CartAction映射--> <actionname="viewCart"class="com.bookshop.Action.CartAction"method="viewCart"> <result>/cart.jsp</result> </action> <actionname="addToCart"class="com.bookshop.Action.CartAction"method="addToCart"> <resultname="toViewCart"type="redirectAction"> <paramname="actionName">viewCart</param> <paramname="namespace">/</param> <paramname="actionMsg">${actionMsg}</param> </result> </action> <actionname="updateSelectedNumber"class="com.bookshop.Action.CartAction"method="updateSelectedNumber"> <resultname="input"type="redirectAction"> <paramname="actionName">viewCart</param> <paramname="namespace">/</param> <paramname="actionMsg">${actionMsg}</param> </result> </action> <actionname="delCartselectedbook"class="com.bookshop.Action.CartAction"method="delCartselectedbook"> <resultname="input"type="redirectAction"> <paramname="actionName">viewCart</param> <paramname="namespace">/</param> <paramname="actionMsg">${actionMsg}</param> </result> </action> <actionname="clearCart"class="com.bookshop.Action.CartAction"method="clearCart"> <resultname="toViewCart"type="redirectAction"> <paramname="actionName">viewCart</param> <paramname="namespace">/</param> <paramname="actionMsg">${actionMsg}</param> </result> </action>4、最后訂單提交成功頁面如圖5-6所示:圖5-6訂單提交成功頁面5.3圖書管理頁面圖書browseBook.jsp頁面:圖書管理業(yè)務(wù)控制器BookAction.java的browseBook方法通過處理用戶請求book_browseBook.actaion,取得圖書列表并存入List實(shí)例bookList中,供browseBook.jsp展現(xiàn)給用戶,如下列圖所示。圖5-7browseBook.jsp頁面運(yùn)行效果當(dāng)管理員將添加的圖書發(fā)布之后,圖書的狀態(tài)如上圖所示,那么與之對應(yīng),前臺頁面圖書詳細(xì)展示信息如下列圖所示:圖5-8圖書詳細(xì)信息展示頁面5.4書店前臺界面設(shè)計(jì)1、書店歡送頁index.jsp如下列圖所示,頁面分為用戶登錄和注冊模塊,購物車、訂單模塊、圖書查詢模塊、圖書分類、促銷公告、圖書顯示等功能模塊。圖5-9網(wǎng)上書店系統(tǒng)前臺頁面2、用戶登錄之后,點(diǎn)擊新書速遞中的“購置〞按鈕,可以將圖書添加至購物車,進(jìn)入購物車管理頁面,如圖5-4所示,按照操作步驟,生成訂單。點(diǎn)擊頁面頂部‘我的訂單’,可以看到剛剛購置的圖書的訂單處理情況,如圖5-10所示:圖5-10顧客訂單管理頁面3、圖書查詢:在頁面頂端搜索圖書文本框中輸入所要查詢的圖書,如書名“納蘭詞〞,然后顯示圖書搜索結(jié)果頁面:圖5-11圖書查詢結(jié)果界面顯示7總結(jié)本次畢業(yè)設(shè)計(jì)的網(wǎng)上書店系統(tǒng)是基于開源框架SSH開發(fā)的,根本上實(shí)現(xiàn)了會員與管理員的功能需求,學(xué)生可以通過系統(tǒng)可以查詢圖書的根本信息、購物車中選購的圖書信息,撤銷訂單、修改注冊資料等操作。管理員可以通過系統(tǒng)對會員信息、圖書信息等模塊的增、刪、改、查,各個模塊的功能都已根本實(shí)現(xiàn)。對于本文,首先介紹了網(wǎng)上
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年魚塘綜合利用租賃協(xié)議2篇
- 2024年甲乙雙方關(guān)于2024年奧運(yùn)會贊助權(quán)益分配的合同
- 2025年度蜜蜂產(chǎn)業(yè)聯(lián)盟合作協(xié)議范本3篇
- 2025年度博物館館藏品安全保管與修復(fù)服務(wù)合同3篇
- 2024年規(guī)范版夜間出租車租賃合同版
- 臨沂大學(xué)《民航服務(wù)英語(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海出版印刷高等??茖W(xué)校《大學(xué)英語四》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年連鎖加盟合同樣本
- 鄭州職業(yè)技術(shù)學(xué)院《高級程序語言設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州工商學(xué)院《病原生物學(xué)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江省舟山市2023-2024學(xué)年高二上學(xué)期1月期末檢測地理試題(解析版)
- 國家電網(wǎng)有限公司架空輸電線路帶電作業(yè)工作管理規(guī)定
- 計(jì)算機(jī)安全弱口令風(fēng)險
- 《寫字樓招商方案》課件
- 文旅劇本殺項(xiàng)目策劃方案
- 白銅錫電鍍工藝
- 拜耳法氧化鋁生產(chǎn)工藝
- 員工述職3個月轉(zhuǎn)正報告
- 2022年海南省公務(wù)員錄用考試《申論》真題試卷及答案
- 技術(shù)成果轉(zhuǎn)移案例分析報告
- 部編版二年級下冊道德與法治第二單元《我們好好玩》全部教案
評論
0/150
提交評論