J2EE技術(shù)實(shí)驗(yàn)報(bào)告基于SSH的轎車信息管理系統(tǒng)_第1頁
J2EE技術(shù)實(shí)驗(yàn)報(bào)告基于SSH的轎車信息管理系統(tǒng)_第2頁
J2EE技術(shù)實(shí)驗(yàn)報(bào)告基于SSH的轎車信息管理系統(tǒng)_第3頁
J2EE技術(shù)實(shí)驗(yàn)報(bào)告基于SSH的轎車信息管理系統(tǒng)_第4頁
J2EE技術(shù)實(shí)驗(yàn)報(bào)告基于SSH的轎車信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 基于ssh的轎車信息管理系統(tǒng)j2ee技術(shù)實(shí)驗(yàn)報(bào)告項(xiàng)目題目: 基于ssh的轎車信息管理系統(tǒng) 學(xué) 院: 計(jì)算機(jī)學(xué)院 指 導(dǎo) 教 師: 項(xiàng) 目 成 員: 專 業(yè): 軟件工程 班 級: 軟件0901 完 成 時 間: 2012-06-02 46目 錄1引言12核心技術(shù)簡介22.1mvc模式簡介22.2struts2框架簡介32.2.1struts2架構(gòu)42.2.2struts2基本處理流程52.2.3struts2的優(yōu)點(diǎn)62.3hibernate框架簡介62.3.1hibernate架構(gòu)62.3.2hibernate核心接口72.3.3hibernate基本處理流程72.3.4hibernate的優(yōu)

2、點(diǎn)72.4spring框架簡介82.4.1spring架構(gòu)82.4.2spring特點(diǎn)93轎車信息管理系統(tǒng)需求分析103.1任務(wù)概述103.2用戶特點(diǎn)103.3功能需求103.4界面需求113.5操作需求113.6輸入輸出需求114轎車信息管理系統(tǒng)概要設(shè)計(jì)124.1設(shè)計(jì)思想124.2總體設(shè)計(jì)124.3系統(tǒng)層次結(jié)構(gòu)圖134.4接口設(shè)計(jì)134.5數(shù)據(jù)庫設(shè)計(jì)134.6出錯處理設(shè)計(jì)145轎車信息管理系統(tǒng)詳細(xì)設(shè)計(jì)165.1數(shù)據(jù)庫詳細(xì)設(shè)計(jì)165.1.1數(shù)據(jù)庫關(guān)系模型設(shè)計(jì)165.1.2數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì)165.2轎車管理系統(tǒng)模塊詳細(xì)設(shè)計(jì)175.2.1用戶登陸模塊175.2.2用戶首頁面模塊185.2.3添加

3、汽車模塊185.2.4刪除汽車模塊195.2.5查詢汽車模塊205.2.6修改汽車模塊205.2.7出售汽車模塊215.2.8總銷售查詢模塊225.2.9按時間查詢模塊226轎車信息管理系統(tǒng)具體實(shí)現(xiàn)246.1開發(fā)與運(yùn)行環(huán)境246.2開發(fā)環(huán)境的搭建246.3數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)306.4dao層實(shí)現(xiàn)346.5manager層實(shí)現(xiàn)356.6action層實(shí)現(xiàn)366.7汽車信息查詢模塊實(shí)現(xiàn)366.1按時間查詢模塊實(shí)現(xiàn)386.2系統(tǒng)其它模塊的實(shí)現(xiàn)417總結(jié)448參考文獻(xiàn)451 引言近年來隨著人均收入水平的提高,人們購車的能力也逐步提升。為了方便轎車銷售企業(yè)對己方轎車管理,轎車銷售管理系統(tǒng)成了轎車市場一個不可

4、或缺的管理軟件。一個好的管理軟件能提高企業(yè)的管理效率,減輕企業(yè)統(tǒng)計(jì)人員的工作量。同時隨著近年來企業(yè)java的發(fā)展,使得開發(fā)一個針對企業(yè)需求的軟件系統(tǒng)變得簡單。因此使用企業(yè)java來開發(fā)一個轎車信息管理系統(tǒng),是行之有效的。2 核心技術(shù)簡介struts2,spring,hibernate是三個相互獨(dú)立的框架。但三個框架一起整合起來使用,能使軟件系統(tǒng)開發(fā)更輕松、更靈活、更容易擴(kuò)展。三者都是“半成品”框架,使得我們在開發(fā)時不需要從頭做起。三者之間的關(guān)系如圖2-1:圖2-1 struts2,spring,hibernate關(guān)系圖122.1 mvc模式簡介mvc全稱model view controlle

