jsp575固定資產(chǎn)管理系統(tǒng)ssh論文_第1頁
jsp575固定資產(chǎn)管理系統(tǒng)ssh論文_第2頁
jsp575固定資產(chǎn)管理系統(tǒng)ssh論文_第3頁
jsp575固定資產(chǎn)管理系統(tǒng)ssh論文_第4頁
jsp575固定資產(chǎn)管理系統(tǒng)ssh論文_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

-PAGE34-固定資產(chǎn)管理系統(tǒng)摘要隨著計(jì)算機(jī)信息技術(shù)的發(fā)展以及對資產(chǎn)、設(shè)備的管理科學(xué)化、合理化的高要求,利用計(jì)算機(jī)實(shí)現(xiàn)設(shè)備及資產(chǎn)的信息化管理已經(jīng)顯得非常重要。固定資產(chǎn)管理系統(tǒng)是一個(gè)單位不可缺少的部分。但一直以來人們使用傳統(tǒng)的人工方式管理固定資產(chǎn)的信息,這種管理方式存在著許多缺點(diǎn),這對于查找、更新和維護(hù)都帶來了不小的困難。因此,開發(fā)一個(gè)界面友好,易操作的資產(chǎn)管理軟件進(jìn)行自動化管理變得十分重要。這正是本系統(tǒng)開發(fā)的目的和意義。本文所闡述的固定資產(chǎn)管理系統(tǒng),以瀏覽器/服務(wù)器模式高效地實(shí)現(xiàn)了固定資產(chǎn)管理的各項(xiàng)功能,可進(jìn)行資產(chǎn)的添加,刪除、修改、查詢、打印報(bào)表等功能;還可以對每位職工的添加、刪除、修改、查詢基本操作;本系統(tǒng)還對權(quán)限進(jìn)行限制,操作員只可對資產(chǎn)和用戶進(jìn)行基本操作,管理員可以為每位員工賦權(quán)限。使用本系統(tǒng),不僅提升了效率,而且滿足現(xiàn)代高校資產(chǎn)管理的需要。關(guān)鍵詞:資產(chǎn)管理JSPStrutsHibernateSpringFixed-assetsManagerSystemAbstractWiththedevelopmentofcomputerinformationtechnologyandthehighdemandofscientificmanagementandrationalizationofassetsandequipment,usingcomputertoachievetheinformationmanagementofequipmentandassetshasbecomeveryimportant.Fixedassetsmanagementsystemisanindispensablepartofaunit,However,wehavebeenusingthetraditionalmanualtomanagetheinformationoffixedassets,andtherearemanyshortcomingsofthisapproach,whichhasbroughtalotofdifficultiestofindandupdateandmaintenance.Therefore,todevelopaassetmanagementsoftwarewithfriendlyinterfaceandeasyoperationtocarryoutautomatedmanagementbecomeveryimportant.Thisisthepurposeandsignificanceofthedevelopmentofthesystem.Thefixedassetmanagementsystemdecriedinthisarticleachievesfunctionsofefficientmanagementoffixedassetsusingbrowser/servermodel.Inthissystem,wecanusethefunctionofassetsadd,deleteeditsandinquiry,statementsprintingandsoon;wecanalsousethebasicoperationofworkersadd,delete,modifyandcheck.Thesystemalsolimittheauthoritysothatoperatorscanonlydosomebasicoperationstousersandassetsandtheadministratorgivepermissionstoeveryemployee.Withthehelpofthissystem,theuniversitynotonlyenhancestheefficiencybutalsomeetstheneedsofmodernmanagementofasset.Keywords:Fixed-assetsJSPStrutsHibernateSpring目錄TOC\o"1-3"\h\z固定資產(chǎn)管理系統(tǒng) I摘要 IAbstract II前言 V第1章緒論 11.1項(xiàng)目背景 11.2項(xiàng)目設(shè)計(jì)原則 11.2.1實(shí)用性原則 11.2.2經(jīng)濟(jì)性原則 11.2.3擴(kuò)充性原則 21.2.4社會可行性原則 21.3本章小結(jié) 2第2章系統(tǒng)分析 32.1需求分析 32.2技術(shù)可行性 32.2.1動態(tài)網(wǎng)站技術(shù)介紹 32.2.2程序語言的選擇 32.3軟件可行性分析 42.3.1軟件環(huán)境 42.3.2硬件環(huán)境 72.4系統(tǒng)結(jié)構(gòu)可行性分析 72.4.1B/S模式簡介 72.4.2B/S模式的優(yōu)點(diǎn) 82.5本章小結(jié) 8第3章關(guān)鍵技術(shù) 93.1開發(fā)架構(gòu) 93.1.1軟件開發(fā)架構(gòu)的意義 93.1.2Struts架構(gòu)簡介 93.2數(shù)據(jù)持久層 113.2.1持久層主流方案 113.2.2持久層主流方案 123.2.3持久化技術(shù) 123.3本章小結(jié) 13第4章總體設(shè)計(jì) 144.1總體設(shè)計(jì) 144.2數(shù)據(jù)庫設(shè)計(jì) 154.2.1數(shù)據(jù)庫的需求分析 154.2.2數(shù)據(jù)庫表的具體設(shè)計(jì) 154.3詳細(xì)設(shè)計(jì) 174.3.1功能設(shè)計(jì) 174.3.2系統(tǒng)登陸 184.3.3系統(tǒng)用戶管理 204.3.4員工信息管理 234.3.5資產(chǎn)入庫管理 244.3.6資產(chǎn)維護(hù)管理 284.3.7資產(chǎn)借還管理 294.3.8打印報(bào)表 314.3.9密碼修改 344.4技術(shù)難點(diǎn) 344.4.1中文亂碼 344.4.2圖片處理 344.4.3HQL語言 354.4.4安全性 354.5本章小結(jié) 36第5章系統(tǒng)測試 375.1測試的定義及目的 375.2測試的原則 375.3系統(tǒng)的方法 375.3.1界面測試 375.3.2功能測試 385.3.3需求測試 385.3.4性能測試 385.4系統(tǒng)中其它要注意的地方 385.5固定資產(chǎn)管理系統(tǒng)的測試 395.6本章小結(jié) 39結(jié)論 40致謝 41參考文獻(xiàn) 42前言隨著社會經(jīng)濟(jì)的迅速發(fā)展和科學(xué)技術(shù)的全面進(jìn)步,計(jì)算機(jī)事業(yè)的飛速發(fā)展,以計(jì)算機(jī)與通信技術(shù)為基礎(chǔ)的信息系統(tǒng)正處于蓬勃發(fā)展的時(shí)期。隨著企業(yè)的發(fā)展,企業(yè)的規(guī)模也逐漸發(fā)生變化,其管理難度也越來越大,如何優(yōu)化企業(yè)設(shè)備、資產(chǎn)的日常管理也就成為了一個(gè)大眾化的課題。如何更好的提高生產(chǎn)效率,相關(guān)的企業(yè)資產(chǎn)管理系統(tǒng)的研發(fā)在社會中越來越受到重視。固定資產(chǎn)已成為公司管理中不可或缺的一部分,在許多國家得到了廣泛的研究與應(yīng)用??偟恼f來,固定資產(chǎn)管理系統(tǒng)就是通過集中固定資產(chǎn)信息,對公司的資產(chǎn)進(jìn)行調(diào)控。實(shí)現(xiàn)固定資產(chǎn)管理系統(tǒng)現(xiàn)代化的根本途徑是信息化、系統(tǒng)化。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對固定資產(chǎn)進(jìn)行管理,具有手工管理所無法比擬的優(yōu)點(diǎn)。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高固定資產(chǎn)管理的效率,也是科學(xué)化、正規(guī)化管理的重要條件。固定資產(chǎn)管理系統(tǒng)通過采集固定資產(chǎn)日常工作中所產(chǎn)生的各種原始數(shù)據(jù),根據(jù)資產(chǎn)管理的要求,對數(shù)據(jù)進(jìn)行分類、統(tǒng)計(jì)、匯總、分析,建立程序化、制度化、規(guī)范化的固定資產(chǎn)計(jì)算機(jī)軟件管理系統(tǒng),包括了固定資產(chǎn)的一般特性、固定資產(chǎn)狀態(tài)數(shù)據(jù)和固定資產(chǎn)能力數(shù)據(jù),及時(shí)準(zhǔn)確地報(bào)出各種報(bào)表,為固定資產(chǎn)管理提供了一個(gè)現(xiàn)代化的管理手段,這一手段可以強(qiáng)化和規(guī)范對固定資產(chǎn)的管理。便于計(jì)劃、財(cái)務(wù)、審計(jì)等管理部門的介入,形成嚴(yán)格的監(jiān)督、約束機(jī)制。緒論項(xiàng)目背景隨著我國高等教育事業(yè)的迅猛發(fā)展,高等學(xué)校使用的固定資產(chǎn)規(guī)模在急速增長,使其日趨復(fù)雜,管理難度越來越大。尤其是隨著校際間的合并與調(diào)整、學(xué)校內(nèi)部推行的后勤、財(cái)務(wù)、人事、分配等各項(xiàng)改革的深化,對高等學(xué)校的固定資產(chǎn)管理工作不斷提出新要求。但是,多年來固定資產(chǎn)管理工作一直是高校管理的一個(gè)薄弱環(huán)節(jié),管理基礎(chǔ)工作不夠規(guī)范,資產(chǎn)安全控制體系尚不完善,家底不清、帳實(shí)不符、資產(chǎn)流失的現(xiàn)象在不少的學(xué)校依然存在,與高等教育發(fā)展改革的新形勢很不適應(yīng)。近幾年來,為加強(qiáng)固定資產(chǎn)管理工作,國內(nèi)一些地區(qū)和學(xué)校進(jìn)行了有益的探索,開發(fā)管理軟件,開始使用計(jì)算機(jī)管理教學(xué)儀器、設(shè)備等,技術(shù)上有了一定的進(jìn)步。但總的看來,這些軟件實(shí)現(xiàn)的往往是對原來手工勞動的簡單替代,完成的僅僅是單一業(yè)務(wù)和專門用途資產(chǎn)的管理,未能從根本上改變高校固定資產(chǎn)管理被動、滯后的局面。因此,必須以有力支撐高等教育發(fā)展改革的高度出發(fā),對固定資產(chǎn)管理工作進(jìn)行系統(tǒng)的規(guī)劃和建設(shè),運(yùn)用現(xiàn)代信息技術(shù)真正實(shí)現(xiàn)管理水平上的飛躍。本系統(tǒng)就是基于此種社會背景進(jìn)行獨(dú)立開發(fā),解決了以往資產(chǎn)管理中存在的普遍問題,如資產(chǎn)的錄入、刪除等模糊不清,數(shù)據(jù)來去不透明,致使資產(chǎn)無據(jù)可查。本系統(tǒng)不僅實(shí)現(xiàn)了通過簡單操作完成繁瑣的資產(chǎn)管理功能,而且將每筆資產(chǎn)的動態(tài)信息進(jìn)行數(shù)據(jù)記錄,里面有資產(chǎn)、相關(guān)操作人員和時(shí)間的記錄,使得所有資產(chǎn)都有據(jù)可查、透明可見,提高資產(chǎn)管理效率,解決以往資產(chǎn)管理弊端。項(xiàng)目設(shè)計(jì)原則實(shí)用性原則固定資產(chǎn)管理是企業(yè)管理中的一個(gè)重要組成部分,其管理具有數(shù)量大、種類多、價(jià)值高、使用周期長、使用地點(diǎn)分散等特點(diǎn),管理難度比較大。很多單位目前仍采用人工記賬的管理方式,因?yàn)橐陨显蚴沟霉芾砉ぷ鳟惓FD難,導(dǎo)致資產(chǎn)流失和重復(fù)購置等問題,所以迫切的需要一款實(shí)用的管理軟件的出現(xiàn)。充分考慮到在固定資產(chǎn)管理中可能遇到的種種問題,系統(tǒng)主要應(yīng)該包括資產(chǎn)管理中的日常管理,從而實(shí)現(xiàn)對資產(chǎn)的全方位監(jiān)控管理。從實(shí)用性來分析。系統(tǒng)已實(shí)際需求為基礎(chǔ),盡量全面的做好需求分析,解決固定資產(chǎn)中的種種普遍問題,以減少日后更新軟件的次數(shù)。經(jīng)濟(jì)性原則系統(tǒng)開發(fā)需要進(jìn)行多方面的考慮,不僅要從使用性和擴(kuò)充性考慮,還需要從適當(dāng)?shù)慕?jīng)濟(jì)角度分析。首先,進(jìn)行開發(fā)成本的估算以及了解取得效益的評估,確定要開發(fā)的項(xiàng)目是否值得投資開發(fā),這些即為經(jīng)濟(jì)可行性研究的內(nèi)容。對于大多數(shù)系統(tǒng),一般衡量經(jīng)濟(jì)上是否合算,應(yīng)考慮一個(gè)底線。其次,經(jīng)濟(jì)可行性研究范圍比較廣,包括成本—效益分析、公司的長期經(jīng)營策略、開發(fā)所需的成本和資源、潛在的市場前景。本系統(tǒng)建立適合高校自身需求的網(wǎng)絡(luò)平臺,提供廣泛的涵蓋資產(chǎn)管理多種需求的功能,數(shù)據(jù)處理方式靈活,滿足需求,節(jié)省網(wǎng)站建設(shè)成本,并確保其較好的拓展性和開放性;同時(shí)網(wǎng)站具有基于WEB界面的管理后臺,能夠自主的對網(wǎng)站中的內(nèi)容作更新、修改操作,節(jié)省了高校網(wǎng)站的運(yùn)營成本,提高了信息更新、傳播效率。擴(kuò)充性原則網(wǎng)站的整體規(guī)劃及框架設(shè)計(jì)是具可擴(kuò)充性的。首先前臺頁面的設(shè)計(jì)能保證網(wǎng)站在增加欄目后不會破壞網(wǎng)站的整體結(jié)構(gòu)。以此方便后期維護(hù)升級,不僅減少經(jīng)濟(jì)開支,并且大大提高了解決實(shí)際問題的效率,所以本系統(tǒng)具有很高的實(shí)際應(yīng)用價(jià)值。其次后臺數(shù)據(jù)庫的設(shè)計(jì)具有高度的擴(kuò)充性,能夠根據(jù)需要對資產(chǎn)、員工的增、減、改、查,從而完成對資產(chǎn)設(shè)備的大批量錄入或者刪除及修改等相關(guān)操作,對員工表亦可如此操作,達(dá)到了根據(jù)實(shí)際需求實(shí)現(xiàn)操作并完成提高升級性能和高度擴(kuò)充的目的。社會可行性原則研究要開發(fā)的項(xiàng)目是否存在任何侵犯、妨礙等責(zé)任問題,要開發(fā)項(xiàng)目的運(yùn)行方式在用戶組織內(nèi)是否行的通,現(xiàn)有管理制度、人員素質(zhì)和操作方式是否可行,這些即為社會可行性研究的內(nèi)容。社會可行性所涉及的范圍也比較廣,它包括合同、責(zé)任、侵權(quán)、用戶組織的管理模式及規(guī)范,其他一些技術(shù)人員常常不了解的陷阱等。本項(xiàng)目根據(jù)實(shí)際需求開發(fā),能夠完成資產(chǎn)的基本管理應(yīng)用,具有一定的上線應(yīng)用價(jià)值。因?yàn)楸酒脚_是個(gè)人自主開發(fā)的,所以不存在侵權(quán)、管理制度、組織管理等問題,這個(gè)平臺的社會可行性是可行的。本章小結(jié)本章主要介紹固定資產(chǎn)的管理在過去有很大的弊端,急需一個(gè)系統(tǒng)高效的管理系統(tǒng)。并且以實(shí)際角度出發(fā),根據(jù)固定資產(chǎn)具有的相關(guān)特點(diǎn)對項(xiàng)目進(jìn)行實(shí)用性、經(jīng)濟(jì)性、擴(kuò)充性和社會可行性等多方面做到深層次的分析,達(dá)到管理容易、更新信息方便、操作簡便、信息透明化等目的,從而解決以往存在的問題。系統(tǒng)分析需求分析設(shè)備不僅是高校固定資產(chǎn)的重要組成部分,也是一個(gè)高校技術(shù)裝備水平的重要標(biāo)志,賴以正常經(jīng)營和參與市場競爭的物質(zhì)技術(shù)基礎(chǔ)。根據(jù)高校的實(shí)際需求本系統(tǒng)具有以下的功能需求:統(tǒng)一、友好的操作界面,能保證系統(tǒng)的易用性。完善的資產(chǎn)及設(shè)備檔案管理,支持資產(chǎn)及設(shè)備信息的增加、刪除、修改、查詢等基本管理模塊。軟件同時(shí)提供了資產(chǎn)及設(shè)備的借出、歸還管理,資產(chǎn)及設(shè)備的維修管理。軟件提供了多功能查詢,有多種查詢條件可以任意選擇,方便信息的匯總。連續(xù)錄入式的應(yīng)用增添及維護(hù)管理,用戶的權(quán)限、密碼修改設(shè)置。技術(shù)可行性動態(tài)網(wǎng)站技術(shù)介紹Internet起源于20世紀(jì)60年代的美國,它在近幾年迅速風(fēng)靡全球,其根本原因不僅在于它擁有卓越的國際通信功能,更在于它擁有巨大的信息資源。所謂的Internet是指由分布在全世界成千上萬的計(jì)算機(jī)網(wǎng)絡(luò)遵循一定的通訊協(xié)議,并相互聯(lián)系在一起而形成的國際互連網(wǎng)絡(luò),也就是說,Internet是建立和使用這些網(wǎng)絡(luò)的人群、群體、公司以及各種網(wǎng)絡(luò)資源的集合體。隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,單純的靜態(tài)頁面已經(jīng)不能滿足發(fā)展的需要,因?yàn)殪o態(tài)頁面是用單純的HTML語言組成的,它沒有交互性.因此,為了滿足實(shí)際的需要,許多網(wǎng)頁文件擴(kuò)展名不再只是“htm”、“html”,出現(xiàn)了以“php”、“asp”、“jsp”、“shtml”等為后綴的網(wǎng)頁文件,這些都是采用動態(tài)網(wǎng)頁技術(shù)制作出來的。程序語言的選擇CGICGI(CommonGatewayInterface,通用網(wǎng)關(guān)接口)。首先,客戶端(即Web瀏覽器)根據(jù)某資源的URL(UniformResourceLocator,統(tǒng)一資源定位器)向Web服務(wù)器提出請求,Web服務(wù)器的HTTPDaemon(守護(hù)進(jìn)程)將此請求的參數(shù)通過標(biāo)準(zhǔn)輸入stdin和環(huán)境變量傳遞給指定的CGI程序,并啟動此應(yīng)用程序進(jìn)行處理,如要存取數(shù)據(jù)庫服務(wù)器上數(shù)據(jù)庫的數(shù)據(jù),則向數(shù)據(jù)庫服務(wù)器發(fā)出處理請求,數(shù)據(jù)庫服務(wù)器將執(zhí)行結(jié)果返回給CGI程序,CGI程序處理結(jié)果通過標(biāo)準(zhǔn)輸出stdout返回給HTTPDaemon進(jìn)程,再由HTTPDaemon進(jìn)程返回給客戶端,由瀏覽器解釋執(zhí)行,將最終結(jié)果在用戶面前顯示。CGI允許Web服務(wù)器運(yùn)行外部應(yīng)用程序,以通過外部程序來訪問數(shù)據(jù)庫等一些外部資源,并產(chǎn)生HTML文檔給瀏覽器。但每次請求CGI程序都要重新啟動程序,影響了響應(yīng)的速度,且CGI程序不能被多個(gè)客戶請求共享,影響了各種資源的使用效率。為了克服CGI的這些缺點(diǎn),一些Web服務(wù)器廠商開發(fā)出了專用的API(ApplicationsProgramInterface應(yīng)用程序接口),這樣就允許程序員編寫程序來擴(kuò)展服務(wù)器的功能。API相對于CGI與Web服務(wù)器的結(jié)合更加緊密,占用的資源較少,運(yùn)行的效率大有提高,安全性與保護(hù)性更好。但是開發(fā)API應(yīng)用程序比開發(fā)CGI應(yīng)用程序復(fù)雜得多,要求程序員掌握更多的計(jì)算機(jī)軟件知識,且各種API之間的兼容性不好,業(yè)界沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),使得API程序只能工作在專用的Web服務(wù)器與操作系統(tǒng)之上。編寫CGI的程序設(shè)計(jì)語言有許多種,常用的有C,PERL,VisualC++等,由于對程序員的要求較高,且編寫與調(diào)試比其它隊(duì)編程技術(shù)困難,故近年來基于B/S的信息系統(tǒng)工程時(shí)間中已很少被采用。JSPJSP(JavaServerPages)是由Sun公司倡導(dǎo),許多別的公司參與一起創(chuàng)建的一種新動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),類似其他技術(shù)標(biāo)準(zhǔn)。在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片斷(Scriptlet)和JSP標(biāo)簽,構(gòu)成了JSP網(wǎng)頁(*.jsp)Servlet/JSPContainer收到客戶端發(fā)出的請求時(shí),首先執(zhí)行其中的程序片斷,然后將執(zhí)行結(jié)果以HTML格式響應(yīng)給客戶端,其中程序片斷可以是:操作數(shù)據(jù)庫,重新定向網(wǎng)頁以及發(fā)送E-Mail等等,這些都是建立動態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端運(yùn)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,與客戶端的瀏覽器無關(guān),因此,JSP被稱為Server-sideLanguage,所以被許多人認(rèn)為是未來最有發(fā)展前途的動態(tài)網(wǎng)站技術(shù)之一。經(jīng)過如上的程序語言的比較,PHP功能相對簡單,不適合作大程序,而CGI效率相對較低,所以也不考慮,因?yàn)樵撓到y(tǒng)并沒有原有的基礎(chǔ)平臺需要擴(kuò)展,也不需要與其他系統(tǒng)進(jìn)行太多的交互,所以使用J2EE的模式并不能夠體現(xiàn)出J2EE本身的優(yōu)勢,而JSP又是J2EE的核心技術(shù)之一,可以隨時(shí)升級為J2EE程序,這里暫時(shí)不考慮采用J2EE,這樣只需要在ASP和JSP中進(jìn)行選擇.在進(jìn)行了諸多因素的比較之后,最終認(rèn)為目前這個(gè)階段比較合適的是JSP,而選擇Struts架構(gòu)作為開發(fā)的主體框架,選用Hibernate作為數(shù)據(jù)持續(xù)性處理層,則是考慮到了其高速的開發(fā)效率,及代碼重用性高,易于維護(hù)等各種優(yōu)勢。其最終目的是希望提高系統(tǒng)底層業(yè)務(wù)邏輯的可重用性,增加系統(tǒng)的可擴(kuò)展性,降低系統(tǒng)維護(hù)成本。軟件可行性分析軟件環(huán)境開發(fā)一個(gè)固定資產(chǎn)管理系統(tǒng)需相應(yīng)的前段開發(fā)工具和數(shù)據(jù)管理系統(tǒng),還需要一個(gè)服務(wù)器等。本系統(tǒng)根據(jù)Struts+Spring+Hibernate組合結(jié)構(gòu)設(shè)計(jì)而成,利用Hibernate進(jìn)行持久層開發(fā),Struts進(jìn)行業(yè)務(wù)邏輯控制,利用Spring進(jìn)行Bean的管理,依賴注入。MVC模式貫穿了整個(gè)設(shè)計(jì)流程,Model層的使用spring的核心技術(shù)IOC控制依賴注入對調(diào)用者和被調(diào)用者幾乎沒有任何要求,完全支持對POJO之間的依賴關(guān)系管理,如此減少代碼冗余,View層主要運(yùn)用Ajax無刷新提交,充分增加了客戶體驗(yàn),JSTL的應(yīng)用使各個(gè)層之間的聯(lián)系更加容易,JavaScript進(jìn)行多種頁面的驗(yàn)證,判斷是否符合邏輯要求,若不符合驗(yàn)證需要重新填寫,為后臺服務(wù)器節(jié)省資源,已達(dá)到提高效率減輕服務(wù)器壓力,繼承使得我們可以對持久層的對象進(jìn)行抽象,方便理解易于管理,可以簡化創(chuàng)建用戶界面的過程。Controller層中的action主要負(fù)責(zé)接受HTTP請求信息,可以接管用戶請求并對異常進(jìn)行處理。根據(jù)配置文件struts-config.xml的配置信息,把請求轉(zhuǎn)發(fā)給合適的Action對象。Action類負(fù)責(zé)調(diào)用模型的方法,更新模型的狀態(tài),并幫助控制應(yīng)用程序的流程。本文開發(fā)的固定資產(chǎn)管理系統(tǒng)所需要的環(huán)境如下:開發(fā)工具:Myeclipse8.0,PowerDesigner12.5,RationalRose數(shù)據(jù)庫:MySQL5.1Web服務(wù)器:Tomcat6.0操作系統(tǒng):Windows7外部包:Struts.jar,Hibernate.jar,JavaReport-V3-Enterprise-Released.jar服務(wù)器端開發(fā)工具M(jìn)yEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大地提高了工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML、Struts、JSF、CSS。JavaScript、SQL、Hibernate。本系統(tǒng)利用現(xiàn)在JAVAEE開發(fā)的主流工具M(jìn)yEclipse進(jìn)行開發(fā),它不僅是一個(gè)開源軟件,而且是一個(gè)基于Java的可擴(kuò)展開發(fā)平臺。MyEclipse的功能十分強(qiáng)大,支持也十分廣泛,尤其是對各種開元產(chǎn)品的支持十分不錯(cuò)。數(shù)據(jù)庫MySQL是最受歡迎的開源SQL數(shù)據(jù)庫管理系統(tǒng),它由MySQLAB開發(fā)、發(fā)布和支持。它是一個(gè)快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫服務(wù)器,服務(wù)器支持關(guān)鍵任務(wù)、重負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個(gè)大配置(mass-deployed)的軟件中去,一個(gè)數(shù)據(jù)庫是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)集合,如果要添加、訪問和處理存儲在一個(gè)計(jì)算機(jī)數(shù)據(jù)庫中的數(shù)據(jù),就需要一個(gè)像MySQL這樣的數(shù)據(jù)庫管理系統(tǒng)。從計(jì)算機(jī)可以很好的處理大量的數(shù)據(jù)以來,數(shù)據(jù)庫管理系統(tǒng)就在計(jì)算機(jī)處理中和獨(dú)立應(yīng)用程序或其他部分應(yīng)用程序一樣扮演著一個(gè)重要的角色。MySQL服務(wù)器就是這樣一個(gè)快的、可靠的和易于使用的數(shù)據(jù)庫服務(wù)器,它的連接性、速度和安全性使MySQL非常適合訪問在Internet上的數(shù)據(jù)庫。Web服務(wù)器Tomcat不僅僅是一個(gè)Servlet容器,它也具有傳統(tǒng)的Web服務(wù)器的功能:處理Html頁面?;赥omcat的開發(fā)其實(shí)主要是Jsp和Servlet的開發(fā),開發(fā)Jsp和Servlet非常簡單,可以用普通的文本編輯器或者IDE,然后將其打包成WAR即可,和傳統(tǒng)的桌面應(yīng)用程式不同,Tomcat中的應(yīng)用程式是個(gè)WAR(WebArchive)文件,WAR是Sun提出的一種Web應(yīng)用程式格式,和JAR類似,也是許多文件的一個(gè)壓縮包。這個(gè)包中的文件按一定目錄結(jié)構(gòu)來組織:通常其根目錄下包含有Html和Jsp文件或包含這兩種文件的目錄,另外還會有一個(gè)WEB-INF目錄,這個(gè)目錄非常重要。通常在WEB-INF目錄下有一個(gè)web.xml文件和一個(gè)classes目錄,web.xml是這個(gè)應(yīng)用的設(shè)置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其他類(如JavaBean)。通常這些所依賴的類也能打包成JAR放到WEB-INF下的lib目錄下進(jìn)行統(tǒng)一管理。在Tomcat4以后的高級版本中可以利用Servlet2.3提供的事件監(jiān)聽器功能,來對系統(tǒng)的應(yīng)用或者Session實(shí)行監(jiān)聽。Tomcat也提供其它的一些特征,如與SSL集成到一塊,實(shí)現(xiàn)安全傳輸。還有Tomcat也提供JNDI支持,這與那些J2EE應(yīng)用服務(wù)器提供的是一致的。開發(fā)語言Java是一種跨平臺,適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z言。具體來說,它具有如下特性:面向?qū)ο?、多態(tài)性、分布式、可靠、安全、多線程等如下:面向?qū)ο螅好嫦驅(qū)ο笃鋵?shí)是現(xiàn)實(shí)世界模型的自然延伸?,F(xiàn)實(shí)世界中任何實(shí)體都可以看作是對象。對象之間通過消息相互作用。另外,現(xiàn)實(shí)世界中任何實(shí)體都可歸屬于某類事物,任何對象都是某一類事物的實(shí)例。如果說傳統(tǒng)的過程式編程語言是以過程為中心以算法為驅(qū)動的話,面向?qū)ο蟮木幊陶Z言則是以對象為中心以消息為驅(qū)動。用公式表示,過程式編程語言為:程序=算法+數(shù)據(jù);面向?qū)ο缶幊陶Z言為:程序=對象+消息。所有面向?qū)ο缶幊陶Z言都支持三個(gè)概念:封裝、多態(tài)性和繼承,Java也不例外?,F(xiàn)實(shí)世界中的對象均有屬性和行為,映射到計(jì)算機(jī)程序上,屬性則表示對象的數(shù)據(jù),行為表示對象的方法(其作用是處理數(shù)據(jù)或同外界交互)。所謂封裝,就是用一個(gè)自主式框架把對象的數(shù)據(jù)和方法聯(lián)在一起形成一個(gè)整體??梢哉f,對象是支持封裝的手段,是封裝的基本單位。Java語言的封裝性較強(qiáng),因?yàn)镴ava無全程變量,無主函數(shù),在Java中絕大部分成員是對象,只有簡單的數(shù)字類型、字符類型和布爾類型除外。而對于這些類型,Java也提供了相應(yīng)的對象類型以便與其他對象交互操作。多態(tài)性:就是多種表現(xiàn)形式,具體來說,可以用“一個(gè)對外接口,多個(gè)內(nèi)在實(shí)現(xiàn)方法”表示。舉一個(gè)例子,計(jì)算機(jī)中的堆??梢源鎯Ω鞣N格式的數(shù)據(jù),包括整型,浮點(diǎn)或字符。不管存儲的是何種數(shù)據(jù),堆棧的算法實(shí)現(xiàn)是一樣的。針對不同的數(shù)據(jù)類型,編程人員不必手工選擇,只需使用統(tǒng)一接口名,系統(tǒng)可自動選擇。運(yùn)算符重載(operatoroverload)一直被認(rèn)為是一種優(yōu)秀的多態(tài)機(jī)制體現(xiàn),但由于考慮到它會使程序變得難以理解,所以Java最后還是把它取消了。繼承是指一個(gè)對象直接使用另一對象的屬性和方法。事實(shí)上,我們遇到的很多實(shí)體都有繼承的含義。例如,若把汽車看成一個(gè)實(shí)體,它可以分成多個(gè)子實(shí)體,如:卡車、公共汽車等。這些子實(shí)體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實(shí)體則是汽車的“孩子”。Java提供給用戶一系列類(class),Java的類有層次結(jié)構(gòu),子類可以繼承父類的屬性和方法。與另外一些面向?qū)ο缶幊陶Z言不同,Java只支持單一繼承。平臺無關(guān)性:Java是平臺無關(guān)的語言是指用Java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺上運(yùn)行。平臺無關(guān)有兩種:源代碼級和目標(biāo)代碼級。C和C++具有一定程度的源代碼級平臺無關(guān),表明用C或C++寫的應(yīng)用程序不用修改只需重新編譯就可以在不同平臺上運(yùn)行。Java主要靠Java虛擬機(jī)(JVM)在目標(biāo)碼級實(shí)現(xiàn)平臺無關(guān)性。JVM是一種抽象機(jī)器,它附著在具體操作系統(tǒng)之上,本身具有一套虛機(jī)器指令,并有自己的棧、寄存器組等。但JVM通常是在軟件上而不是在硬件上實(shí)現(xiàn)。(目前,SUN系統(tǒng)公司已經(jīng)設(shè)計(jì)實(shí)現(xiàn)了Java芯片,主要使用在網(wǎng)絡(luò)計(jì)算機(jī)NC上。另外,Java芯片的出現(xiàn)也會使Java更容易嵌入到家用電器中。)JVM是Java平臺無關(guān)的基礎(chǔ),在JVM上,有一個(gè)Java解釋器用來解釋Java編譯器編譯后的程序。Java編程人員在編寫完軟件后,通過Java編譯器將Java源程序編譯為JVM的字節(jié)代碼。任何一臺機(jī)器只要配備了Java解釋器,就可以運(yùn)行這個(gè)程序,而不管這種字節(jié)碼是在何種平臺上生成的。另外,Java采用的是基于IEEE標(biāo)準(zhǔn)的數(shù)據(jù)類型。通過JVM保證數(shù)據(jù)類型的一致性,也確保了Java的平臺無關(guān)性。Java的平臺無關(guān)性具有深遠(yuǎn)意義。首先,它使得編程人員所夢寐以求的事情(開發(fā)一次軟件在任意平臺上運(yùn)行)變成事實(shí),這將大大加快和促進(jìn)軟件產(chǎn)品的開發(fā)。其次Java的平臺無關(guān)性正好迎合了“網(wǎng)絡(luò)計(jì)算機(jī)”思想。如果大量常用的應(yīng)用軟件(如字處理軟件等)都用Java重新編寫,并且放在某個(gè)Internet服務(wù)器上,那么具有NC的用戶將不需要占用大量空間安裝軟件,他們只需要一個(gè)Java解釋器,每當(dāng)需要使用某種應(yīng)用軟件時(shí),下載該軟件的字節(jié)代碼即可,運(yùn)行結(jié)果也可以發(fā)回服務(wù)器。目前,已有數(shù)家公司開始使用這種新型的計(jì)算模式構(gòu)筑自己的企業(yè)信息系統(tǒng)。分布式:分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機(jī)上,操作分布是指把一個(gè)計(jì)算分散在不同主機(jī)上處理。Java支持WWW客戶機(jī)/服務(wù)器計(jì)算模式,因此,它支持這兩種分布性。對于前者,Java提供了一個(gè)叫做URL的對象,利用這個(gè)對象,你可以打開并訪問具有相同URL地址上的對象,訪問方式與訪問本地文件系統(tǒng)相同。對于后者,Java的applet小程序可以從服務(wù)器下載到客戶端,即部分計(jì)算在客戶端進(jìn)行,提高系統(tǒng)執(zhí)行效率。Java提供了一整套網(wǎng)絡(luò)類庫,開發(fā)人員可以利用類庫進(jìn)行網(wǎng)絡(luò)程序設(shè)計(jì),方便得實(shí)現(xiàn)Java的分布式特性??煽啃院桶踩裕篔ava最初設(shè)計(jì)目的是應(yīng)用于電子類消費(fèi)產(chǎn)品,因此要求較高的可靠性。Java雖然源于C++,但它消除了許多C++不可靠因素,可以防止許多編程錯(cuò)誤。首先,Java是強(qiáng)類型的語言,要求顯式的方法聲明,這保證了編譯器可以發(fā)現(xiàn)方法調(diào)用錯(cuò)誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了內(nèi)存的非法訪問;第三,Java的自動單元收集防止了內(nèi)存丟失等動態(tài)內(nèi)存分配導(dǎo)致的問題;第四,Java解釋器運(yùn)行時(shí)實(shí)施檢查,可以發(fā)現(xiàn)數(shù)組和字符串訪問的越界,最后,Java提供了異常處理機(jī)制,程序員可以把一組錯(cuò)誤代碼放在一個(gè)地方,這樣可以簡化錯(cuò)誤處理任務(wù)便于恢復(fù)。由于Java主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此對安全性有較高的要求。如果沒有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險(xiǎn)。Java通過自己的安全機(jī)制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。當(dāng)Java字節(jié)碼進(jìn)入解釋器時(shí),首先必須經(jīng)過字節(jié)碼校驗(yàn)器的檢查,然后,Java解釋器將決定程序中類的內(nèi)存布局,隨后,類裝載器負(fù)責(zé)把來自網(wǎng)絡(luò)的類裝載到單獨(dú)的內(nèi)存區(qū)域,避免應(yīng)用程序之間相互干擾破壞。最后,客戶端用戶還可以限制從網(wǎng)絡(luò)上裝載的類只能訪問某些文件系統(tǒng)。上述幾種機(jī)制結(jié)合起來,使得Java成為安全的編程語言。多線程:線程是操作系統(tǒng)的一種新概念,它又被稱作輕量進(jìn)程,是比傳統(tǒng)進(jìn)程更小的可并發(fā)執(zhí)行的單位。C和C++采用單線程體系結(jié)構(gòu),而Java卻提供了多線程支持。Java在兩方面支持多線程。一方面,Java環(huán)境本身就是多線程的。若干個(gè)系統(tǒng)線程運(yùn)行負(fù)責(zé)必要的無用單元回收,系統(tǒng)維護(hù)等系統(tǒng)級操作;另一方面,Java語言內(nèi)置多線程控制,可以大大簡化多線程應(yīng)用程序開發(fā)。Java提供了一個(gè)類Thread,由它負(fù)責(zé)啟動運(yùn)行,終止線程,并可檢查線程狀態(tài)。Java的線程還包括一組同步原語。這些原語負(fù)責(zé)對線程實(shí)行并發(fā)控制。利用Java的多線程編程接口,開發(fā)人員可以方便得寫出支持多線程的應(yīng)用程序,提高程序執(zhí)行效率。必須注意地是,Java的多線程支持在一定程度上受運(yùn)行時(shí)支持平臺的限制。例如,如果操作系統(tǒng)本身不支持多線程,Java的多線程特性可能就表現(xiàn)不出來??蛻舳丝蛻舳擞捎诓簧婕暗较到y(tǒng)的開發(fā)和維護(hù)等問題,因此可以不用安裝過多的軟件,只要能夠?qū)崿F(xiàn)對服務(wù)器端的訪問就可以,一般來說普通PC機(jī)即可。硬件環(huán)境服務(wù)器端服務(wù)器端的配置是有建立站點(diǎn)所需的硬件來決定的。在最低配置下,服務(wù)器雖然能正常工作,但其性能往往不盡如人意,如果我們想使服務(wù)器工作的更好的話,我們需要更好的配置,特別是服務(wù)器的內(nèi)存應(yīng)該大于2G,下面為服務(wù)器的最低配置:處理器:雙核2.1GHz內(nèi)存:2GB顯卡:SVGA顯示適配器光驅(qū):安裝系統(tǒng)及相關(guān)軟件網(wǎng)卡:PCI和ISA接口均可客戶端客戶端主要用于瀏覽系統(tǒng)界面、同web數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互等基本操作,因此客戶端對硬件要求不高,主要由所安裝的Windows的要求來決定。但若期望性能更好,需要的配置應(yīng)該高于以下配置:處理器:雙核2.1GHz內(nèi)存:2GB硬盤:320G顯卡:SVGA顯示適配器網(wǎng)卡:PCI和ISA接口均可系統(tǒng)結(jié)構(gòu)可行性分析B/S模式簡介本系統(tǒng)采用B/S模式B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn),形成所謂三層3-tier結(jié)構(gòu)。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本(TCO)。以目前的技術(shù)看,局域網(wǎng)建立B/S結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用,并通過Internet/Intranet模式下數(shù)據(jù)庫應(yīng)用,相對易于把握、成本也是較低的。它是一次性到位的開發(fā),能實(shí)現(xiàn)不同的人員,從不同的地點(diǎn),以不同的接入方式(比如LAN、WAN、Internet/Intranet等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護(hù)數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全。特別是在JAVA這樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)管理軟件更是方便、快捷、高效。B/S模式的優(yōu)點(diǎn)維護(hù)和升級方式簡單目前,軟件系統(tǒng)的改進(jìn)和升級越來越頻繁,B/S架構(gòu)的產(chǎn)品明顯體現(xiàn)著更為方便的特性。對一個(gè)稍微大一點(diǎn)的單位來說,系統(tǒng)管理員如果需要在幾百甚至上千部電腦之間來回奔跑,效率和工作量是可想而知的,但B/S架構(gòu)的軟件只需要管理服務(wù)器就行了,所有的客戶端只是瀏覽器,根本不需要做任何的維護(hù)。無論用戶的規(guī)模有多大,有多少分支機(jī)構(gòu)都不會增加任何維護(hù)升級的工作量,所有的操作只需要針對服務(wù)器進(jìn)行就可以;如果是異地,只需要把服務(wù)器連接專網(wǎng)即可,實(shí)現(xiàn)遠(yuǎn)程維護(hù)、升級和共享。所以客戶機(jī)越來越“瘦”,而服務(wù)器越來越“胖”是將來信息化發(fā)展的主流方向。今后,軟件升級和維護(hù)會越來越容易,而使用起來會越來越簡單,這對用戶人力、物力、時(shí)間、費(fèi)用的節(jié)省是顯而易見的驚人。因此,維護(hù)和升級革命的方式是“瘦”客戶機(jī),“胖”服務(wù)器。成本降低,選擇更多大家都知道windows操作系統(tǒng)在平常應(yīng)用上幾乎一統(tǒng)天下,瀏覽器成為了標(biāo)準(zhǔn)配置,但在服務(wù)器操作系統(tǒng)上windows并不是處于絕對的統(tǒng)治地位?,F(xiàn)在的趨勢是凡使用B/S架構(gòu)的應(yīng)用管理軟件,只需安裝在Linux服務(wù)器上即可,而且安全性高。所以服務(wù)器操作系統(tǒng)的選擇是很多的,不管選用哪種操作系統(tǒng)都可以讓大部分人使用windows作為桌面操作系統(tǒng),電腦不受影響,這就使得最流行免費(fèi)的Linux操作系統(tǒng)快速發(fā)展起來,Linux除了操作系統(tǒng)是免費(fèi)的以外,連數(shù)據(jù)庫也是免費(fèi)的,這種選擇非常盛行。比如說很多人每天上“網(wǎng)易”網(wǎng),只要安裝了瀏覽器就可以了,并不需要了解“網(wǎng)易”的服務(wù)器用的是什么操作系統(tǒng),而事實(shí)上大部分網(wǎng)站確實(shí)沒有使用windows操作系統(tǒng),但用戶的電腦本身安裝的大部分是windows操作系統(tǒng)。本章小結(jié)本章節(jié)首先對項(xiàng)目所要實(shí)現(xiàn)的功能進(jìn)行分析,應(yīng)主要包含對資產(chǎn)的錄入、銷毀、維修、借入借出和多功能查詢,和對相關(guān)工作人員的管理和權(quán)限的分配。然后介紹一下本系統(tǒng)所涉及到的技術(shù)知識,及對系統(tǒng)所需要的軟硬件環(huán)境進(jìn)行說明。最后闡述為何會選擇B/S結(jié)構(gòu)和諸多好處。關(guān)鍵技術(shù)開發(fā)架構(gòu)軟件開發(fā)架構(gòu)的意義對于已經(jīng)習(xí)慣了使用傳統(tǒng)的JSP設(shè)計(jì)方式實(shí)現(xiàn)動態(tài)網(wǎng)站的程序員,在剛開始接觸Struts時(shí)經(jīng)常會出現(xiàn)一種困惑:專業(yè)書籍和文章中總是使用StrutsFramework這種說法,Struts通常也被稱為是一種Web應(yīng)用開發(fā)的架構(gòu)(Framework),那么到底什么是架構(gòu),軟件開發(fā)架構(gòu)的意義又是什么呢?如果將早期的軟件開發(fā)方式比喻為傳統(tǒng)手工業(yè)生產(chǎn)方式的話,那么基于軟件開發(fā)架構(gòu)的開發(fā)方式則是大型現(xiàn)代化工廠生產(chǎn)方式的體現(xiàn)。雖然二者都能夠制作出產(chǎn)品,但是在生產(chǎn)效率及產(chǎn)品質(zhì)量的保證上顯然會有巨大的差異。汽車生產(chǎn)廠家在制造一輛汽車時(shí),總是先在各條生產(chǎn)線上制作出不同類型的零件,最終再由專業(yè)的技師在專業(yè)的組裝生產(chǎn)線上將成百上千的零件組裝成一臺完整的汽車,顯然,設(shè)計(jì)者的主要精力并不是用于重復(fù)地制造相同的車輪,相同的方向盤,而是利用現(xiàn)成的車輪組裝出一輛輛不同的汽車。同樣,開發(fā)人員也可以利用軟件架構(gòu)中提供的組建庫(如同已經(jīng)生產(chǎn)好的規(guī)范化的汽車核心零部件庫),按照既定的組裝方式將不同的組建應(yīng)用在軟件產(chǎn)品的各個(gè)環(huán)節(jié),最終開發(fā)出一個(gè)完整的,高質(zhì)量的軟件產(chǎn)品。實(shí)際上,如果需要,汽車設(shè)計(jì)者也可以將原有的車輪進(jìn)行改造,例如涂上不同的顏色,貼上不同的裝飾物等。同理,軟件開發(fā)人員可以在現(xiàn)有組件的基礎(chǔ)上進(jìn)行擴(kuò)展和改進(jìn),這實(shí)際上充分地實(shí)現(xiàn)了軟件開發(fā)的可擴(kuò)展性。組件復(fù)用是面向?qū)ο缶幊趟枷氲慕Y(jié)晶,而在軟件架構(gòu)的基礎(chǔ)上進(jìn)行開發(fā)可以最大限度地實(shí)現(xiàn)組件的復(fù)用。在大型、多層結(jié)構(gòu)的軟件開發(fā)項(xiàng)目中,開發(fā)和使用具有可重用性,可擴(kuò)展性,經(jīng)過良好測試的軟件組織,可以使開發(fā)者從大量繁瑣的代碼工作中解脫出來,專注于軟件設(shè)計(jì)和業(yè)務(wù)邏輯的實(shí)現(xiàn)。通常將被驗(yàn)證為有效的,相同類型問題的解決方案進(jìn)行抽象,即可提取形成一個(gè)應(yīng)用程序框架,即Framework。每一種Framework都有自己的一套明確的實(shí)現(xiàn)機(jī)制,通常在Framework結(jié)構(gòu)中都會包含一個(gè)“命令和控制”組件(“commandandcontrol”component),類似于工業(yè)生產(chǎn)中的“控制中心”,開發(fā)人員通過它可以很容易地控制、擴(kuò)充和實(shí)現(xiàn)該Framework上的開發(fā)結(jié)構(gòu)。Struts架構(gòu)簡介隨著Web開發(fā)技術(shù)的日益成熟,在Web開發(fā)領(lǐng)域中出現(xiàn)了許多設(shè)計(jì)好的軟件開發(fā)框架,Struts就是一種基于MVC經(jīng)典設(shè)計(jì)模式的框架,也是當(dāng)前Web開發(fā)中比較成熟的一種框架。經(jīng)典的MVC模式MVC(Model-View-Controller)模式,即模型-視圖-控制器模式,其核心思想是將整個(gè)程序代碼分成相對獨(dú)立而又能協(xié)同工作的3個(gè)組成部分。(1)模型(Model):業(yè)務(wù)邏輯層。實(shí)現(xiàn)具體的業(yè)務(wù)邏輯,狀態(tài)管理的功能。(2)視圖(View):表示層。即與用戶實(shí)現(xiàn)交互的界面,通常實(shí)現(xiàn)數(shù)據(jù)輸入和輸出功能。(3)控制器(Controller):控制層。起到控制整個(gè)業(yè)務(wù)流程(FlowControl)的作用,實(shí)現(xiàn)View和Model部分的協(xié)同工作。MVC設(shè)計(jì)模式可以針對需要為同樣的數(shù)據(jù)提供多個(gè)不同視圖的應(yīng)用程序,例如:公司產(chǎn)品數(shù)據(jù)庫中同樣的產(chǎn)品信息數(shù)據(jù),但需要根據(jù)用戶的不同需求在頁面中顯示其所需的不同產(chǎn)品信息。MVC設(shè)計(jì)模式中,事件一般是指客戶端Web瀏覽器提交的各種不同請求,這些請求由控制器進(jìn)行處理,控制器根據(jù)事件的類型來改變模型或各個(gè)視圖,視圖也可以接受模型發(fā)出的數(shù)據(jù)更新的通知,依據(jù)數(shù)據(jù)更新的結(jié)果調(diào)整視圖效果,呈現(xiàn)在用戶面前。而模型也可以通過視圖所獲得的用戶提交的數(shù)據(jù)進(jìn)行具體業(yè)務(wù)邏輯的處理。顯然這樣的運(yùn)行機(jī)制可以起到分工明確,職責(zé)清晰,各盡所長的效果。而在軟件開發(fā)的過程中,這樣的開發(fā)方式無疑可以有效地區(qū)分不同的開發(fā)者,盡可能減少彼此之間的互相影響。充分發(fā)揮每個(gè)開發(fā)者的特長。這在開發(fā)大型復(fù)雜的Web項(xiàng)目時(shí)體現(xiàn)得尤為突出。如圖3-1所示。模模型視圖1視圖2控制器事件改變改變改變更新更新獲得數(shù)據(jù)獲得數(shù)據(jù)圖3-1MVC設(shè)計(jì)模式的結(jié)構(gòu)Struts1.2開發(fā)框架作為基于MVC設(shè)計(jì)模式的Web應(yīng)用的一種典型體現(xiàn),Struts架構(gòu)實(shí)際上是建立在Model2基礎(chǔ)上的,對Model,View和Controller都提供了現(xiàn)成的實(shí)現(xiàn)組建。Controller控制器部分Struts中的Controller控制器部分是通過專門的Servlet來實(shí)現(xiàn)的,該Servlet是一個(gè)StrutsAPI中提供的ActionServlet類型的實(shí)例,ActionServlet類繼承javax.servlet.http.HttpServlet類,因此該類的實(shí)例可以和普通的Servlet一樣工作,其作用是接收客戶端瀏覽器的請求,然后選擇執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,再把響應(yīng)結(jié)果送回到客戶端。Action對象是開發(fā)者定義的類(該類必須是StrutsAPI中提供的Action類的子類)的實(shí)例。在繼承該類的過程中開發(fā)者可以加入具體業(yè)務(wù)邏輯或調(diào)用業(yè)務(wù)邏輯模塊。Action對象在進(jìn)行了業(yè)務(wù)邏輯或調(diào)用業(yè)務(wù)邏輯模塊。Action對象在進(jìn)行了業(yè)務(wù)邏輯的處理以后會將應(yīng)用程序流程轉(zhuǎn)到合適的View組件,最終將響應(yīng)送回瀏覽器客戶端。Struts中提倡Action對象只用來決定“做什么”,相當(dāng)于一個(gè)低層面的控制器,因此也可以將Action歸納為Controller的組成部分。Model模型部分MVC系統(tǒng)中的Model模型部分從概念上可以分為兩類:系統(tǒng)的內(nèi)部狀態(tài)和改變系統(tǒng)狀態(tài)的動作。Struts中的Model部分一般由JavaBean以及EJB組成。在Struts架構(gòu)中使用JavaBean來提供具體的業(yè)務(wù)邏輯,即“怎么做”,對于復(fù)雜的系統(tǒng)也可以使用EJB等組件來實(shí)現(xiàn)系統(tǒng)狀態(tài)維護(hù)。這種業(yè)務(wù)邏輯的細(xì)分可以增強(qiáng)代碼的可重用性。View視圖部分Struts中的View視圖部分依然可以采用JSP來實(shí)現(xiàn).此外,Struts還提供了豐富的自定義標(biāo)簽庫,View部分使用這些自定義標(biāo)簽同樣可以實(shí)現(xiàn)與Model部分的有效交互并能夠增強(qiáng)顯示功能。Struts開發(fā)環(huán)境安裝在Tomcat安裝完成后,即可將Struts框架工具安裝到對應(yīng)的WEBContainer中??梢酝ㄟ^Struts的二進(jìn)制發(fā)布包安裝Struts框架,具體操作步驟:(1)下載二進(jìn)制發(fā)布版;(2)將下載的Struts二進(jìn)制發(fā)布包進(jìn)行解包,將解包目錄下的lib目錄下的所有.jar文件全部復(fù)制到項(xiàng)目目錄的WEB-INF/lib下,如果在多個(gè)項(xiàng)目中都用到了Struts,則將上述文件直接復(fù)制到Tomcat目錄下的common/lib下;(3)將對應(yīng)的lib目錄下的struts.jar文件添加到環(huán)境變量CLASSPATH中即可。以上資源可以從/struts/userGuide/index.html獲得更多關(guān)于Struts安裝和相關(guān)配置的說明信息。數(shù)據(jù)持久層數(shù)據(jù)是軟件系統(tǒng)中不可缺少的環(huán)節(jié),數(shù)據(jù)持久化的解決之道也一直是企業(yè)計(jì)算標(biāo)準(zhǔn)中最有影響力的部分。如今關(guān)系型數(shù)據(jù)庫已經(jīng)穩(wěn)定地占據(jù)著主要的數(shù)據(jù)庫市場,XML技術(shù)和XML數(shù)據(jù)庫技術(shù)也日漸成熟。J2EE的三層結(jié)構(gòu)是指表示層(Presentation),業(yè)務(wù)邏輯層(BusinessLogic)以及基礎(chǔ)架構(gòu)層(Infrastructure),這樣的劃分非常經(jīng)典,但是在實(shí)際的項(xiàng)目開發(fā)法中,開發(fā)者通常對三層結(jié)構(gòu)進(jìn)行擴(kuò)展來滿足一些項(xiàng)目的具體要求,一個(gè)最常用的擴(kuò)展就是將三層體系擴(kuò)展為五層體系,即表示層(Presentation),控制/中介層(Controller/Mediator)、領(lǐng)域?qū)?Domain),數(shù)據(jù)持久層(DataPersistence)和數(shù)據(jù)源層(DataSource)。它其實(shí)是在三層架構(gòu)中增加了兩個(gè)中間層。控制/中介層位于表示層和領(lǐng)域?qū)又g,數(shù)據(jù)持久層位于領(lǐng)域?qū)雍突A(chǔ)架構(gòu)層之間。由于對象范例和關(guān)系范例這兩大領(lǐng)域之間存在“阻抗不匹配”,所以把數(shù)據(jù)持久層單獨(dú)作為J2EE體系的一個(gè)層提出來的原因就是能夠在對象-關(guān)系數(shù)據(jù)庫之間提供一個(gè)成功的企業(yè)級映射解決方案盡最大可能彌補(bǔ)這兩種范例之間的差異。持久層主流方案數(shù)據(jù)是我們軟件開發(fā)人員必須考慮的對象。無論你使用哪種技術(shù),借助哪種工具,以及購買哪種軟件平臺產(chǎn)品,當(dāng)接受一個(gè)實(shí)際的問題時(shí),你都需要面對實(shí)際的數(shù)據(jù),考慮實(shí)際數(shù)據(jù)的各種問題。在這些問題中往往都包含數(shù)據(jù)持久化的問題,這不僅是因?yàn)槲覀兊挠?jì)算機(jī)內(nèi)存有限,更主要的原是業(yè)務(wù)邏輯的需要,作為一個(gè)接觸軟件技術(shù),嘗試寫程序的人,我們要接觸各種類型的數(shù)據(jù)。下面列舉了三種常見的數(shù)據(jù)類型:隨機(jī)數(shù)據(jù)這種數(shù)據(jù)指的是不確定結(jié)構(gòu),不了解數(shù)量,目前也搞不清關(guān)系的數(shù)據(jù)。它聽起來很奇怪,但在實(shí)際的程序設(shè)計(jì)中十分常見。例如:從一個(gè)震動源傳遞到計(jì)算機(jī)采集卡的數(shù)據(jù),再比如一個(gè)自然物生長過程中的數(shù)據(jù)??赡苡行?shù)據(jù)實(shí)際上是很有規(guī)律的,但是在設(shè)計(jì)程序時(shí)由于對它的了解很少,使它對于我們來說也成了隨機(jī)的數(shù)據(jù)了。我曾經(jīng)在遇到這種搞不大清楚的數(shù)據(jù)時(shí),使用很大的數(shù)組或者多個(gè)鏈表來表述,不管下一個(gè)數(shù)據(jù)的值是什么,先存儲起來再說。有時(shí)候當(dāng)遇到的數(shù)據(jù)總也摸不到規(guī)律,或者越來越多,內(nèi)存也容納不下時(shí),就找個(gè)文件存放起來,后來發(fā)現(xiàn)其實(shí)存入文件的方式很不錯(cuò),起碼可以一直繼續(xù)下去。也許這就是最佳的持久化策略了。屬性數(shù)據(jù)在接觸具體的項(xiàng)目開發(fā)任務(wù)時(shí),更多的時(shí)候要接觸到屬性類型的數(shù)據(jù),這些數(shù)據(jù)來源于對象的屬性,當(dāng)然這些屬性之間還存在關(guān)系,對于此類數(shù)據(jù),似乎最好的持久化方法就是利用關(guān)系型數(shù)據(jù)庫表了,在存入數(shù)據(jù)表的過程中還可以借助Hibernate來提高開發(fā)的效率,或者直接使用JDBC來傳遞SQL語句。這兩種方法有些相似但還有細(xì)微的差別。XML數(shù)據(jù)現(xiàn)在很多網(wǎng)絡(luò)上的應(yīng)用程序都使用XML類型的數(shù)據(jù),或者說是一種樹狀的數(shù)據(jù),如何將這兩種數(shù)據(jù)持久化保存下來呢?一種方法是將XML數(shù)據(jù)拆分為屬性數(shù)據(jù),然后存儲到關(guān)系型數(shù)據(jù)庫中。另一種方式比較新,是將XML數(shù)據(jù)存儲到XML數(shù)據(jù)庫中,在XML數(shù)據(jù)庫中存儲這種數(shù)據(jù)時(shí),數(shù)據(jù)的結(jié)構(gòu)不變,XML數(shù)據(jù)在XML數(shù)據(jù)庫中以文檔對象形式保存,使用XPaht和XQuery查詢語言來查詢XML數(shù)據(jù)中的節(jié)點(diǎn)數(shù)據(jù),或者多個(gè)XML文檔中的多個(gè)節(jié)點(diǎn)數(shù)據(jù)。持久層主流方案JDBC許多開發(fā)者用JDBC進(jìn)行數(shù)據(jù)庫程序的開發(fā)。此中方式很多情況下都使用DAO模式,采用SQL進(jìn)行查詢。雖然用此方式可以使應(yīng)用程序代碼與具體的數(shù)據(jù)庫廠商和數(shù)據(jù)庫位置無關(guān),不過JDBC是低級別的數(shù)據(jù)庫訪問方式,JDBC并不支持面向?qū)ο蟮臄?shù)據(jù)庫表示。JDBC數(shù)據(jù)庫表示完全圍繞關(guān)系數(shù)據(jù)庫模型。在大型應(yīng)用程序的DAO中書寫這樣的代碼,維護(hù)量是非常大的。EJB在J2EE的規(guī)范中,為EJB定義了兩種持久化的解決方案:一種是BMP,另一種是CMP。其中CMP不需要將SQL語句加入到代碼中。目前,在采用J2EE的應(yīng)用中,EJBCMP方式得到了廣泛應(yīng)用。更加引人注意的是,隨著EJB規(guī)范的發(fā)展,CMP也包含了一些高級關(guān)系的內(nèi)容。但是,CMP的使用比較復(fù)雜,對很多開發(fā)人員來說比較難以掌握。而且,不是在所有的情況下都適合在系統(tǒng)中采用EJB,而且想要非常清楚的了解EJB規(guī)范也是非常費(fèi)時(shí)的。在用EJB編碼前,先要讓專家理解API,然后需要了解每一個(gè)容器部署時(shí)所要關(guān)注的技術(shù)。此外,許多情況下商用容器的性能和支持也不是很好。JDOJDO是一個(gè)存儲java對象的規(guī)范,JDO規(guī)范1.0的提出可以使你將精力集中在設(shè)計(jì)Java對象模型,然后在企業(yè)應(yīng)用軟件架構(gòu)的不同層面中存儲傳統(tǒng)的Java對象(PlainOldJavaObjects,簡稱POJOs),采用JDOQL語言進(jìn)行SQL操作。一些公司(包括sun)企圖根據(jù)JDO規(guī)范進(jìn)行設(shè)計(jì)并實(shí)現(xiàn)JDO產(chǎn)品,然而他們都不能很好的進(jìn)行實(shí)現(xiàn),并且性能優(yōu)化上比較差。持久化技術(shù)一直以來,在Java開發(fā)領(lǐng)域中基于數(shù)據(jù)庫應(yīng)用的設(shè)計(jì)實(shí)現(xiàn)一直是面向關(guān)系的,也就是說與數(shù)據(jù)庫相關(guān)的處理過程并沒有實(shí)現(xiàn)真正的面向?qū)ο?。如何在?shù)據(jù)存取的操作中實(shí)現(xiàn)真正的面向?qū)ο?,一直是開發(fā)人員探索的問題。正在使用中的對象序列化技術(shù),EJB中EntityBean技術(shù)等,都是在這方面很好的探索。但是實(shí)體Bean設(shè)計(jì)實(shí)現(xiàn)過程中的繁瑣和復(fù)雜,使得許多開發(fā)人員望而卻步。而Hibernate的出現(xiàn),提供了一個(gè)符合Java面向?qū)ο缶幊趟枷?,易于使用的?shù)據(jù)庫持久化解決方案。因此,在目前行業(yè)的Java數(shù)據(jù)庫應(yīng)用項(xiàng)目中,有越來越多的開發(fā)人員開始嘗試使用Hibernate在數(shù)據(jù)庫外面包裹上一層面向?qū)ο蟮耐庖?,從而將開發(fā)人員從繁瑣、重復(fù)、技術(shù)含量不高的數(shù)據(jù)庫編程中結(jié)果出來。Hibernate概述:Hibernate在英文中的意思是“冬眠”,從這個(gè)角度也可以體會到Hibernate架構(gòu)下提供的相關(guān)技術(shù)可以實(shí)現(xiàn)對十角狀態(tài)的持久性保存。在傳統(tǒng)的數(shù)據(jù)庫編程中,開發(fā)人員要面對大量重復(fù)行代碼的編寫,以實(shí)現(xiàn)對不同數(shù)據(jù)表中的數(shù)據(jù)的獲取,并將獲取到的記錄數(shù)據(jù)封裝成對象,在處理完成之后,如果需要進(jìn)行對象狀態(tài)的存取,需要將對象中的數(shù)據(jù)拆卸成數(shù)據(jù)庫記錄中的對應(yīng)字段的值,然后向數(shù)據(jù)庫中進(jìn)行存取。這種工作方式顯然沒有實(shí)現(xiàn)真正意義上的數(shù)據(jù)存取階段的面向?qū)ο?。雖然數(shù)據(jù)存取過程中的工作步驟是基本固定的,但是由于操作的數(shù)據(jù)表中字段列表數(shù)據(jù)的不同,使得開發(fā)人員必須要不厭其煩地書寫與相應(yīng)的實(shí)體類對應(yīng)的封裝處理過程。而在Hibernate中,類似這種重復(fù)性高,工作量大,但是又必須保證高質(zhì)量完成的體力活,全部由Hibernate接管過去。這對廣大的Java開發(fā)人員無疑是個(gè)非常好的消息。Hibernate本質(zhì)上是一個(gè)面向Java開發(fā)環(huán)境的對象/關(guān)系數(shù)據(jù)庫映射工具。在Hibernate之前,開發(fā)人員要將面向?qū)ο蟮能浖完P(guān)系數(shù)據(jù)庫結(jié)合在一起,往往會費(fèi)長麻煩。而借助Hibernate對象/關(guān)系數(shù)據(jù)庫映射技術(shù),可以非常輕松地將以面向?qū)ο笏枷敕庋b的對像的各個(gè)狀態(tài)數(shù)據(jù)映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。如圖3-2所示。JavaJava應(yīng)用HibernateHQL語句數(shù)據(jù)庫SQL語句XML映射文件圖3-2Hibernate工作示意圖本章小結(jié)本章節(jié)闡述了Struts框架有何優(yōu)點(diǎn),并將MVC模式以圖形加文字的雙重方式進(jìn)行介紹,充分展現(xiàn)其好處,引出固定資產(chǎn)管理系統(tǒng)選取Struts1.2為開發(fā)框架,采用經(jīng)典的MVC模式對項(xiàng)目進(jìn)行整體的分層,讓項(xiàng)目層次分明、代碼規(guī)范。再由框架引出數(shù)據(jù)庫同樣是系統(tǒng)中不可分割的一部分,然后提出通過Hibernate的映射文件簡化對數(shù)據(jù)庫的操作,從而達(dá)到更好的面向?qū)ο筮M(jìn)行開發(fā)。總體設(shè)計(jì)系統(tǒng)設(shè)計(jì)是在系統(tǒng)分析的基礎(chǔ)上由抽象到具體的過程。主要目標(biāo)是將系統(tǒng)分析階段所提出的反映了信息需求的系統(tǒng)邏輯方案轉(zhuǎn)換成可以實(shí)施的基于計(jì)算機(jī)與通信系統(tǒng)的物理(技術(shù))方案,為下一階段系統(tǒng)實(shí)施提供必要的技術(shù)資料,應(yīng)符合系統(tǒng)性、靈活性、可靠性、經(jīng)濟(jì)性的要求。根據(jù)系統(tǒng)分析階段能確定新系統(tǒng)的邏輯模型、功能要求,在可實(shí)現(xiàn)的環(huán)境下設(shè)計(jì)出一個(gè)能在計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境上實(shí)施的方案,即建立新系統(tǒng)的物理模型。本階段的任務(wù)是設(shè)計(jì)軟件系統(tǒng)的模型層次結(jié)構(gòu),設(shè)計(jì)數(shù)據(jù)庫的結(jié)構(gòu)以及涉及模塊的控制流程,其目的是明確系統(tǒng)具體怎么實(shí)現(xiàn)。這個(gè)階段又分為兩個(gè)步驟:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)解決軟件系統(tǒng)的模塊劃分和模塊的層次機(jī)構(gòu)以及數(shù)據(jù)庫設(shè)計(jì);詳細(xì)設(shè)計(jì)解決每個(gè)模塊的控制流程,內(nèi)部算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。根據(jù)種種分析設(shè)計(jì)在逐步實(shí)現(xiàn)各個(gè)功能,完成一個(gè)完整的固定資產(chǎn)管理系統(tǒng)。總體設(shè)計(jì)用戶管理資產(chǎn)管理資產(chǎn)維護(hù)用戶管理資產(chǎn)管理資產(chǎn)維護(hù)系統(tǒng)管理增加刪除用戶用戶信息維護(hù)增加資產(chǎn)信息刪除資產(chǎn)信息資產(chǎn)借出資產(chǎn)歸還資產(chǎn)信息查詢刪除維修信息添加維修信息維修信息查詢用戶密碼修改系統(tǒng)退出員工管理增加員工信息修改員工信息刪除員工信息報(bào)表打印報(bào)表固定資產(chǎn)管理系統(tǒng)圖4-1系統(tǒng)功能模塊圖本系統(tǒng)主要分為四大模塊:資產(chǎn)管理模塊:根據(jù)不同資產(chǎn)的唯一編號對資產(chǎn)進(jìn)行購入、銷毀、修改屬性和多種組合條件的查詢操作等,里面包括相應(yīng)的邏輯驗(yàn)證及提示。對資產(chǎn)維護(hù)的增加維修設(shè)備、刪除已經(jīng)維修好的信息、查詢操作;支持對固定資產(chǎn)庫存報(bào)表的多種格式打印。用戶管理模塊:可直接添加員工成為用戶并為其分配不同的權(quán)限,管理員權(quán)限是本系統(tǒng)最大的權(quán)限,可以對所有的設(shè)備和人員進(jìn)行維護(hù)、查詢等操作。操作員不擁有分配權(quán)限的功能,可以完成除了此模塊之外的所有功能,如:首先,可對資產(chǎn)進(jìn)行錄入、所有資產(chǎn)不同方式的查詢、銷毀某些設(shè)備、修改設(shè)備屬性信息及對設(shè)備進(jìn)行借出歸還狀態(tài)的跟蹤和更改,及時(shí)更新設(shè)備的所處狀態(tài)和庫存設(shè)備的全部信息等。其次可對員工進(jìn)行的增加、刪除、修改信息和查詢等相應(yīng)的維護(hù),可以將庫存設(shè)備信息根據(jù)不同需求打印出來。員工管理:支持對學(xué)校的教工信息的維護(hù),包括新增員工、刪除員工、修改員工所處狀態(tài)和對員工進(jìn)行明細(xì)查詢等。系統(tǒng)管理:修改登陸用戶的登錄密碼及安全退出系統(tǒng),保證系統(tǒng)的正常運(yùn)行。數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫的需求分析依據(jù)項(xiàng)目的處理需求,對應(yīng)數(shù)據(jù)表的設(shè)計(jì)及功能如下:資產(chǎn)信息表:主要用于保存入庫的資產(chǎn)信息。資產(chǎn)設(shè)備的借出歸還表:主要用于保存借出設(shè)備的信息。資產(chǎn)設(shè)備維修信息表:主要用于保存維修資產(chǎn)的信息。管理資產(chǎn)信息的用戶表:主要用于保存系統(tǒng)管理員的信息。公司員工其本信息表:主要用于保存公司員工的基本信息。部門表:主要用于保存部門信息。數(shù)據(jù)庫表的具體設(shè)計(jì)首先從用戶的業(yè)務(wù)數(shù)據(jù)出發(fā),設(shè)計(jì)出一張大表,然后對其進(jìn)行優(yōu)化。業(yè)務(wù)分析一定要具體,對于出現(xiàn)的每一張單據(jù)和報(bào)表都要分析清楚,看哪些字段會用來作為查詢字段,然后為這些字段建立數(shù)字型的代碼,如果字段本身就是數(shù)字型的可不予考慮。仔細(xì)分析業(yè)務(wù)數(shù)據(jù),從優(yōu)化查詢的角度把業(yè)務(wù)數(shù)據(jù)的大表分割開,確保數(shù)據(jù)正確分布到相應(yīng)的數(shù)據(jù)庫表中,每個(gè)字段都代表此表的特性。本系統(tǒng)首先就從固定資產(chǎn)的實(shí)際出發(fā),以資產(chǎn)表為主表,擴(kuò)充出資產(chǎn)修為表、借出歸還表和員工表,員工表屬于部門表,員工升級成為用戶,產(chǎn)生用戶表。然后根據(jù)實(shí)際需求并考慮系統(tǒng)的后期擴(kuò)展和健全性填充各個(gè)表的字段,以便完成資產(chǎn)管理的操作。各個(gè)數(shù)據(jù)表如下:設(shè)備借出歸還表是由資產(chǎn)表和員工表根據(jù)實(shí)際需求衍生出來的一張業(yè)務(wù)表,此表用于保存某位員工于某個(gè)時(shí)間借出了某個(gè)編號的資產(chǎn)借,并打算在什么時(shí)間歸還及實(shí)際的歸還時(shí)間的全部信息,使得用戶對資產(chǎn)的管理更加方便簡單。表結(jié)構(gòu)如表4-1資產(chǎn)設(shè)備借出歸還表。表4-1資產(chǎn)設(shè)備借出歸還表字段名數(shù)據(jù)類型長度是否主鍵描述inout_noint10是借用流水號ic_idvarchar30資產(chǎn)編號comployee_novarchar30員工編號out_timevarchar20借出時(shí)間should_timevarchar20應(yīng)還時(shí)間back_timevarchar20歸還時(shí)間用戶表是依附于員工表而存在的一張管理員表,此表中根據(jù)competence字段區(qū)分管理員及操作員兩種權(quán)限,管理員具有最高權(quán)限,操作員可對資產(chǎn)進(jìn)行全方位的管理和信息查詢。表結(jié)構(gòu)如表4-2用戶表。表4-2用戶表字段名數(shù)據(jù)類型長度是否主鍵描述userNamevarchar30是用戶名pwdvarchar20密碼comployee_novarchar30員工編號competencevarchar15權(quán)限員工信息表是跟資產(chǎn)基本表密切相關(guān)的一張相關(guān)操作表,員工編號為唯一主鍵,能夠標(biāo)識員工身份。每一次對資產(chǎn)的操作都應(yīng)該落實(shí)到具體的員工頭上,讓所有的操作都可查,使業(yè)務(wù)更加清晰,方便應(yīng)用。表結(jié)構(gòu)如表4-3員工信息表。表4-3員工信息表字段名數(shù)據(jù)類型長度是否主鍵描述comployee_novarchar30是員工編號comployee_namevarchar25員工姓名sexvarchar5性別ageint10年齡deptvarchar45部門professionvarchar20現(xiàn)任職務(wù)addressvarchar60家庭地址phonevarchar20聯(lián)系方式comployee_statuvarchar10員工狀態(tài)設(shè)備借出歸還表是由資產(chǎn)表和員工表根據(jù)實(shí)際需求衍生出來的一張業(yè)務(wù)表,此表用于保存某位員工于某個(gè)時(shí)間借出了某個(gè)編號的資產(chǎn)借,并打算在什么時(shí)間歸還及實(shí)際的歸還時(shí)間的全部信息,使得用戶對資產(chǎn)的管理更加方便簡單。表結(jié)構(gòu)如表4-4資產(chǎn)設(shè)備借出歸還表。表4-4資產(chǎn)設(shè)備借出歸還表字段名數(shù)據(jù)類型長度是否主鍵描述inout_noint10是借用流水號ic_idvarchar30資產(chǎn)編號comployee_novarchar30員工編號out_timevarchar20借出時(shí)間should_timevarchar20應(yīng)還時(shí)間back_timevarchar20歸還時(shí)間部門表的存在是專門為了方便使用單而存在的表,其主要用于區(qū)分不同部門而方便操作,每個(gè)員工都有一個(gè)字段叫做dept,使得不同部門的人員,進(jìn)行不同的歸攏,方便管理。具體表結(jié)構(gòu)如表4-5部門表。表4-5部門表字段名數(shù)據(jù)類型長度是否主鍵描述deptvarchar45是部門名稱資產(chǎn)設(shè)備維修信息表也是由資產(chǎn)基本表衍生出來的一張業(yè)務(wù)表,它用于管理哪些設(shè)備因?yàn)楹畏N原因而需要維修,其中有由誰送去維修并經(jīng)過誰手而修,維修流水號應(yīng)該為唯一主鍵,包含所有的維修相關(guān)信息。表結(jié)構(gòu)如表4-6資產(chǎn)設(shè)備維修信息表。表4-6資產(chǎn)設(shè)備維修信息表字段名數(shù)據(jù)類型長度是否主鍵描述repair_noint10是維修流水號zc_idvarchar30資產(chǎn)編號send_timevarchar30送修時(shí)間sendervarchar50送修人Login_uservarchar50經(jīng)手人reasonvarchar50送修原因wx_timevarchar30維修時(shí)間wx_resultvarchar45維修結(jié)果costfloat30花費(fèi)金額wx_commentvarchar45維修備注詳細(xì)設(shè)計(jì)功能設(shè)計(jì)本系統(tǒng)主要用于高校中的“資產(chǎn)”進(jìn)行管理。具體地講,固定資產(chǎn)管理系統(tǒng)就是通過資產(chǎn)的增加、刪除、查看、借出、歸還、維修等一系列手段來提高效率,最終達(dá)到發(fā)展目標(biāo)的一種管理行為。總體來說就是解決固定資產(chǎn)管理中經(jīng)常出現(xiàn)的實(shí)物與財(cái)務(wù)賬目不符的情況,以實(shí)物管理為特點(diǎn),以簡化為目的,實(shí)現(xiàn)信息流和實(shí)物流的統(tǒng)一,并且提高工作效率減輕工作負(fù)擔(dān)。本系統(tǒng)中各種功能操作都非常簡單方便,操作員無須專門的培訓(xùn)就可以使用,大大的減少了誤操作的幾率。具體實(shí)現(xiàn)目標(biāo)如下:系統(tǒng)用戶管理功能當(dāng)前登陸的用戶可根據(jù)個(gè)人需要對自己的登陸密碼進(jìn)行修改。系統(tǒng)用戶即管理員可對系統(tǒng)中的資產(chǎn)進(jìn)行管理,可以對資產(chǎn)進(jìn)行錄入、資產(chǎn)查詢、資產(chǎn)銷毀、資產(chǎn)信息修改、資產(chǎn)借用等相關(guān)操作。用戶是本系統(tǒng)中最大權(quán)限所有者,可以給任意員工分配權(quán)限使其成為新的用戶,用戶可以根據(jù)實(shí)際需求增加新的員工、修改員工的狀態(tài)、修改員工的相關(guān)信息,亦可根據(jù)員工唯一ID對員工進(jìn)行查詢和刪除。員工信息管理功能員工是本系統(tǒng)中的一個(gè)模塊,主要和資產(chǎn)的歸還、借出、維修等實(shí)物資產(chǎn)的流向狀態(tài)進(jìn)行綁定,使每一次對資產(chǎn)的操作都能落實(shí)到具體的人頭上,讓資產(chǎn)管理透明可查。資產(chǎn)入庫管理功能資產(chǎn)入庫功能由用戶進(jìn)行管理,用戶有權(quán)限進(jìn)行增、減、改、查操作。資產(chǎn)維護(hù)管理功能對于資產(chǎn)的管理必定涉及到資產(chǎn)的狀態(tài)如:維修、報(bào)廢、借出、正常,這些功能都是根據(jù)實(shí)際需要進(jìn)行實(shí)現(xiàn),保證了資產(chǎn)的不明流向和總體管理。打印報(bào)表針對資產(chǎn)清單進(jìn)行打印,可根據(jù)實(shí)際不同需求打印不同格式如:word、excel、pdf等系統(tǒng)最大限度地實(shí)現(xiàn)了易安裝性、易維護(hù)性和易操作性本系統(tǒng)以tomcat為服務(wù)器,搭建服務(wù)器小而輕便,安裝簡單。用戶可根據(jù)不同的需求自行對資產(chǎn)進(jìn)行維護(hù),并且不必經(jīng)過專門的培訓(xùn)即可掌握本系統(tǒng)的使用,實(shí)現(xiàn)了簡單易懂方便維護(hù)等特性。系統(tǒng)運(yùn)行穩(wěn)定、安全可靠系統(tǒng)經(jīng)過嚴(yán)格的測試并實(shí)際運(yùn)行無誤,可以安全穩(wěn)定上線運(yùn)行;根據(jù)權(quán)限攔截器防止越過登陸對本系統(tǒng)進(jìn)行操作,所以安全可靠,能保證正常的工作運(yùn)轉(zhuǎn)。系統(tǒng)登陸用戶登錄模塊是用戶進(jìn)入主頁面的入口,用戶可根據(jù)自己的用戶名和密碼進(jìn)行登錄,若不符則給予相應(yīng)提示,重置按鈕可將當(dāng)前所填的信息清空,登陸頁面如圖4-2所示。圖4-2用戶登錄系統(tǒng)登陸是固定資產(chǎn)管理系統(tǒng)中最先使用的功能,因?yàn)橛脩舻顷懺跀?shù)據(jù)庫中使用的是用戶表,人員表中有一個(gè)competence字段,是來標(biāo)識用戶權(quán)限的。在登陸時(shí)要根據(jù)數(shù)據(jù)庫的這個(gè)字段來判斷此用戶是否具有管理員的權(quán)限。在網(wǎng)頁里添寫用戶名和密碼和驗(yàn)證碼后點(diǎn)擊【確定】按鈕,網(wǎng)頁通過action="login"進(jìn)Struts配置文件中,代碼如下:<html:formmethod="post"action="login">這個(gè)html:form與loginForm相綁定,在struts配置文件中的代碼如下:<form-beans><form-beanname="loginForm"type="com.jdy.gdzc.web.struts.form.LoginForm"/><form-beans><actionpath="/login"scope="request"name="loginForm" type="org.springframework.web.struts.DelegatingActionProxy"><forwardname="success"path="/mainframe/framework.jsp"/><forwardname="fail"path="/index.jsp"/></action>在這個(gè)配置文件中,可以了解到如下信息:根據(jù)type="org.springframework.web.struts.DelegatingActionProxy"可以找到Spring配置文件中對應(yīng)的具體Action類是class="com.jdy.gdzc.web.struts.action.LoginAction"。根據(jù)<forwardname="success"path="/mainframe/framework.jsp"/>和<forwardname="fail"path="/index.jsp"/>可以了解,Action返回success時(shí)頁面會被轉(zhuǎn)到mainframe/framework.jsp文件,這就是登陸成功的頁面。如果當(dāng)Action返回fail時(shí),頁面會被轉(zhuǎn)到index.jsp文件,這個(gè)文件是當(dāng)用戶登陸失敗將要轉(zhuǎn)到的頁面。Struts的Action的實(shí)現(xiàn)類是這個(gè)登陸頁的核心內(nèi)容,就來看看它是怎么實(shí)現(xiàn)的吧,如下所示:importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importcom.jdy.gdzc.web.struts.form.LoginForm;publicclassLoginActionextendsBaseAction{ publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ Stringerr=""; HttpSessionsession=(HttpSession)request.getSession();//獲得圖片上的驗(yàn)證碼 StringrandCode=(String)session.getAttribute("code"); LoginFormlf=(LoginForm)form; Stringusername=lf.getUsername(); Stringpassword=lf.getPassword(); if(lf.getCheckcode().equals(randCode)){ if(assetManagerImpl.login(username,password)){ //把登錄成功的用戶名,放在cookie中 Cookiec=newCookie("username",username); c.setMaxAge(60*60*24); response.addCookie(c); //登錄成功,跳到顯示所有課程的頁面 Stringcompetence=userManaManagerIpetence(username); session.setAttribute("username",username); session.setAttribute("competence",competence); returnmapping.findForward("success"); }else{ err="用戶名或密碼錯(cuò)誤!"; } }else{ err="驗(yàn)證碼錯(cuò)誤!"; } request.setAttribute("gdzc.login.error",err); returnmapping.findForward("fail"); }}Struts的Action實(shí)現(xiàn)類的execute()方法是最先被執(zhí)行的,這個(gè)方法本身也沒有具體的事務(wù),而是根據(jù)action的參數(shù)不同執(zhí)行相應(yīng)的方法。在登陸頁里面可以找到有一個(gè)“action=login”的字樣,它的目的就是在這里做邏輯判斷。當(dāng)action=login時(shí)進(jìn)入Action中執(zhí)行execute()方法。execute()方法從LoginForm中得到用戶提交的數(shù)據(jù),然后在調(diào)用控制層中的login()方法,并將從LoginForm中得到的username,password做為參數(shù)傳給控制層,調(diào)用后會返回一個(gè)boolean型的值??刂茖釉倮^續(xù)調(diào)用DAO層,DAO層得到從上層傳進(jìn)來的username,password并進(jìn)行處理,調(diào)用后會返回一個(gè)boolean型的值并傳給上層。如果為真則將username用戶名放到session范圍中,并返回“mapping.findForward("success")”,進(jìn)入系統(tǒng)主頁;否則返回“mapping.findForward("fail")”,將錯(cuò)誤信息存到request范圍中,跳到登陸界面并提示登陸錯(cuò)誤信息:用戶名或者密碼錯(cuò)誤、驗(yàn)證碼錯(cuò)誤。需要用戶重新正確輸入才能完成登錄。接下來看一下DAO層是如何實(shí)現(xiàn)登陸:importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importcom.jdy.gdzc.dao.IUserDAO;publicclassUserDAOImplimplementsIUserDAO{ privateSessionFactorysessionFactory; publicvoidsetSessionFactory(Sess

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論