版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課題名稱基于SSH的電子商務(wù)公共服務(wù)平臺的設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)架構(gòu)與企業(yè)子系統(tǒng)隨著信息化浪潮席卷全球,傳統(tǒng)商業(yè)模式受到很大沖擊,一種新的商業(yè)模式電子商務(wù)平臺,近年來在中國逐漸興起,越來越多的企業(yè),尤其是中小企業(yè)企業(yè)開始慢慢改變公司的營銷策略模式,逐步進(jìn)軍電子商務(wù)。如何充分利用電子商務(wù)快速、便捷、靈活的特點(diǎn),為企業(yè)創(chuàng)造更多價值,使企業(yè)緊跟時代步伐,在當(dāng)今激烈的社會競爭中獲得一席之地,已成為企業(yè)面臨的重要課題。企業(yè)。系統(tǒng)設(shè)計(jì)的目的是建立一個基于SSH框架的快速、輕量級的電子商務(wù)公共服務(wù)應(yīng)用平臺,具有結(jié)構(gòu)靈活、可復(fù)用、可擴(kuò)展的特點(diǎn)。 SSH采用流行的J2EE框架,Struts2+Spring+Hibern
2、ate。該框架是基于 MVC 的擴(kuò)展。程序分為三層架構(gòu),模型層(M)、視圖層(V)和控制層(C),大大降低了程序的耦合度。使開發(fā)的程序更加靈活、健壯和高效。系統(tǒng)架構(gòu)和企業(yè)子系統(tǒng)是本文的主要目標(biāo)。構(gòu)建一個可擴(kuò)展、可復(fù)用、高效靈活的架構(gòu),建立一個功能比較完善的企業(yè),是實(shí)現(xiàn)系統(tǒng)的關(guān)鍵。本文主要討論使用SSH框架和第三方插件構(gòu)建系統(tǒng)框架和開發(fā)企業(yè),闡述自己對SSH框架的看法,提出將設(shè)計(jì)模式融入程序開發(fā)的思路。在結(jié)構(gòu)化層次結(jié)構(gòu)、明確系統(tǒng)業(yè)務(wù)模型、優(yōu)化業(yè)務(wù)模型復(fù)用性的基礎(chǔ)上,結(jié)合第三方插件設(shè)計(jì)開發(fā),簡化開發(fā)模型,降低框架復(fù)雜度,開發(fā)效率提高,框架更容易實(shí)現(xiàn),程序更完善。系統(tǒng)的可擴(kuò)展性、靈活性、可重用性和健
3、壯性可用于以更好的松耦合方式開發(fā)組件,從而使系統(tǒng)能夠適應(yīng)不斷變化的業(yè)務(wù)需求。關(guān)鍵詞SSH、MVC、第三方插件、設(shè)計(jì)模式目錄TOC o 1-3 h z u HYPERLINK l _Toc291796063 前言 PAGEREF _Toc291796063 h 6 HYPERLINK l _Toc291796064 第1章系統(tǒng)需求分析 PAGEREF _Toc291796064 h 7 HYPERLINK l _Toc291796065 1.1系統(tǒng)設(shè)計(jì)目的 PAGEREF _Toc291796065 h 7 HYPERLINK l _Toc291796066 1.2系統(tǒng)要求 PAGEREF _T
4、oc291796066 h 7 HYPERLINK l _Toc291796070 1.2.1功能要求 PAGEREF _Toc291796070 h 7 HYPERLINK l _Toc291796071 1.2.2性能要求: PAGEREF _Toc291796071 h 9 HYPERLINK l _Toc291796072 1.3用例 PAGEREF _Toc291796072 h 9 HYPERLINK l _Toc291796073 1.3.1企業(yè)管理員用例 PAGEREF _Toc291796073 h 9 HYPERLINK l _Toc291796074 1.3.2客戶用例:
5、 PAGEREF _Toc291796074 h 11 HYPERLINK l _Toc291796075 1.3.3客戶訂單用例: PAGEREF _Toc291796075 h 11 HYPERLINK l _Toc291796076 1.3.4消息用例: PAGEREF _Toc291796076 h 12 HYPERLINK l _Toc291796077 1.3.5管理員登錄時序圖: PAGEREF _Toc291796077 h 13 HYPERLINK l _Toc291796078 1.3.6客戶訂單時序圖: PAGEREF _Toc291796078 h 14 HYPERLI
6、NK l _Toc291796079 1.4運(yùn)行環(huán)境 PAGEREF _Toc291796079 h 14 HYPERLINK l _Toc291796080 1.4.1硬件環(huán)境 PAGEREF _Toc291796080 h 14 HYPERLINK l _Toc291796081 1.4.2軟件環(huán)境 PAGEREF _Toc291796081 h 15 HYPERLINK l _Toc291796082 第 2 章 系統(tǒng)設(shè)計(jì) PAGEREF _Toc291796082 h 16 HYPERLINK l _Toc291796084 2.1 MVC模式分析 PAGEREF _Toc291796
7、084 h 16 HYPERLINK l _Toc291796085 2.2SSH分析 PAGEREF _Toc291796085 h 19 HYPERLINK l _Toc291796086 2.3插件設(shè)計(jì)分析 PAGEREF _Toc291796086 h 22 HYPERLINK l _Toc291796087 2.4設(shè)計(jì)模式介紹 PAGEREF _Toc291796087 h 24 HYPERLINK l _Toc291796094 2.4.1工廠方法模式 PAGEREF _Toc291796094 h 25 HYPERLINK l _Toc291796095 2.4.2單例模式 PA
8、GEREF _Toc291796095 h 26 HYPERLINK l _Toc291796096 2.4.3享元模式 PAGEREF _Toc291796096 h 27 HYPERLINK l _Toc291796097 2.5前端分頁方式的改進(jìn) PAGEREF _Toc291796097 h 28 HYPERLINK l _Toc291796098 2.6數(shù)據(jù)庫設(shè)計(jì) PAGEREF _Toc291796098 h 29 HYPERLINK l _Toc291796108 2.6.1數(shù)據(jù)庫字典 PAGEREF _Toc291796108 h 30 HYPERLINK l _Toc2917
9、96109 2.6.2E-R圖 PAGEREF _Toc291796109 h 34 HYPERLINK l _Toc291796111 第三章 功能實(shí)現(xiàn) PAGEREF _Toc291796111 h 37 HYPERLINK l _Toc291796117 3.1企業(yè)后臺功能的實(shí)現(xiàn) PAGEREF _Toc291796117 h 38 HYPERLINK l _Toc291796120 3.1.1基本信息管理頁面 PAGEREF _Toc291796120 h 38 HYPERLINK l _Toc291796121 3.1.2后臺主要實(shí)現(xiàn)代碼 PAGEREF _Toc291796121
10、h 38 HYPERLINK l _Toc291796122 3.2企業(yè)前臺功能的實(shí)現(xiàn) PAGEREF _Toc291796122 h 41 HYPERLINK l _Toc291796124 3.2.1企業(yè)首頁 圖 PAGEREF _Toc291796124 h 41 HYPERLINK l _Toc291796125 3.2.2前臺主要實(shí)現(xiàn)代碼 PAGEREF _Toc291796125 h 41 HYPERLINK l _Toc291796126 第 4 章 測試 PAGEREF _Toc291796126 h 42 HYPERLINK l _Toc291796134 4.1性能測試 P
11、AGEREF _Toc291796134 h 43 HYPERLINK l _Toc291796140 4.1.1測試平臺環(huán)境如下: PAGEREF _Toc291796140 h 43 HYPERLINK l _Toc291796141 4.1.2基準(zhǔn)統(tǒng)計(jì) PAGEREF _Toc291796141 h 43 HYPERLINK l _Toc291796142 4.2兼容性測試 PAGEREF _Toc291796142 h 44 HYPERLINK l _Toc291796144 4.2.1測試說明: PAGEREF _Toc291796144 h 44 HYPERLINK l _Toc2
12、91796145 4.2.2測試平臺環(huán)境如下: PAGEREF _Toc291796145 h 44 HYPERLINK l _Toc291796146 4.2.3檢測結(jié)果統(tǒng)計(jì)分析: PAGEREF _Toc291796146 h 44 HYPERLINK l _Toc291796147 總結(jié) PAGEREF _Toc291796147 h 46 HYPERLINK l _Toc291796148 參考文獻(xiàn) PAGEREF _Toc291796148 h 47 HYPERLINK l _Toc291796149 附錄 PAGEREF _Toc291796149 h 48 HYPERLINK l
13、 _Toc291796150 至 PAGEREF _Toc291796150 h 51前言21世紀(jì)是信息的世界。隨著信息技術(shù)浪潮席卷全球,傳統(tǒng)商業(yè)模式受到很大沖擊。越來越多的企業(yè)和個人消費(fèi)者,在互聯(lián)網(wǎng)開放的網(wǎng)絡(luò)環(huán)境中,是一種基于瀏覽器-服務(wù)器應(yīng)用模式的新型網(wǎng)絡(luò)購物,實(shí)現(xiàn)了消費(fèi)者網(wǎng)上購物、商戶網(wǎng)上交易和網(wǎng)上電子支付。商業(yè)運(yùn)作模式電子商務(wù)應(yīng)運(yùn)而生。目前比較成功的電商平臺是國有的:當(dāng)當(dāng)網(wǎng)、阿里巴巴、淘寶、京東商城、慧聰網(wǎng)等,國外的有亞馬遜、易購等。一段時間,國內(nèi)也有很多電商平臺。通過分析中國的電商可以看出,目前中國的電商是集合型的,一個平臺的業(yè)務(wù)領(lǐng)域的方方面面似乎都是一樣的。涉及。像一些知名的網(wǎng)購平
14、臺,如:八點(diǎn)有、有樂、京東商城、易白、淘寶、拍拍、紅旗等電商,涉及的品類很多,而且他們都有一個共同特點(diǎn),就是只有產(chǎn)品展示和訂購,很少有廠家和企業(yè)介紹。目前國內(nèi)只有部分大中型企業(yè)可以使用電子商務(wù)平臺,而大部分中小型企業(yè),尤其是小企業(yè),仍然沿用以前的商業(yè)模式,依靠朋友、關(guān)系、和老客戶維護(hù)企業(yè)。這種模式在過去的時代具有一定的優(yōu)勢,但在信息網(wǎng)絡(luò)時代,這種模式缺乏主動性,往往使企業(yè)處于被動狀態(tài)。像阿里巴巴這樣的大型電商平臺可以幫助企業(yè)推廣和聯(lián)系客戶,但是阿里巴巴基本面向的是大中型企業(yè),而且每年的管理費(fèi)非常高,一些中小型企業(yè)還要承擔(dān)高額的資金困難。為了讓中小企業(yè),尤其是小企業(yè)能夠使用電子商務(wù)平臺,我們特地
15、開發(fā)了這個系統(tǒng),讓中小企業(yè)也能做到生產(chǎn)、推廣、銷售一站式。本系統(tǒng)采用SSH(Struts、Spring、Hibernate)框架進(jìn)行開發(fā)。 SSH框架是目前J2EE領(lǐng)域最流行、最成熟的一套開源框架。它基于 MVC 設(shè)計(jì)模式。在充分發(fā)揮MVC設(shè)計(jì)模式優(yōu)勢的同時,還創(chuàng)造了自己的開發(fā)特色,降低了應(yīng)用程序的耦合性,進(jìn)一步提高了應(yīng)用程序的可重用性、可移植性、靈活性、可擴(kuò)展性和應(yīng)用性能。 SSH 是一個輕量級的開發(fā)框架。與E重量級的開發(fā)框架相比,SSH繼承了它的優(yōu)勢,在相當(dāng)程度上提高了開發(fā)和執(zhí)行效率。同時,對于開發(fā)者來說,比E更易學(xué)易持,開發(fā)速度更快。目前Struts和Spring已經(jīng)發(fā)展到2.0版本,H
16、ibernate已經(jīng)發(fā)展到3.0版本。 SSH框架不斷優(yōu)化升級,運(yùn)行越來越穩(wěn)定。系統(tǒng)需求分析系統(tǒng)設(shè)計(jì)目的系統(tǒng)設(shè)計(jì)的目的是建立一個基于SSH框架的快速、輕量級的電子商務(wù)應(yīng)用平臺,具有靈活、可重用和可擴(kuò)展的結(jié)構(gòu)。我設(shè)計(jì)的系統(tǒng)框架和企業(yè)子系統(tǒng)的主要目標(biāo)是能夠根據(jù)業(yè)務(wù)需求的變化靈活地操作功能模塊,并且能夠根據(jù)業(yè)務(wù)需求的變化自由地添加、修改和刪除企業(yè)子系統(tǒng)。企業(yè)是實(shí)現(xiàn)上述目標(biāo)的關(guān)鍵。系統(tǒng)要求功能要求企業(yè)前臺功能主頁:為企業(yè)提供一個主頁,展示企業(yè)的重要信息,包括企業(yè)LOGO、企業(yè)名稱、企業(yè)聯(lián)系方式、企業(yè)部分介紹、企業(yè)新產(chǎn)品展示等。公司簡介:這部分包括公司簡介、企業(yè)文化、企業(yè)榮譽(yù)。全方位介紹公司,讓客戶通過
17、這個功能更清楚的了解公司。產(chǎn)品展示:為企業(yè)提供產(chǎn)品展示平臺,客戶可以根據(jù)產(chǎn)品類別搜索產(chǎn)品,點(diǎn)擊搜索到的產(chǎn)品進(jìn)入產(chǎn)品詳情,產(chǎn)品展示功能包括詳細(xì)的產(chǎn)品描述和從不同角度拍攝的產(chǎn)品圖片。公司相冊:為企業(yè)提供展示企業(yè)形象和活動的平臺。通過該功能,企業(yè)可以展示公司店面、工廠員工和員工活動的照片,讓企業(yè)客戶對公司有更深入的了解??蛻粝聠危涸摴δ転槠髽I(yè)客戶提供下單功能。企業(yè)客戶無需親自到公司實(shí)體店下單,方便客戶與企業(yè)之間的交易。聯(lián)系我們:展示公司的聯(lián)系方式,方便客戶與公司的溝通。寄語:搭建企業(yè)與客戶的交流平臺??蛻艨梢允褂么斯δ芰私馇闆r、詢問信息或提出建議。企業(yè)可以選擇性地回答客戶的問題。招聘:為企業(yè)提供招聘
18、平臺,企業(yè)可在其上發(fā)布招聘信息,游客瀏覽信息后可在線投遞簡歷,極大地方便了企業(yè)招聘人才。合作伙伴:為企業(yè)提供展示合作伙伴的平臺,增加企業(yè)客戶對企業(yè)的信任。企業(yè)后臺功能首頁管理:管理企業(yè)首頁信息,可動態(tài)設(shè)置首頁信息,方便企業(yè)信息自主管理。企業(yè)檔案管理:企業(yè)檔案管理包括企業(yè)檔案管理、企業(yè)文化管理、企業(yè)榮譽(yù)管理。企業(yè)可以通過后臺系統(tǒng)動態(tài)更新信息。產(chǎn)品管理:產(chǎn)品管理包括產(chǎn)品類別管理和產(chǎn)品內(nèi)容管理。企業(yè)可以隨時添加、修改或刪除產(chǎn)品。公司相冊管理:公司相冊管理包括分類管理和內(nèi)容管理。企業(yè)可以根據(jù)自己的需要編輯相冊,展示給客戶,提升企業(yè)形象。訂單管理:訂單管理包括未確認(rèn)訂單、已確認(rèn)訂單和已取消訂單。企業(yè)可以
19、通過訂單管理系統(tǒng)實(shí)時了解客戶訂單狀態(tài),保證企業(yè)在交易時與客戶進(jìn)行溝通。聯(lián)系我們管理:聯(lián)系我們頁面信息的動態(tài)更新管理。留言管理:企業(yè)可以回復(fù)留言、刪除留言、設(shè)置前臺顯示留言,方便企業(yè)獨(dú)立管理留言。管理員管理:每個企業(yè)都有一個超級管理員,可以添加、禁用、啟用和查看企業(yè)普通管理員的管理。招聘管理:企業(yè)可以自主動態(tài)發(fā)布招聘信息,回復(fù)招聘人員,查看投遞簡歷。合作伙伴管理:企業(yè)可以自主添加、修改、刪除合作伙伴。功能擴(kuò)展需求提供風(fēng)格選擇:為企業(yè)管理員提供前后端主題設(shè)置功能,管理員可根據(jù)企業(yè)要求選擇合適的風(fēng)格提供功能擴(kuò)展接口:根據(jù)企業(yè)業(yè)務(wù)需求提供功能擴(kuò)展接口功能。企業(yè)可以根據(jù)自己企業(yè)的特點(diǎn)增減某些功能模塊。提
20、供模板選擇:為企業(yè)管理員提供不同風(fēng)格的企業(yè)模板,企業(yè)可以根據(jù)自身特點(diǎn)選擇適合自己的企業(yè)模板性能要求:響應(yīng)時間和內(nèi)存使用:忽略網(wǎng)絡(luò)環(huán)境因素、主題模板和功能插件操作因素,以本地測試為準(zhǔn)。數(shù)據(jù)庫安裝響應(yīng):時間為 2 秒,最大存儲使用限制為 8 , 000 , 000字節(jié)。前端瀏覽響應(yīng)時間:0.8 秒,最大存儲使用限制為 9 , 000 , 000字節(jié)。,最大存儲使用限制為9,000,000 字節(jié)。數(shù)據(jù)庫優(yōu)化和備份:提供所有數(shù)據(jù)表的SQL語句備份和SQL語句的查詢數(shù)據(jù)備份。優(yōu)化 MySQL 數(shù)據(jù)庫的處理。數(shù)據(jù)庫每天備份。安全:后臺的接口訪問、路徑訪問、操作都由登錄會話管理和用戶權(quán)限管理控制。例子企業(yè)管
21、理員用例圖1-1 企業(yè)管理員用例一級用例圖客戶用例:圖1-2 客戶用例一級用例圖客戶訂單用例:圖 1-3 客戶訂單用例 1 級用例圖消息用例:圖 1-4 消息用例 Level 1 用例圖管理員登錄時序圖:圖1-5 管理員登錄時序圖客戶訂購時序圖:圖1-6 客戶下單時序圖操作環(huán)境硬件環(huán)境服務(wù)終端:服務(wù)器端的最低配置由建站所需的軟件決定。本網(wǎng)絡(luò)系統(tǒng)服務(wù)器端最低配置如下:處理器:Inter Pentium (Celeron) 4 2.4GHz 或更高。居?。?G硬盤空間:160G顯卡:SVGA 顯示適配器客戶:由于客戶端主要用于瀏覽和操作數(shù)據(jù),對客戶端的硬件要求不高,但目前的電腦性價比很高,所以需要
22、的配置應(yīng)該高于以下:處理器:Inter Pentium (Celeron) 4 1.6GHz 或更高。存儲:512MB硬盤空間:160GB顯卡:SVGA 顯示適配器軟件環(huán)境服務(wù)終端:操作系統(tǒng):Windows NT/2000/2003服務(wù)器:Tomcat6.x + jdk6.x數(shù)據(jù)庫管理系統(tǒng):MySQL5.x用戶終端:操作系統(tǒng):Windows NT/2000/2003/XP專業(yè)版/Windows 7系統(tǒng)設(shè)計(jì)MVC模式分析MVC 是一種分離應(yīng)用程序的邏輯層和表示層的方法。 MVC的出現(xiàn)不僅實(shí)現(xiàn)了功能模塊和顯示模塊的分離,而且提高了應(yīng)用系統(tǒng)組件的可維護(hù)性、可擴(kuò)展性、可移植性和可重用性。模型模型是應(yīng)用
23、程序的主要部分。模型代表業(yè)務(wù)數(shù)據(jù)。通常,您的模型類將包含從數(shù)據(jù)庫中獲取、插入、更新和刪除信息的功能。查看(查看)視圖是應(yīng)用程序中與用戶界面相關(guān)的部分,是用戶看到并與之交互的界面。視圖通常是網(wǎng)頁,但在CI中,視圖也可以是頁面片段,例如頁眉、頁腳??刂破骺刂破鞯墓ぷ魇强刂朴脩艚缑鏀?shù)據(jù)的顯示,并根據(jù)用戶的輸入更新模型對象的狀態(tài)。它是模型、視圖和處理請求和生成網(wǎng)頁所需的任何其他資源之間的中介。由于使用 MVC 的應(yīng)用程序的三個組件是相互對立的,更改其中一個不會影響其他兩個,因此可以基于這種設(shè)計(jì)思想構(gòu)建良好的松散耦合組件。系統(tǒng)在MVC模式的基礎(chǔ)上進(jìn)行分層。由于本系統(tǒng)開發(fā)的工具是MyEclipse,所以開
24、發(fā)工具在構(gòu)建項(xiàng)目時初步將系統(tǒng)劃分為MVC三層結(jié)構(gòu)。模型層由Models層扮演,主要用于存放實(shí)體Bean類和Hibernate映射文件。通過這一層,開發(fā)者可以很方便的管理整個項(xiàng)目下的bean,同時也可以很方便的影射Hibernate的配置文件,大大提高了開發(fā)效率,也方便了以后系統(tǒng)的維護(hù)。圖2-1 模型層本系統(tǒng)V層主要用于數(shù)據(jù)展示,本系統(tǒng)V層主要采用JSP技術(shù)。通過 JSP 技術(shù),數(shù)據(jù)可以很容易地顯示在 Web 瀏覽器上。在JSP技術(shù)的基礎(chǔ)上,改進(jìn)了html語言和java語言的分離,既達(dá)到了解耦的目的,也使得后續(xù)系統(tǒng)的維護(hù)非常方便。把流程控制放在Action層,把業(yè)務(wù)邏輯處理放在服務(wù)層,充分利用S
25、truts2技術(shù),在html頁面中使用Struts2標(biāo)簽顯示數(shù)據(jù),盡量減少在html頁面上寫java語句。產(chǎn)品編號:$product.id 提醒:如果沒有圖片,刪除會失?。?產(chǎn)品名稱:150 個字符價格:text 或者小數(shù),1 -10位C層主要用于過程和邏輯控制,也是整個系統(tǒng)的核心層。所有進(jìn)出系統(tǒng)的訪問都通過這一層控制。本系統(tǒng)對C層做了一些改進(jìn)。我們將控制層細(xì)分為Action層、服務(wù)層和Dao層。 Action層只負(fù)責(zé)流程控制,Service層只負(fù)責(zé)邏輯控制,Dao層只負(fù)責(zé)處理數(shù)據(jù),每一層負(fù)責(zé)自己的事務(wù)。在編寫代碼時為開發(fā)人員和維護(hù)人員提供了極大的清晰度。圖2-2 C圖層細(xì)分MVC模型的優(yōu)勢是
26、顯而易見的,但是在實(shí)際開發(fā)過程中,我對MVC模型的使用有一點(diǎn)看法。馬克思主義哲學(xué)告訴我們,凡事都有其局限性,MVC也不例外。 MVC不是萬能的,它不能包治百病,作為一個醫(yī)術(shù)高超的醫(yī)生應(yīng)該能對癥下藥。 MVC 強(qiáng)行將業(yè)務(wù)邏輯層與表示層分離,可以在一定程度上松耦合,但這種做法會帶來開發(fā)和運(yùn)維開銷。首先,MVC采用了多層結(jié)構(gòu),給開發(fā)帶來了困難,增加了開發(fā)時間。如果層設(shè)計(jì)的設(shè)計(jì)不好,就會降低程序運(yùn)行的效率。另外,在運(yùn)行時間上,多級結(jié)構(gòu)程序的運(yùn)行速度不如單級結(jié)構(gòu)程序。如果MVC模型使用層數(shù)過多,會降低程序運(yùn)行速度??鬃痈嬖V我們,要因材施教,所開發(fā)的也要因材施教。大炮具有大炮的威力,小型步槍具有小型步槍的
27、靈活性。這并不意味著所有系統(tǒng)都必須在 MVC 模型中開發(fā)。 MVC 模式的初衷是設(shè)計(jì)大型軟件。對于需要頻繁重用和擴(kuò)展的大型軟件是非常有利的,但是對于那些可重用性和可擴(kuò)展性不大的小型軟件,尤其是在開發(fā)時間要求比較緊的情況下,使用MVC并不是一個明智的選擇模型。SSH分析SSH,Struts+Spring+Hibernate,是典型的J2EE三層結(jié)構(gòu),分為表現(xiàn)層、中間層和數(shù)據(jù)訪問層。三層系統(tǒng)將數(shù)據(jù)表示、業(yè)務(wù)邏輯和數(shù)據(jù)訪問分開。業(yè)務(wù)邏輯、數(shù)據(jù)訪問、權(quán)限攔截和合法性驗(yàn)證都在中間層處理??蛻舳瞬恢苯优c數(shù)據(jù)庫交互,而是通過組件與中間層建立連接,然后中間層與數(shù)據(jù)庫打交道。表示層主要使用JSP+Struts,
28、當(dāng)然也使用Struts+Freemarker或者其他的組合。目前,使用 JSP 作為表示層仍然是主流。自JSP問世以來,其穩(wěn)定性有了很大的提高。大多數(shù)開發(fā)人員都同意。 Struts 也可以用于表示層。事實(shí)上,它使用它的標(biāo)簽。 Struts 強(qiáng)大的標(biāo)簽庫為我們提供了一個很好的數(shù)據(jù)表達(dá)平臺。通過Struts標(biāo)簽,我們可以很好的表達(dá)處理后的數(shù)據(jù)。中間層又細(xì)分為控制層和業(yè)務(wù)邏輯層。控制層主要控制整個系統(tǒng)的訪問過程,而業(yè)務(wù)邏輯層主要控制業(yè)務(wù)??刂茖又饕蒘truts來充當(dāng),我們在MVC中通常稱之為C。它充當(dāng)表示層和數(shù)據(jù)層之間的中間媒介。它主要處理表示層和數(shù)據(jù)層之間的數(shù)據(jù)交換。當(dāng)然,像權(quán)限控制和數(shù)據(jù)校驗(yàn)一
29、樣,我們也會放在這一層。業(yè)務(wù)邏輯層主要由Service控制,Service主要封裝業(yè)務(wù)邏輯,負(fù)責(zé)封裝較低的DAO層。數(shù)據(jù)訪問層主要由Hibernate擔(dān)當(dāng),主要包括DAO層和PO層。 DAO層封裝了數(shù)據(jù)庫的增刪改查等操作,而PO層主要是實(shí)體對象的映射。 Hibernate 提供了一種面向?qū)ο蟮牟僮鞣椒?,使開發(fā)者可以使用面向?qū)ο蟮乃枷雭聿僮鲾?shù)據(jù)庫。面對一些高度分層的數(shù)據(jù),使用Hibernate是一個不錯的選擇,它可以很方便的查出表之間的關(guān)系,徹底免去了以往使用jdbc時寫SQL語句的繁瑣。而且Hibernate還提供了很多關(guān)聯(lián)和簽出的方法,大大提高了程序運(yùn)行的效率。Spring貫穿整個中間層和數(shù)
30、據(jù)訪問層,對Struts和Hibernate進(jìn)行了封裝和管理。無縫集成Web層、Service層、DAO層和PO。 Spring提供的IOC和AOP可以很好的解決JS22的一些老問題。 IOC(Inversion of Control)的使用大大提高了對象的生成,提高了系統(tǒng)的存儲利用率。你不用找我,你需要的時候我會來找你,這就是Spring IO C的核心。AOP提供了一種新的編程模型,切面編程。與以往的垂直編程相比,切面編程對于開發(fā)者來說無疑是一種新的開發(fā)思路。它可以分離關(guān)注點(diǎn),可以將橫切關(guān)注點(diǎn)嵌入到面向?qū)ο蟮能浖到y(tǒng)中,解決權(quán)限控制、日志注冊、操作記錄等問題。系統(tǒng)框架主要采用SSH框架,S
31、truts主要用于控制整個系統(tǒng)進(jìn)程。它由三部分組成,核心控制器FilterDispatcher、業(yè)務(wù)控制器和用戶實(shí)現(xiàn)的業(yè)務(wù)邏輯組件。本系統(tǒng)使用的核心控制器為2.1.8版本(如圖 3-4 所示)??刂破髯鳛檫^濾器運(yùn)行在 Web 應(yīng)用程序中,負(fù)責(zé)攔截所有用戶請求。當(dāng)用戶請求到達(dá)時,F(xiàn)ilter 會對用戶請求進(jìn)行過濾。如果用戶請求以一個動作結(jié)束,該請求將被轉(zhuǎn)移到 Struts 2 框架進(jìn)行處理。 Struts 2 框架得到*.action 請求后,會根據(jù)*.action 請求的前面部分來決定調(diào)用哪個業(yè)務(wù)邏輯組件。例如,對于 login.action 請求,Struts 2 調(diào)用名為 login 的
32、Action 來處理該請求。 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 *.action struts2 *。 jsp Interceptor 也是本系統(tǒng)用到的一個重要的 Struts2 組件功能,它提供了一個事件攔截方法,可以讓你攔截某些動作。例如,系統(tǒng)對所有后臺操作都有檢查是否登錄的功能,如果沒有登錄則攔截其操作。公共字符串?dāng)r截(ActionInvocation ai)拋出異常映射會話=ai.getInvocationContext().getSession()
33、;if (session.get(manager)!= null )返回ai.invoke();其他ActionContext ac=ai.getInvocationContext();ac.put(tips, 您還沒有登錄,請登錄!);返回Action.LOGIN ; _在這個系統(tǒng)中,Hibernate主要封裝了數(shù)據(jù)庫的操作。系統(tǒng)數(shù)據(jù)庫包采用外設(shè)形式。將連接數(shù)據(jù)庫的所有信息寫入外設(shè)的一個文件中,然后使用Hibernate提供的讀取外設(shè)的功能來讀取文件內(nèi)容。這種方式的好處是可以靈活配置數(shù)據(jù)庫,可以切換不同的數(shù)據(jù)??紤]到以后有可能升級數(shù)據(jù)庫,這種做法非常好。在這個系統(tǒng)中,Spring主要封裝了S
34、truts和Hibernate,連接了兩個框架,使用IOC注入調(diào)用對象,隨時管理Struts和Hibernate對象,并自動提交給Struts或Hibernate。本系統(tǒng)對 Spring 做了一個小調(diào)整,即所有的執(zhí)行操作都放在了 Spring 的統(tǒng)一管理之下。以前有人集成SSH的時候,Struts的一些操作并沒有集成到Spring中。我們這次的集成是將所有操作統(tǒng)一到Spring中。毋庸置疑,SSH 框架功能強(qiáng)大,但它并不是萬能的,也不是所有的開發(fā)都需要使用這個框架。 SSH框架更適用于業(yè)務(wù)邏輯需求變化較大,數(shù)據(jù)表關(guān)聯(lián)較多,但數(shù)據(jù)簽出不復(fù)雜的系統(tǒng)??紤]到未來可能對數(shù)據(jù)庫進(jìn)行改造或升級,數(shù)據(jù)的檢出
35、并不頻繁。與model1和model2相比,SSH是一個繁瑣的框架,開發(fā)效率不如model1和model2。 SSH框架采用了很多層,執(zhí)行效率不是model1和model2可比的。在數(shù)據(jù)訪問方面,Hibernate 以對象的形式訪問數(shù)據(jù)庫。與jdbcd相比,它的效率相對較低,而Hibernate涉及到的數(shù)據(jù)較多。如果配置控制不好,就會出現(xiàn)很多冗余。如果數(shù)據(jù)被檢出,會增加服務(wù)器存儲的負(fù)擔(dān),降低運(yùn)行效率。受HQL語言的限制,Hibernate對于一些復(fù)雜的結(jié)賬比較麻煩。在這方面,它遠(yuǎn)不如jdbc方便。開發(fā)者學(xué)好 SSH 并不容易。學(xué)習(xí)和學(xué)習(xí)需要一些時間。與model1和model2相比,SSH需要
36、相當(dāng)長的時間來學(xué)習(xí)才能得到很好的支持。插件設(shè)計(jì)分析應(yīng)用程序框架應(yīng)用程序框架插件接口配置文件插件2插件3插件n插件1圖 2-3 插件設(shè)計(jì)分析插件設(shè)計(jì)比許多設(shè)計(jì)模式更簡單、更靈活、更易于理解和操作。減輕了開發(fā)者的諸多程序和開發(fā)負(fù)擔(dān),使開發(fā)者能夠利用已有的插件很好地完成目標(biāo)功能。各種基于插件的架構(gòu)各有特點(diǎn),但從整體架構(gòu)來看,它們的模型略有不同?;诓寮_發(fā)的應(yīng)用程序由系統(tǒng)框架、插件接口、配置文件和插件四部分組成。通過插件接口,系統(tǒng)框架可以非常靈活的使用外部插件,這也非常符合24設(shè)計(jì)模式中的接口分離原則。應(yīng)用框架它只負(fù)責(zé)整個程序流程的調(diào)節(jié),可以在程序中嵌入插件接口,但不知道插件的實(shí)際實(shí)現(xiàn),只負(fù)責(zé)接口的
37、訪問。插件接口外部插件的入口,是一個協(xié)議,與程序框架的關(guān)聯(lián)點(diǎn),外部插件通過這個入口訪問程序框架,它只負(fù)責(zé)兩者的整合。至于具體的實(shí)現(xiàn),就交給具體的插件了,插件只負(fù)責(zé)訪問,不負(fù)責(zé)具體的實(shí)現(xiàn)。配置文件接口配置文件,通過配置指定調(diào)用哪個接口特定插件具體插件負(fù)責(zé)實(shí)際功能操作和具體實(shí)現(xiàn),通過配置文件的配置調(diào)用。一般具體插件遵循單一功能,也就是說分頁插件只需要分頁,編輯插件只需要編輯。本系統(tǒng)使用的插件包括FCKEditor、Display-tag、Struts2標(biāo)簽庫、JQuery。由于 SSH 的開源特性,在這個系統(tǒng)中引入外部插件非常方便。配置好插件文件后,可以在需要引用的地方配置配置名,非常方便開發(fā)者開
38、發(fā)。FCKEditor 非常方便文章編輯和圖片編輯。它集成了很多編輯功能和方法,提供了豐富的字體和段落格式選擇,還可以添加表情等,功能極其豐富。開發(fā)者只需要在開發(fā)過程中引入相應(yīng)的模塊即可。 Display-tag 插件對于后臺分頁非常方便。提供分頁、打印、導(dǎo)出、排序等功能,非常方便管理數(shù)據(jù)的管理。有了它,開發(fā)者就不必花費(fèi)大部分時間來編寫類似上述功能的代碼,并且可以節(jié)省更多的時間來組織業(yè)務(wù)邏輯,大大提高了開發(fā)效率和開發(fā)時間。介紹設(shè)計(jì)模式模式其實(shí)是前人總結(jié)的一些經(jīng)驗(yàn)。如果遵循一定的規(guī)則,開發(fā)者會少走很多彎路。在 JAVA 世界里,有一套經(jīng)典的設(shè)計(jì)模式,GOF 的 23 種設(shè)計(jì)模式,讓開發(fā)者可以創(chuàng)造
39、出許多優(yōu)秀的程序。設(shè)計(jì)模式不僅是一門技術(shù),更是一門藝術(shù)。使用設(shè)計(jì)模式開發(fā)軟件會有很多意想不到的效果。本系統(tǒng)引入的設(shè)計(jì)模式如下:工廠方法模式本系統(tǒng)的數(shù)據(jù)操作采用工廠方法模式。首先定義一個數(shù)據(jù)連接接口,然后定義一個數(shù)據(jù)實(shí)現(xiàn)類,最后定義一個數(shù)據(jù)連接工廠,返回?cái)?shù)據(jù)庫連接。圖2-4 設(shè)計(jì)模式介紹數(shù)據(jù)庫連接層次圖接口公共接口 IDBConnection public int getRowCount(String strSql) 拋出 SQLException;public ResultSet getRs(String sql) 拋出 SQLException,異常;public int insert(St
40、ring sql) 拋出 SQLException;public int update(String sql) 拋出 SQLException;public int delete(String sql) 拋出 SQLException;實(shí)現(xiàn)類公共類 DBConnection 實(shí)現(xiàn) IDBConnection 公共同步 int getRowCount(String strSql) int intCount=0; 嘗試 stmt = (PreparedStatement) getStmtread(select count(*) from +strSql); rs = stmt.executeQue
41、ry(); 如果(rs.next() intCount = rs.getInt(1); 別的 整數(shù) = 0; catch(異常 e) 整數(shù) = -1; System.err.println(e.getMessage(); e.printStackTrace(); 最后 關(guān)(); 返回整數(shù);工廠方法模式可用于批量生產(chǎn)對象,也符合單一職責(zé)功能。一家工廠只生產(chǎn)一種產(chǎn)品,符合開閉原則。它對擴(kuò)展開放,對修改關(guān)閉。如果以后數(shù)據(jù)庫操作功能需要增加功能,可以很方便。在不修改原始代碼的情況下添加功能。單例模式系統(tǒng)數(shù)據(jù)連接采用單例模式。使用單例模式的好處是保證整個系統(tǒng)中只存在一個實(shí)例。由于數(shù)據(jù)連接都是通用的,保證
42、一個共享連接就足夠了,大大節(jié)省了系統(tǒng)存儲空間,提高了系統(tǒng)的運(yùn)行效率。公共類 DBFactory 私有靜態(tài) IDBConnection 數(shù)據(jù)庫連接;私人數(shù)據(jù)庫工廠()SuppressWarnings(“未使用”)/* 生成唯一的數(shù)據(jù)庫操作實(shí)例*/公共靜態(tài)同步 IDBConnection getBDConnection()如果(數(shù)據(jù)庫連接 = 空)dbconnection = 新的 DBConnection();/System.out.println(生成數(shù)據(jù)庫操作實(shí)例!);返回?cái)?shù)據(jù)庫連接;蠅量級模式Flyweight 模式避免了大量非常相似的類的開銷。在編程中,有時需要生成大量細(xì)粒度的實(shí)例來表示
43、數(shù)據(jù)。如果你能發(fā)現(xiàn)這些實(shí)例除了幾個參數(shù)外基本相同,你有時可以大幅度減少需要實(shí)例化的類的數(shù)量。如果您可以將這些參數(shù)移出類實(shí)例并在調(diào)用方法時將它們傳入,您可以通過共享大大減少單個實(shí)例的數(shù)量。在這個系統(tǒng)中,我們需要生成大量的企業(yè),但是這些企業(yè)的功能框架是一樣的,只是具體的參數(shù)不同,這和享元模型非常吻合。我們做好企業(yè)的享元類,當(dāng)需要生成不同的企業(yè)時,我們會傳入具體的參數(shù),從而達(dá)到共享的目的。圖2-5 設(shè)計(jì)模式介紹享元模式圖只需調(diào)用上述共享享元頁面,就可以生成無數(shù)公司。通過傳入不同的參數(shù),可以區(qū)分屬于哪個公司。頭版分頁方式改進(jìn)目前java世界的分頁方式有很多種,針對不同的目的使用的分頁方式也不同,使用的
44、分頁原理也不同。有的分頁方式是一次性查詢所有數(shù)據(jù),然后根據(jù)當(dāng)前的ID號確定顯示哪一頁。這種方法可以實(shí)現(xiàn)數(shù)據(jù)分頁,但是每次取數(shù)據(jù)都要查詢所有的數(shù)據(jù)。出來,這樣做不利于提高查詢速度。有的分頁方式是根據(jù)當(dāng)前頁面的首尾ID號來確定上一頁和下一頁的內(nèi)容。每次點(diǎn)擊上一頁或者下一頁,都會去數(shù)據(jù)庫查詢對應(yīng)的數(shù)據(jù)。這種方式提高了查詢的速度,但是每次查詢都要訪問數(shù)據(jù)庫,增加了數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān),運(yùn)行效率不高。系統(tǒng)前面使用的分頁方式的原理是,第一次查詢時,所有要查詢的數(shù)據(jù)都從數(shù)據(jù)庫中查詢出來,然后將數(shù)據(jù)緩存在一個session中。這種方式的好處是,只訪問一次數(shù)據(jù)庫,減輕了數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān),將數(shù)據(jù)緩存在本地,每次查
45、詢都比直接訪問數(shù)據(jù)庫要快得多。使用這種分頁方式,不僅減少了對數(shù)據(jù)庫的訪問,還提高了數(shù)據(jù)查詢速度,可謂一石二鳥。/* 獲取公司信息*/公共無效返回公司信息()/*使用session緩存,第一次加載數(shù)據(jù)時將數(shù)據(jù)放入session中,以后每次訪問相同頁面時都會從session緩存中取出數(shù)據(jù),以減少對數(shù)據(jù)的訪問數(shù)據(jù)庫,減少數(shù)據(jù)庫的負(fù)載壓力。*/companyInfo = ServletActionContext.getRequest().getSession().getAttribute(companyInfo)=null?null:(CompanyInfoBean)ServletActionCont
46、ext.getRequest().getSession().getAttribute(companyInfo);如果(公司信息 = 空)companyInfoService = new CompanyInfoServiceImpl();嘗試 companyInfo = companyInfoService.getOneCompanyInfo(1);ServletActionContext.getRequest().getSession().setAttribute(companyInfo, companyInfo);/System.out.println(第一次訪問!); 捕捉(SQLExce
47、ption e)/ TODO 自動生成的 catch 塊e.printStackTrace();數(shù)據(jù)庫設(shè)計(jì)本系統(tǒng)使用的數(shù)據(jù)庫為Mysql5.0,本系統(tǒng)中與數(shù)據(jù)庫相關(guān)的所有開發(fā)均遵循Mysql5.0數(shù)據(jù)庫開發(fā)原則。系統(tǒng)數(shù)據(jù)庫開發(fā)定義術(shù)語如下:*:主鍵符號;PK:主鍵縮寫;+:外來關(guān)鍵字符號;FK:外來關(guān)鍵字縮寫;&:復(fù)合關(guān)鍵字符號;CPK:復(fù)合關(guān)鍵字縮寫; UNIQUE :唯一索引;每個數(shù)據(jù)表的說明表 2 SEQ 表格 * ARABIC s 11數(shù)據(jù)庫表說明數(shù)據(jù)表描述相關(guān)領(lǐng)域VIP_client企業(yè)客戶信息表行政人員COMPANY_CATEGORY公司類型表行政人員COMPANY_CULTURE
48、企業(yè)文化表行政人員公司_榮譽(yù)公司榮譽(yù)表行政人員產(chǎn)品分類產(chǎn)品類別表行政人員產(chǎn)品產(chǎn)品表行政人員COMPANY_PUCTURE公司相冊行政人員ORDER_ONE訂單游客ORDER_TWO訂購兩個表格游客ENTERPRISE_MANAGER管理員表行政人員LEAVE_MESSAGES留言表游客數(shù)據(jù)庫字典表2-2 企業(yè)文化表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能說明IDINT是的不自動遞增*編號CLIENT_ID _INT不FK(VIPCLIENT ID)企業(yè)身份證號內(nèi)容文本內(nèi)容表2-3 公司榮譽(yù)表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能說明IDINT是的不自動遞增*編號CLIENT_ID
49、INT不FK(VIPCLIENT ID)企業(yè)身份證號內(nèi)容文本內(nèi)容表 2-4 產(chǎn)品類別表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能說明IDINT是的不自動遞增*編號CLIENT_IDINT不FK(VIPCLIENT ID)企業(yè)號類別VARCHAR50不類別表 2-5 產(chǎn)品表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能說明IDINT是的不自動遞增*編號CLIENT_IDINT不FK(VIPCLIENT ID)企業(yè)號CATEGORY_IDINT不FK(PRODUCT_CATGOORY ID)產(chǎn)品分類COMPANY_CATEGORY_IDINT不FK( COMPANY_CATEGORY ID)公
50、司類型姓名VARCHAR50不產(chǎn)品名稱類型VARCHAR50不適當(dāng)?shù)念愋蛢r格雙倍的不單價MIN_BUYINT不最低批發(fā)數(shù)量描述VARCHAR1000闡明PICTURE_PATHVARCHAR500不圖像路徑更多圖片VARCHAR1000更多圖片狀態(tài)VARCHAR1不00=不顯示,1=顯示是否顯示在平臺首頁表2-6 公司相冊表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能說明IDINT是的不自動遞增*編號CLIENT_IDINT不FK(VIPCLIENT ID)企業(yè)號小路VARCHAR500不照片路徑描述VARCHAR50描述表2-7 訂單一表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能說明I
51、DINT是的不自動遞增編號CLIENT_IDINT不FK(VIPCLIENT ID)企業(yè)號訂單號VARCHAR50不獨(dú)特的訂單號姓名VARCHAR50不電話VARCHAR20不電話VARCHAR20不手機(jī)電子郵件VARCHAR50不電子郵件地址VARCHAR100不地址VARCHAR15FINISH_TIMEVARCHAR100完成時間留言VARCHAR50闡明HANDLE_PEOPLE_IDINTFK 經(jīng)理 ID處理程序HANDLE_TIME約會時間處理時間狀態(tài)VARCHAR1不00= 未處理 , 1=訂單確認(rèn), 2=訂單取消狀態(tài)表2-8 二階表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能
52、說明IDINT是的不自動遞增編號CLIENT_IDINT不FK(VIPCLIENT ID)企業(yè)號訂單號VARCHAR50不FK ORDER_ONE (ORDERID)訂單號PRODUCT_IDINT不福康產(chǎn)品產(chǎn)品編號價格雙倍的不價格數(shù)量INT不數(shù)量和雙倍的不小計(jì)時間數(shù)據(jù)時間不時間CATEGORY_ID _INT不FK( PRODUCT_CATEGORY ID)類別表2-9 管理員表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能說明IDINT是的不自動遞增編號CLIENT_IDINT不FK(VIPCLIENT ID)企業(yè)號電子郵件VARCHAR50不電子郵件密碼VARCHAR50不密碼ISSUP
53、ER_MANAGERVARCHAR1不0是不是超級管理員地位VARCHAR111=啟用 0=禁用狀態(tài)表2-10 消息表單說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空默認(rèn)值約束功能說明IDINT是的不自動遞增編號CLIENT_IDINT不FK(VIPCLIENT ID)企業(yè)號內(nèi)容VARCHAR500不留言內(nèi)容人們VARCHAR50不發(fā)件人時間約會時間不留言時間HANDLE_PEOPLE_IDINTFK ( ENTERPRISE_MANAGER ID)處理器HANDLE_TIME約會時間處理時間地位VARCHAR100=未處理 1=通過 2=未通過狀態(tài)表2-11 企業(yè)客戶信息表說明列名數(shù)據(jù)類型長度主鍵無內(nèi)容空
54、默認(rèn)值約束功能說明IDINT11是的不自動遞增*編號電子郵件VARCHAR50不電子郵件公司名稱VARCHAR50不公司名稱行業(yè)VARCHAR50不行業(yè)規(guī)模VARCHAR50不公司規(guī)模登錄時間VARCHAR50不報(bào)名時間LOGONCOST雙倍的0注冊資本地區(qū)VARCHAR50不所屬區(qū)地址VARCHAR200不公司地址連線人VARCHAR50不接觸電話VARCHAR12不手機(jī)電話VARCHAR20使固定VARCHAR20VARCHAR50微信VARCHAR50微信郵政VARCHAR10郵政編碼公司財(cái)產(chǎn)VARCHAR50公司類型公司簡介文本0公司簡介圖片VARCHAR50公司標(biāo)志COMPANY_C
55、ATEGORY_IDINT不FK(公司_類別 ID)企業(yè)類型被推薦VARCHAR100=不推薦,1=推薦是推薦的公司嗎地位VARCHAR1不 0= 未處理; 1= 好的; 2狀態(tài)ER圖下訂下訂處理1nn1客戶ID訂單ID管理員ID客戶訂單管理員圖STYLEREF 1 s2-6客戶-訂單-管理員 ER 圖訂單訂單客戶擁有n1客戶ID訂單ID圖STYLEREF 1 s2 7 客戶訂單 ER 圖留言留言客戶擁有n1客戶ID留言ID圖STYLEREF 1 s2-8客戶-消息 ER 圖留言留言管理員管理n1管理員ID留言ID圖STYLEREF 1 s2 9 管理員-消息ER圖訂單訂單管理員管理n1管理員
56、ID訂單ID圖STYLEREF 1 s2-10 Admin-Order ER 圖功能實(shí)現(xiàn)本系統(tǒng)的功能包括前臺功能和后臺功能。前臺功能主要是與企業(yè)客戶交互,后臺功能主要是企業(yè)管理員操作。前端功能包括:首頁、公司簡介、產(chǎn)品展示、公司相冊、客戶訂單、聯(lián)系我們、留言、招聘、合作伙伴。后臺功能包括:首頁管理、公司簡介管理、產(chǎn)品管理、公司相冊管理、訂單管理、聯(lián)系我們管理、留言管理、管理員管理、招聘管理、合作伙伴管理。后臺后臺首頁管理企業(yè)簡介管理合作伙伴管理訂單管理留言管理聯(lián)系方式管理公司相冊管理管理員管理招聘管理產(chǎn)品管理圖3-1 后臺功能架構(gòu)圖前臺前臺首頁企業(yè)簡介合作伙伴我的訂單留言聯(lián)系我們公司相冊招聘產(chǎn)
57、品展示圖3-2 前端功能架構(gòu)圖企業(yè)后臺功能實(shí)現(xiàn)基本信息管理頁面圖3-3 基本信息管理頁面企業(yè)管理員列表后臺主要實(shí)現(xiàn)代碼/* 企業(yè)產(chǎn)品*/公共類ProductSAction擴(kuò)展ActionSupport /* 返回所有產(chǎn)品*返回*/公共字符串 getAllProductsList()productsList=productService.getAllProduct();返回“成功”;/* 添加產(chǎn)品頁面*返回*/公共字符串 connectAddProduct()productCategoryList = productService.getAllProductCategorys();返回“成功”;
58、/* 獲取絕對路徑*參數(shù)路徑*返回*/公共字符串getRealPath(字符串路徑)返回ServletActionContext.getRequest()。 getRealPath (路徑) ;/* 生成圖片相對路徑*參數(shù)文件名*返回*/publicstatic String generatePath(String fileName)日歷 c=Calendar.getInstance ( );SimpleDateFormat sf= new SimpleDateFormat(yyyyMMddHHmmss);字符串時間=sf.format(c.getTime();隨機(jī) r=新隨機(jī)();Strin
59、g fileNames=fileName.split(.);字符串路徑=time+r.nextInt(10)+r.nextInt(10)+r.nextInt(10)+r.nextInt(10)+.+fileNames1;返回路徑;/* 添加產(chǎn)品*返回*/公共字符串 addProduct()字符串圖片路徑 = generatePath (getPictureFileName();String fullpath=getRealPath(/images/users/enterprise)+/+picturePath;EnterpriseManagerBean emb = (EnterpriseMan
60、agerBean) ServletActionContext。 getRequest ().getSession().getAttribute(enterpriseManager);if (getPictureFileName()!= null )如果(噓)試試FileOutputStream fos = new FileOutputStream(fullpath);FileInputStream fis = new FileInputStream(getPicture();字節(jié) b=新字節(jié)1024;國際長度 = 0;而(len = fis.read(b)0)fos.write(b,0,len
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度船舶租賃與買賣一體化服務(wù)合同4篇
- 二零二五版環(huán)保技術(shù)研發(fā)中心項(xiàng)目勞務(wù)派遣協(xié)議范本3篇
- 2025年度政府公務(wù)車輛無償調(diào)撥合同示例4篇
- 二零二五版水利設(shè)施施工勞務(wù)分包合作協(xié)議3篇
- 《平面廣告設(shè)計(jì)宣傳》課件
- 2025年新能源汽車銷售與充電設(shè)施建設(shè)合同3篇
- 二零二五版互聯(lián)網(wǎng)數(shù)據(jù)中心(IDC)租賃合同3篇
- 二零二五版汽車行業(yè)價格保密協(xié)議范本3篇
- 2025年新型節(jié)能環(huán)保裝修工程合同范本4篇
- 2025年度代收款業(yè)務(wù)合作協(xié)議書(金融專版)4篇
- 細(xì)胞庫建設(shè)與標(biāo)準(zhǔn)制定-洞察分析
- 2024年國家公務(wù)員錄用考試公共基礎(chǔ)知識復(fù)習(xí)題庫2500題及答案
- DB3309T 98-2023 登步黃金瓜生產(chǎn)技術(shù)規(guī)程
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院單招職業(yè)技能測試題庫標(biāo)準(zhǔn)卷
- DBJ41-T 108-2011 鋼絲網(wǎng)架水泥膨脹珍珠巖夾芯板隔墻應(yīng)用技術(shù)規(guī)程
- 2025年學(xué)長引領(lǐng)的讀書會定期活動合同
- 表內(nèi)乘除法口算l練習(xí)題1200道a4打印
- 《EICC培訓(xùn)講義》課件
- 2025年四川省政府直屬事業(yè)單位招聘管理單位筆試遴選500模擬題附帶答案詳解
- 2024年物業(yè)公司服務(wù)質(zhì)量保證合同條款
- 文言文閱讀之理解實(shí)詞含義(講義)-2025年中考語文專項(xiàng)復(fù)習(xí)
評論
0/150
提交評論