5、r,它使得應(yīng)用程序的輸入、處理和輸出分開,使程序的耦合度降低。其每個層次說明如下: model(模型):模型表示業(yè)務(wù)相關(guān)的數(shù)據(jù)與業(yè)務(wù)的處理方法。能直接訪問數(shù)據(jù)。 view(視圖):視圖用于對數(shù)據(jù)的顯示。在這一層上,通常沒有邏輯。為了更新視圖,視圖需要訪問它監(jiān)視的模型,因此視圖通常事先在被監(jiān)視的數(shù)據(jù)那進(jìn)行注冊。 controller(控制器):顧名思義,控制器起到控制作用,用于控制應(yīng)用程序的流程。它處理事件并作出響應(yīng),調(diào)用相關(guān)的模型去處理事件請求,確定哪個視圖返回請求。圖2-2 mvc各層關(guān)系圖圖2-2顯示的mvc各層之間的關(guān)系。由于它具有這些結(jié)構(gòu)使得多個視圖可以共有一個模型,同時對一層上的修改

6、不會影響到其他層。2.2 struts2框架簡介struts2是一個在webwork的基礎(chǔ)上轉(zhuǎn)化而來的基于mvc的框架。采用攔截器的機(jī)制來處理用戶請求,使得業(yè)務(wù)邏輯控制器與servlet api實(shí)現(xiàn)分離。.1 struts2架構(gòu)圖2-3 struts2架構(gòu)圖2-3 展示了struts2的整體架構(gòu),其各模塊說明如下: filterdispatcher:它是strut2的核心控制器。它根據(jù)actionmapper的結(jié)果來決定對請求的處理和響應(yīng)。 actionmapper:它是一個接口,并提供了http請求與action之間的映射關(guān)系。如果用戶的請求與actionmapper中

7、提供的方法相匹配,就繼續(xù)調(diào)用actionproxy。 actionproxy:它會依據(jù)actionmapper生成的uri以及配置管理器來找到響應(yīng)用戶請求的action對象。然后創(chuàng)建actioninvocation對象來執(zhí)行相應(yīng)的action方法。 actioninvocation:它會在調(diào)用action處理方法的前后,還要調(diào)用各種攔截器。 result:它會根據(jù)相關(guān)視圖將用戶請求的處理結(jié)果反饋給用戶。 struts.xml:是struts2的配置文件,負(fù)責(zé)配置每個action的返回結(jié)果所對應(yīng)的跳轉(zhuǎn)頁面。 interceptor:攔截器是struts2的重要組件,其設(shè)計(jì)思想來源于aop(面向切

8、面編程)。通常用于處理某些通用的處理,它會在每個action的外部執(zhí)行。 action:用于處理用戶請求并封裝業(yè)務(wù)數(shù)據(jù)。其執(zhí)行后通常會返回一個string類型的量,struts.xml根據(jù)這個量來決定跳轉(zhuǎn)頁面。 templates:頁面模板。 tag subsystem:struts2的標(biāo)簽庫,用于頁面的設(shè)置。2.2.2 struts2基本處理流程圖2-4 struts2基本處理流程圖2-4展示了struts2基本處理流程,用戶請求在經(jīng)過一系列攔截器(攔截器會對用戶請求進(jìn)行相應(yīng)的處理,如增加某些功能)后,就會交由action處理,然后action返回響應(yīng)的結(jié)果(默認(rèn)為“input”),最后通過

9、匹配結(jié)果來選擇跳轉(zhuǎn)視圖頁面。2.2.3 struts2的優(yōu)點(diǎn) “半成品”框架:使得開發(fā)不需要從頭做起,而且在框架中很多地方都有默認(rèn)值設(shè)置,減少了冗余的設(shè)置,提高了開發(fā)效率。 輕量級:資源消耗少,運(yùn)行速度快。 搭建簡單:只需在myeclipse中將需要的包拷貝入項(xiàng)目中,再進(jìn)行配置。 標(biāo)簽強(qiáng)大:struts2提供了一系列的自己編寫的標(biāo)簽用于頁面布置,減少了頁面代碼。 action測試簡單:不需要模擬http對象,就可以直接測試。 錯誤報(bào)告明了:便于迅速找出錯誤并修改。2.3 hibernate框架簡介hibernate是一個開放源碼的對象關(guān)系映射框架,采用orm機(jī)制,通常用于持久層的開發(fā)。它對jd

10、bc進(jìn)行了輕量級的封裝,使得我們在開發(fā)過程中可以使用面向?qū)ο蟮姆绞絹聿倏v數(shù)據(jù)庫。2.3.1 hibernate架構(gòu)圖2-5 hibernate架構(gòu)2.3.2 hibernate核心接口hibernate核心接口一共有6個: session接口:該接口用于持久化對象的增、查、刪、該,屬于非線程安全。 sessionfactory接口:該接口用于初始化hibernate,充當(dāng)數(shù)據(jù)存儲源的代理,并創(chuàng)建session對象。 configuration接口:該接口在hibernate的啟動時,首先定位映射文檔位置、讀取配置,然后創(chuàng)建sessionfactory對象。 transaction接口:用于事務(wù)

11、操作。 query和criteria接口:使用hql或sql語句查詢數(shù)據(jù)庫。其中criteria接口更靠近面向?qū)ο?;query接口則提供了使用原生sql語句的方法。2.3.3 hibernate基本處理流程1. 創(chuàng)建configuration實(shí)例,讀取項(xiàng)目路徑根目錄下的配置文件信息。2. 創(chuàng)建sessionfactory實(shí)例,將configuration中的配置信息復(fù)制到sessionfactory中。3. 調(diào)用sessionfactory來創(chuàng)建session4. 打開session,并創(chuàng)建事務(wù)transaction5. 進(jìn)行持久化操作6. 提交事務(wù)7. 關(guān)閉session8. 關(guān)閉sessi

12、onfactory2.3.4 hibernate的優(yōu)點(diǎn) 它使得數(shù)據(jù)庫中的每一張表都映射為一個java類,讓我們在開發(fā)過程中可以使用面向?qū)ο蟮姆绞絹聿僮鲾?shù)據(jù)庫。 自動配置,我們只需在數(shù)據(jù)庫中建立表,然后通過myeclipse自帶的工具就能完成映射。 它封裝了對各種數(shù)據(jù)庫的操作 輕量級框架,映射靈活,數(shù)據(jù)庫表、配置文件、映射類我們只需要完成其中任何一部分就能依靠工具完成三者的關(guān)系映射。2.4 spring框架簡介spring框架致力于j2ee應(yīng)用各層的解決方案,貫穿表現(xiàn)層、業(yè)務(wù)層、持久層。同時它是一個輕量級的框架,沒有侵入性,不會改變原有框架的類容。使用它的目的不是去修改原有框架,而是使用它來管理

13、,使得原有的框架工作得更好。2.4.1 spring架構(gòu)圖2-6 spring架構(gòu)圖2-6為spring的架構(gòu),每個模塊功能如下: 核心容器:提供spring框架的基本功能。其主要組件是beanfactory,采用ioc(控制反轉(zhuǎn))將應(yīng)用程序的配置與依賴性代碼分開。 spring上下文:是一個配置文件,用于提供上下文信息。 spring aop:該模塊直接將面向方面的編程功能集成到了spring 框架中。支持聲明式的事務(wù)管理。 spring dao:該模塊用于管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯誤消息。 spring orm:提供了如hibernate這類orm 的對象關(guān)系工具。 sprin

14、g web:為基于 web 的應(yīng)用程序提供了上下文,簡化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌?spring mvc框架:該框架中融入了大量視圖技術(shù)。2.4.2 spring特點(diǎn) 輕量級框架:占用資源少,非侵入性。 控制反轉(zhuǎn)(ioc):使得本來需要我們(應(yīng)用程序)在執(zhí)行前要進(jìn)行的new操作,交由spring的ioc容器來管理,在容器中進(jìn)行配置,再由容器來將new好的對象注入應(yīng)用程序,從而松散了耦合度。 面向切面(aop):通常我們的編程思路是至上而下的,spring的aop使得我們能橫向考慮問題,例如事務(wù)與日志記錄。3 轎車信息管理系統(tǒng)需求分析3.1 任務(wù)概述轎車信息管理系統(tǒng)用戶企

15、業(yè)管理轎車的銷售情況,除了基本的查詢、添加功能外,還應(yīng)有統(tǒng)計(jì)功能。同時操作方面應(yīng)盡量簡單。3.2 用戶特點(diǎn)1) 系統(tǒng)管理員:該用戶擁有最高權(quán)限,可以對轎車的信息修改,查看銷售情況。2) 前臺銷售員:該用戶僅用查看轎車基本信息(不包括成本價(jià)),以及成功出售一輛轎車后的出售操作3.3 功能需求除了基本的查詢、添加功能外,還應(yīng)有統(tǒng)計(jì)銷售功能,以及分段查詢功能。功能需求圖如下圖3-1所示:圖3-1 系統(tǒng)功能需求各模塊具體說明如下:1) 用戶登陸:用戶輸入合法的用戶名和密碼完成登陸,如果用戶名或密碼錯誤,應(yīng)輸出提示。2) 登陸頁面:顯示當(dāng)前用戶的權(quán)限,以及相關(guān)功能連接。3) 車輛管理:提供基本的車輛增、

16、查、刪、改功能,以及出售車輛操作。同時增加相應(yīng)錯誤判斷。4) 業(yè)務(wù)管理:提供總銷售統(tǒng)計(jì)查詢,以及根據(jù)時間段的查詢。同時提供相應(yīng)的錯誤判斷。3.4 界面需求界面簡潔美觀。3.5 操作需求操作簡潔,符合人們通常使用習(xí)慣。3.6 輸入輸出需求要求輸入數(shù)據(jù)合法,如果非法會跳出出錯提示。4 轎車信息管理系統(tǒng)概要設(shè)計(jì)4.1 設(shè)計(jì)思想該轎車管理系統(tǒng)用于轎車基本的增、查、刪、改、出售以及統(tǒng)計(jì)功能。能夠方便企業(yè)對自己的轎車進(jìn)行管理,它將具有以下特點(diǎn): 運(yùn)行速度快 占用資源少 界面簡潔 操作簡單4.2 總體設(shè)計(jì)1) 以用戶登陸后的界面為平臺,將各模塊功能放于該頁面2) 采用ssh框架3) 靈活性要求:視圖與業(yè)務(wù)邏

17、輯分開,低耦合。采取接口方式編程便于系統(tǒng)的維護(hù)以及移植。4) 輸入輸出要求:要求輸入數(shù)據(jù)合法,如果非法會跳出出錯提示。4.3 系統(tǒng)層次結(jié)構(gòu)圖圖4-1 系統(tǒng)層次結(jié)構(gòu)圖4.4 接口設(shè)計(jì)用戶接口:通過鼠標(biāo)與鍵盤操作。內(nèi)部接口:使用數(shù)據(jù)流提供的接口操作各個模塊。4.5 數(shù)據(jù)庫設(shè)計(jì)概念結(jié)構(gòu)設(shè)計(jì)是指將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)。描述概念模型的有力工具是e-r模型。本系統(tǒng)e-r圖如下圖所示:圖4-2 用戶e-r圖圖4-3 轎車銷售e-r圖4.6 出錯處理設(shè)計(jì)1) 以下列出了可能的錯誤情況及其對應(yīng)的錯誤信息:2) 用戶名或密碼有誤,提示:您輸入的用戶名或密碼有誤,請重新輸入。3) 新增車輛在數(shù)據(jù)庫中

18、已經(jīng)存在,提示:您錄入的車名-型號,在數(shù)據(jù)庫中已經(jīng)存在,如果要修改,請到修改頁面。4) 新增車輛的售價(jià)小于成本,提示:您輸入的售價(jià)小于成本。5) 出售數(shù)量大于庫存數(shù)量,提示:您出售的車名-型號,出售數(shù)量大于庫存數(shù)量6) 按時間查詢時起始日期大于截止日期,提示:您輸入的起始日期大于截止日期5 轎車信息管理系統(tǒng)詳細(xì)設(shè)計(jì)本報(bào)告將對轎車系統(tǒng)的數(shù)據(jù)庫與各模塊進(jìn)行詳細(xì)設(shè)計(jì)。5.1 數(shù)據(jù)庫詳細(xì)設(shè)計(jì)5.1.1 數(shù)據(jù)庫關(guān)系模型設(shè)計(jì)e-r圖向關(guān)系模型轉(zhuǎn)換:一個實(shí)體型轉(zhuǎn)換為一個關(guān)系模式,實(shí)體的屬性即為關(guān)系模式的屬性,實(shí)體的標(biāo)識符即為關(guān)系模式的鍵。根據(jù)圖4-2與圖4-3,本系統(tǒng)的關(guān)系模型為:1) 用戶(用戶id,用戶

19、名,密碼,權(quán)限);2) 轎車(轎車id,車名,型號,數(shù)量,售價(jià),成本);3) 銷售表(銷售id,轎車id,銷售日期,銷售數(shù)量)。5.1.2 數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫的物理設(shè)計(jì)是將一個給定邏輯結(jié)構(gòu)實(shí)施到具體的環(huán)境中,邏輯數(shù)據(jù)模型要選取一個具體的工作環(huán)境,這個工作環(huán)境提供了數(shù)據(jù)存儲結(jié)構(gòu)與存取方法。經(jīng)過分析設(shè)計(jì)給出了各主要表的物理結(jié)構(gòu):users表,用于存取用戶信息,其設(shè)計(jì)如下:列名類型長度是否允許空值主鍵/外鍵user_idint8no主鍵usernamevarchar20nopasswordvarchar20nolevelint1no表5-1car表,用于存取轎車基本信息,其設(shè)計(jì)如下:列名類型長

20、度是否允許空值主鍵/外鍵car_idint8no主鍵carnamevarchar20nocartypevarchar20noamountint8noin_priceint8nosell_priceint8no表5-2sell表,用于存取銷售情況,其設(shè)計(jì)如下:列名類型長度是否允許空值主鍵/外鍵sell_idint8no主鍵car_idint8no外鍵sell_amountint8nosell_datedate-no表5-35.2 轎車管理系統(tǒng)模塊詳細(xì)設(shè)計(jì)5.2.1 用戶登陸模塊模塊功能:用戶輸入正確的用戶名密碼后跳轉(zhuǎn)到相應(yīng)頁面,若用戶名或密碼有誤,輸出提示流程圖:圖5-15.2.2 用戶首頁面模

21、塊模塊功能:顯示當(dāng)前用戶權(quán)限,展示相應(yīng)功能連接流程圖:圖5-25.2.3 添加汽車模塊模塊功能:將用戶輸入的轎車信息保存到數(shù)據(jù)庫中。流程圖:圖5-35.2.4 刪除汽車模塊模塊功能:通過下拉框選擇汽車的型號與名字,點(diǎn)擊刪除按鈕對汽車刪除。流程圖:圖5-45.2.5 查詢汽車模塊模塊功能:通過下拉框選擇汽車的型號與名字,點(diǎn)擊查詢按鈕查詢轎車信息。流程圖:圖5-55.2.6 修改汽車模塊模塊功能:依據(jù)輸入的汽車信息修改相應(yīng)汽車的信息流程圖:圖5-65.2.7 出售汽車模塊模塊功能:用戶選擇要出售的汽車,輸入出售數(shù)量,提交出售,如果出售數(shù)量大于庫存數(shù)量,輸出錯誤提示流程圖:圖5-75.2.8 總銷售

22、查詢模塊模塊功能:輸出總的銷售結(jié)果流程圖:圖5-85.2.9 按時間查詢模塊模塊功能:依據(jù)用戶選擇的時間段來查詢該段時間的銷售情況流程圖:圖5-96 轎車信息管理系統(tǒng)具體實(shí)現(xiàn)6.1 開發(fā)與運(yùn)行環(huán)境 操作系統(tǒng):win7 內(nèi)存:2g 硬盤空間:500g 開發(fā)軟件:myeclipse 10,microsoft sql server 2008,java 6.0 ,tomcat6.0 框架版本:struts 2.1,hibernate 3.0,spring 3.06.2 開發(fā)環(huán)境的搭建新建一個web項(xiàng)目名為cims(car infomation management system),選擇使用java6.

23、0,如圖6-1:圖6-1添加struts2相關(guān)支持包,如圖6-2圖6-2在meclipse的數(shù)據(jù)庫視圖中增加cardb配置,如圖6-3:圖6-3添加spring相關(guān)包,除了默認(rèn)的包以外,還應(yīng)選上spring web liberaies 3.0,如圖6-4:圖6-4添加hibernate支持包,除了原有包外,將最后4個包也加入,如圖6-5圖6-5hibernate configuration選擇spring configuration file,因?yàn)槿罂蚣苷现笥蓅pring來管理所有的bean,所以hibernate的配置文件也由spring的applicationcontext.xml文

24、件來管理,點(diǎn)擊下一步;選擇existing spring configuration file,點(diǎn)擊下一步;選擇數(shù)據(jù)庫為cardb,注意方言為sql server;不建立sessionfactory,完成;在web.xml中添加如下代碼; contextconfiglocation/web-inf/classes/applicationcontext.xml org.springframework.web.context.contextloaderlistener struts2 org.apache.struts2.dispatcher.ng.filter.strutsprepareande

25、xecutefilter encodingutf-8 struts2 /* 6.3 數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)users表car表sell表其中sell表中的外鍵請安如下方式添加:數(shù)據(jù)庫映射到項(xiàng)目中,注意id的生成方式選擇native最后的項(xiàng)目中將會有如下映射類:6.4 dao層實(shí)現(xiàn)dao(data access object)是用于訪問數(shù)據(jù)的對象,在使用時,我們在dao中定義訪問其對應(yīng)數(shù)據(jù)對象的接口方法,業(yè)務(wù)層通過dao操作數(shù)據(jù),這樣避免了直接在業(yè)務(wù)層使用持久層的技術(shù)。dao以及dao實(shí)現(xiàn)的項(xiàng)目結(jié)構(gòu)如下圖所示:在使用前,需要在spring的配置文件中添加如下配置:org.hibernate.dialec

26、t.sqlserverdialectcom/cims/domain/users.hbm.xmlcom/cims/domain/sell.hbm.xmlcom/cims/domain/car.hbm.xml在本系統(tǒng)中絕大多數(shù)dao實(shí)現(xiàn)使用gethibernatetemplate()模板來操作數(shù)據(jù)庫,因?yàn)樵撃0迨蔷€程安全的。例子:overridepublic car findcarbynameandtype(string carname, string cartype) list l= gethibernatetemplate().find(from car +where car_name=+ca

27、rname+ and car_type=+cartype+);if(l.size()=1)return (car)l.get(0);return null; 從中可以看出hibernate處理數(shù)據(jù)庫的優(yōu)勢,它使用了對象的方式來對數(shù)據(jù)庫的表操作。而且我們不需要編寫最底層的sql語句,而是直接使用它提供的方法。但hibernate的模板提供的方法似乎不支持一些數(shù)據(jù)庫中的默認(rèn)函數(shù),因此本系統(tǒng)一些地方還使用了session來使用原生sql語句。例子:overridepublic list findcarname() return getsession().createsqlquery(select +

28、distinct car_name from car).list();該方法主要是用于得到數(shù)據(jù)庫中的汽車名字,并且過濾掉重復(fù)的部分。6.5 manager層實(shí)現(xiàn)在action中通過manager對dao接口進(jìn)行調(diào)用,首先將需要對用到的dao實(shí)例化,采用spring的依賴注入方式將實(shí)例化的dao注入到action中。具體調(diào)用示例如下:overridepublic void savesell(car car, int sellamount) calendar c=calendar.getinstance();car.setamount(car.getamount()-sellamount);sel

29、l sell=new sell();sell.setcar(car);sell.setsellamount(sellamount);sell.setselldate(c.gettime().tolocalestring();selldao.savesell(sell);cardao.update(car);前后省略了selldao,cardao的定義以及set方法。該方法用于保存一條銷售信息。在spring的配置文件中需要添加如下代碼:可以理解為我們以前在action執(zhí)行的cardao cardio=new cardaoimpl();語句。不過由于spring的控制反轉(zhuǎn)與依賴注入,使得我們將這

30、個工作交給了spring框架來完成6.6 action層實(shí)現(xiàn)action用于返回一個stirng類型字符串,來選擇跳轉(zhuǎn)頁面。其主要的配置在struts.xml這個文件中,例子如下:/pages/sellmanager/sellcarresult.jsp/pages/sellmanager/willsellcarinfo.jsp6.7 汽車信息查詢模塊實(shí)現(xiàn)該模塊實(shí)現(xiàn)界面如下:首先會根據(jù)數(shù)據(jù)庫中汽車信息生成一個查詢選擇頁面;用戶選擇好查詢車輛后,顯示查詢結(jié)果;下面是該模塊的具體實(shí)現(xiàn)過程:查詢頁面用到了一個struts2的標(biāo)簽該標(biāo)簽有2個主要參數(shù)list對應(yīng)第一個下拉選框,它的值由數(shù)據(jù)庫中的汽車名稱

31、決定;doublelist對應(yīng)第二個下拉選框,它的值對應(yīng)第一個選框中的汽車名稱所對應(yīng)的型號;其生成action的主要代碼如下:public string execute() throws exception nametotype=carmanager.carnametotype();carname=new arraylist();carname.add(所有);carname.addall(carmanager.carname();return success;public list getcartype() valuestack stack = servletactioncontext.ge

32、tvaluestack( servletactioncontext.getrequest() );object name = stack.findvalue( top );if( name!=null & name instanceof string ) return nametotype.get( (string)name );return collections.empty_list;execute()方法中的carname是一個list對象,用于存放所有的汽車名稱,對應(yīng)中的totype是個mapstring,list類型對象,用來存放汽車名稱與型號的對應(yīng)。getcart

33、ype()方法依據(jù)棧頂元素來選擇對應(yīng)的汽車型號的list。它的返回值對應(yīng)于中的doublelist。在spring的配置文件中需要注入carmanager6.1 按時間查詢模塊實(shí)現(xiàn)該模塊的具體實(shí)現(xiàn)頁面如下:首先生成一個選擇查詢時間的頁面,其中年份會依據(jù)數(shù)據(jù)庫中的所有年份來生成選擇時間段都輸出查詢統(tǒng)計(jì)結(jié)果如果選擇的起始時間大于截止時間會報(bào)錯具體實(shí)現(xiàn)過程如下:action中主要方法如下overridepublic string execute() throws exception if(beginyear=-1)selllist=sellmanager.findallsellinfo();else

34、 if(beginyearendyear)setmsg(您選擇的起始年份:+beginyear+,大于截止年份:+endyear);return input;else if(beginyear=endyear)if(beginmonthendmonth)setmsg(您選擇的起始月份:+beginmonth+,小于截止月份:+endmonth);return input;selllist=sellmanager.findsellinfobydate(beginyear, beginmonth, endyear, endmonth);elseselllist=sellmanager.findse

35、llinfobydate(beginyear, beginmonth, endyear, endmonth);setmsg();profit=sellmanager.totalprofit(selllist);totalsell=sellmanager.totalsells(selllist);beginyear=-1;return success;其中默認(rèn)給beginyear賦值為-1,用于處理用戶選擇總銷售情況時的查詢。其余情況下如果時間合法則調(diào)用sellmanager中的相關(guān)方法來獲取銷售的信息。需要在spring的配置文件中添加如下代碼:findsellinfobydate()方法會根

36、據(jù)輸入的4個參數(shù)來生成查詢sell表的sql語句,其中用了很的判斷來處理輸入時間。分別判斷了如下條件:1) 起止年份相同2) 起始年份小于截止年份其主要代碼如下:public list findsellinfobydate(int beginyear, int beginmonth,int endyear, int endmonth) list selllist=new arraylist();string date=null;for(int i=beginyear;i=endyear;i+)if(i=endyear&i=beginyear)for(int j=beginmonth;j=endmonth;j+)date=+i+-%+j+-%;selllist.addall(selldao.findsellinfobydate(date);else if(i!=endyear)for(int j=beginmonth;j=12;j+)date=+i+-%+j+-%;selllist.addall(selldao.findsellinfobydate(date);elsefor(int j=1;j=endmonth;j+)date=+i+-%+j+-%;selllist.ad

溫馨提示

  • 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

提交評論