




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 HYPERLINK / 摘要在校園、機(jī)關(guān)或企業(yè)里,由于各種調(diào)查研究的需要,經(jīng)常會(huì)有各種各樣的調(diào)查問(wèn)卷,在傳統(tǒng)模式下,人們不但要花費(fèi)許多的費(fèi)用印刷問(wèn)卷,而且還要消耗大量時(shí)刻和精力發(fā)放問(wèn)卷,回收問(wèn)卷,統(tǒng)計(jì)問(wèn)卷,同時(shí)問(wèn)卷可控性差,容易產(chǎn)生漏卷,廢卷等問(wèn)題。本系統(tǒng)建立在信息技術(shù)基礎(chǔ)上,構(gòu)建一個(gè)在線的問(wèn)卷設(shè)計(jì)、分發(fā)、調(diào)查、回收、統(tǒng)計(jì)的系統(tǒng),差不多解決傳統(tǒng)問(wèn)卷的上訴老大難問(wèn)題。本文首先對(duì)J2EE體系架構(gòu)作了簡(jiǎn)要介紹;然后討論了設(shè)計(jì)模式在面向?qū)ο筌浖_發(fā)過(guò)程中的重要作用,闡述了在J2EE平臺(tái)下開發(fā)應(yīng)用程序的一些常用的設(shè)計(jì)模式,以及如何使用這些設(shè)計(jì)模式來(lái)對(duì)一個(gè)問(wèn)卷調(diào)查系統(tǒng)項(xiàng)目進(jìn)行設(shè)計(jì);接著討論了應(yīng)用程序框架
2、的概念以及使用應(yīng)用程序框架開發(fā)業(yè)務(wù)應(yīng)用程序所帶來(lái)的優(yōu)勢(shì),最后研究和設(shè)計(jì)了一個(gè)建立在J2EE平臺(tái)上的通用框架。從而建立了一個(gè)能夠快速開發(fā)業(yè)務(wù)應(yīng)用程序的開發(fā)環(huán)境。關(guān)鍵詞:J2EE體系結(jié)構(gòu),問(wèn)卷調(diào)查,設(shè)計(jì)模式,通用框架 AbstractOn campus, authorities or enterprises in China, due to a variety of research needs, often have a variety of questionnaires, the traditional model, people not only have to spend a lot of
3、 the cost of printing the questionnaires, but also spend a lot of time and Issued on the questionnaire, the recovery of the questionnaire, statistical survey, questionnaires and control poor, prone to leakage volume, the volume of waste. The system built on the basis of information technology, to bu
4、ild an online questionnaire design, distribution, investigation, recovery, statistical systems, the traditional solution to the basic appeal of the questionnaire chronic problem.The paper introduces J2EE architecture firstly,and then,the importance of design patterns and the advantage of developing
5、object-oriented application using design patterns are discussed.With following,some important design patterns used on J2EE architecture are described,and the way how to use these design patterns to design an enterprise management information system is introduced. Finally,the paper make a research an
6、d a design of a common framework established on J2EE platform. Keywords:J2EE,questionnaire,common framework,survey目 錄 TOC o 1-3 h z u HYPERLINK l _Toc227598016 一、 緒論 PAGEREF _Toc227598016 h 7 HYPERLINK l _Toc227598017 (一)、引言 PAGEREF _Toc227598017 h 7 HYPERLINK l _Toc227598018 (二)、項(xiàng)目介紹 PAGEREF _Toc22
7、7598018 h 7 HYPERLINK l _Toc227598019 二、J2EE簡(jiǎn)介 PAGEREF _Toc227598019 h 7 HYPERLINK l _Toc227598020 (一)、J2EE概述 PAGEREF _Toc227598020 h 7 HYPERLINK l _Toc227598021 (二)、J2EE的優(yōu)勢(shì) PAGEREF _Toc227598021 h 8 HYPERLINK l _Toc227598022 三、 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc227598022 h 10 HYPERLINK l _Toc227598023 (一)、使用設(shè)計(jì)模
8、式進(jìn)行系統(tǒng)設(shè)計(jì) PAGEREF _Toc227598023 h 10 HYPERLINK l _Toc227598024 (二)、系統(tǒng)總體設(shè)計(jì) PAGEREF _Toc227598024 h 10 HYPERLINK l _Toc227598025 1、 MVC模式 PAGEREF _Toc227598025 h 10 HYPERLINK l _Toc227598026 2、系統(tǒng)總體結(jié)構(gòu) PAGEREF _Toc227598026 h 11 HYPERLINK l _Toc227598027 (三)、持久層設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc227598027 h 12 HYPERLINK l
9、 _Toc227598028 (四)、 業(yè)務(wù)邏輯層的設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc227598028 h 20 HYPERLINK l _Toc227598029 (五)、 前端WEB層設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc227598029 h 21 HYPERLINK l _Toc227598030 四、重難點(diǎn)問(wèn)題解決方案研究 PAGEREF _Toc227598030 h 25 HYPERLINK l _Toc227598031 (一)、如何實(shí)現(xiàn)用戶答卷時(shí)題目動(dòng)態(tài)截?cái)嗪吞D(zhuǎn) PAGEREF _Toc227598031 h 25 HYPERLINK l _Toc227598032 (二
10、)、如何實(shí)現(xiàn)存取單張答卷 PAGEREF _Toc227598032 h 29 HYPERLINK l _Toc227598033 五、 通用框架設(shè)計(jì) PAGEREF _Toc227598033 h 32 HYPERLINK l _Toc227598034 (一)、 用于獵取數(shù)據(jù)庫(kù)連接的有用工具 PAGEREF _Toc227598034 h 32 HYPERLINK l _Toc227598035 (二)、用于快速執(zhí)行SQL的工具SQLCommand PAGEREF _Toc227598035 h 33 HYPERLINK l _Toc227598036 結(jié)束語(yǔ) PAGEREF _Toc22
11、7598036 h 35 HYPERLINK l _Toc227598037 附錄 PAGEREF _Toc227598037 h 37 HYPERLINK l _Toc227598038 參考文獻(xiàn) PAGEREF _Toc227598038 h 42 HYPERLINK l _Toc227598039 致謝 PAGEREF _Toc227598039 h 43一、 緒論(一)、引言在校園、機(jī)關(guān)或企業(yè)里,由于各種調(diào)查研究的需要,經(jīng)常會(huì)有各種各樣的調(diào)查問(wèn)卷,在傳統(tǒng)模式下,人們不但要花費(fèi)許多的費(fèi)用印刷問(wèn)卷,而且還要消耗大量時(shí)刻和精力發(fā)放問(wèn)卷,回收問(wèn)卷,統(tǒng)計(jì)問(wèn)卷,同時(shí)問(wèn)卷可控性差,容易產(chǎn)生漏卷,廢卷
12、等問(wèn)題。現(xiàn)代信息技術(shù)的進(jìn)展,極大程度上提高了我們生產(chǎn)的效率,因此也為我們解決問(wèn)卷調(diào)查的難題提供了良好的解決方案,其中J2EE解決方案確實(shí)是一個(gè)在絕大多數(shù)方面都占據(jù)優(yōu)勢(shì)的方案,也是本文討論的主題。(二)、項(xiàng)目介紹本項(xiàng)目旨在建立一個(gè)基于J2EE的WEB應(yīng)用系統(tǒng),提供問(wèn)卷創(chuàng)建,問(wèn)卷編輯,問(wèn)卷公布,問(wèn)卷統(tǒng)計(jì),題目添加刪除修改,友情連接治理等功能;題目支持單選題、多選題、帶文本輸入的單選題、帶文本輸入的多選題、問(wèn)答題;用戶能夠給某問(wèn)卷添加圖片;用戶能夠給問(wèn)卷設(shè)置密碼,IP限制,包括黑名單和白名單,用戶也能夠設(shè)置同一IP是否能夠重復(fù)提交等防作弊選項(xiàng);系統(tǒng)提供對(duì)客觀題調(diào)查結(jié)果的智能統(tǒng)計(jì),并用圖表展示出來(lái);針
13、對(duì)每一張問(wèn)卷的每一個(gè)題目的任易選項(xiàng),用戶也能夠設(shè)置截?cái)?,終止調(diào)查,也能夠設(shè)置跳轉(zhuǎn),即被調(diào)查者點(diǎn)擊了某個(gè)選項(xiàng)后自動(dòng)跳轉(zhuǎn)到與該選項(xiàng)匹配的后續(xù)題目上。二、J2EE簡(jiǎn)介(一)、J2EE概述隨著Internet計(jì)算的迅速進(jìn)展,作為一門新興的語(yǔ)言,Java以其完全面向?qū)ο蟮脑O(shè)計(jì)風(fēng)格和良好的平臺(tái)無(wú)關(guān)性,差不多超越了語(yǔ)言本身的功能,成為了開發(fā)Web應(yīng)用的理想平臺(tái)。Java平臺(tái)包括了一種用于實(shí)現(xiàn)Java對(duì)象的語(yǔ)言和這些Java對(duì)象的運(yùn)行環(huán)境Java虛擬機(jī)JVM(Java Virtual Machine)。Java語(yǔ)言的要緊特點(diǎn)是平臺(tái)無(wú)關(guān)性:在一個(gè)操作系統(tǒng)下開發(fā)的Java對(duì)象能夠不做修改的運(yùn)行在另外一個(gè)操作系統(tǒng)的
14、JVM上。JVM封裝了各種底層操作系統(tǒng)在體系結(jié)構(gòu)和語(yǔ)義上的差異,在此基礎(chǔ)上為Java對(duì)象提供了一個(gè)統(tǒng)一的運(yùn)行環(huán)境。Java對(duì)象的源代碼被編譯為平臺(tái)無(wú)關(guān)的中性代碼字節(jié)碼。在運(yùn)行時(shí)刻,字節(jié)碼由JVM進(jìn)行解釋,被映射為真正的相關(guān)的操作系統(tǒng)調(diào)用而得以執(zhí)行功能。因此,只要是100%純Java語(yǔ)言實(shí)現(xiàn)的對(duì)象能夠被各種具有相應(yīng)JVM的操作系統(tǒng)所支持。Sun公司的J2EE構(gòu)架是在1997年的Java One大會(huì)上宣布的,J2EE定義了開發(fā)和運(yùn)行企業(yè)級(jí)Web應(yīng)用的標(biāo)準(zhǔn)。它是一組規(guī)范,旨在為支持Java語(yǔ)言服務(wù)器端部署而提供平臺(tái)無(wú)關(guān)的、可移植的、多用戶的、安全的和標(biāo)準(zhǔn)的企業(yè)級(jí)平臺(tái)。伴隨J2EE的出現(xiàn),Java語(yǔ)言
15、的功能和工具得到了極大的擴(kuò)充、豐富和進(jìn)展,能夠用于復(fù)雜的、多層次的以及分布式的電子商務(wù)和企業(yè)級(jí)應(yīng)用。J2EE構(gòu)架與技術(shù)為組件開發(fā)模型提供廣泛的支持,同時(shí)也提供一組開發(fā)工具和服務(wù),以便開發(fā)模塊化的、可重用的和平臺(tái)獨(dú)立的各種組件技術(shù)的業(yè)務(wù)邏輯。(二)、J2EE的優(yōu)勢(shì)J2EE為搭建具有可伸縮性、靈活性、易維護(hù)性的商務(wù)系統(tǒng)提供了良好的機(jī)制,它具有以下突出的優(yōu)點(diǎn):1、事實(shí)的標(biāo)準(zhǔn):J2EE是由SUN引導(dǎo),各廠商共同發(fā)起的,并得到廣泛認(rèn)可的工業(yè)標(biāo)準(zhǔn),業(yè)內(nèi)的大企業(yè)(如IBM,BEA,ORACLE等)都積極參與,專門多應(yīng)用軟件開發(fā)商也把自己的產(chǎn)品轉(zhuǎn)移到J2EE平臺(tái)上來(lái),使之成為事實(shí)的工業(yè)標(biāo)準(zhǔn)。因此,J2EE擁有
16、良好的市場(chǎng)和旺盛的生命力。2、可保存現(xiàn)有的IT資產(chǎn):使用J2EE能夠充分利用客戶原有的投資,保留已有的信息資源;同時(shí),由于基于J2EE平臺(tái)的產(chǎn)品幾乎在任何操作系統(tǒng)和硬件配置上都能夠運(yùn)行,現(xiàn)有的操作系統(tǒng)和硬件也能夠被保留使用。3、高效的開發(fā):J2EE同意公司把一些通用的、專門繁瑣的服務(wù)端任務(wù)交給中間件供應(yīng)商去完成。如此開發(fā)人員能夠集中精力在如何創(chuàng)建業(yè)務(wù)邏輯上,相應(yīng)地縮短了開發(fā)時(shí)刻。4、支持異構(gòu)環(huán)境:J2EE能夠開發(fā)部署在異構(gòu)環(huán)境中的可移植程序?;贘2EE的程序不依靠于任何特定操作系統(tǒng)、中間件、硬件。因此設(shè)計(jì)合理的基于J2EE的應(yīng)用程序只需開發(fā)一次就可被部署到各種平臺(tái)。這在典型的異構(gòu)企業(yè)計(jì)算環(huán)境
17、中是十分重要的。J2EE標(biāo)準(zhǔn)也同意客戶定購(gòu)與J2EE兼容的第三方的現(xiàn)成的組件,把它們部署到異構(gòu)環(huán)境中,節(jié)約了由自己制定整個(gè)方案所需的費(fèi)用。5、可伸縮性:企業(yè)必須選擇一種服務(wù)器端平臺(tái),這種平臺(tái)應(yīng)能提供極佳的可伸縮性去滿足那些在它們的系統(tǒng)上進(jìn)行商業(yè)運(yùn)作的大批新客戶。基于J2EE平臺(tái)的應(yīng)用程序可被部署到各種操作系統(tǒng)上。例如可被部署到高端UNIX和大型機(jī)系統(tǒng),這種系統(tǒng)單機(jī)可支持64至256個(gè)處理器。(這是NT服務(wù)器所望塵莫及的)J2EE領(lǐng)域的供應(yīng)商提供了更為廣泛的負(fù)載平衡策略,能消除系統(tǒng)中的瓶頸,同意多臺(tái)服務(wù)器集成部署。這種部署可達(dá)數(shù)千個(gè)處理器,實(shí)現(xiàn)可高度伸縮的系統(tǒng),滿足以后商業(yè)應(yīng)用的需要。6、穩(wěn)定的
18、可用性:一個(gè)服務(wù)器端平臺(tái)必須能夠全天候運(yùn)轉(zhuǎn)以滿足公司客戶和合作伙伴的需要。因?yàn)镮nternet是全球化的、無(wú)處不在的,即使在夜間按打算停機(jī)也可能造成嚴(yán)峻損失。意外停機(jī)有可能造成災(zāi)難性后果。能夠把J2EE部署到可靠的操作環(huán)境中,它們支持長(zhǎng)期的可用性。最健壯的操作系統(tǒng)可達(dá)到99.999的可用性或每年只需5分鐘的停機(jī)時(shí)刻,這是實(shí)時(shí)性專門強(qiáng)商業(yè)系統(tǒng)理想的選擇。三、 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(一)、使用設(shè)計(jì)模式進(jìn)行系統(tǒng)設(shè)計(jì)軟件模式是軟件開發(fā)期間對(duì)重復(fù)問(wèn)題的可復(fù)用解決方案,是經(jīng)驗(yàn)的總結(jié)。掌握這些設(shè)計(jì)模式后,當(dāng)遇到類似的問(wèn)題時(shí),就能夠快速利用已有的解決方案分析問(wèn)題,然后采取適當(dāng)?shù)牟呗?,從而有效縮短軟件開發(fā)周期并提高
19、軟件質(zhì)量。因此,使用設(shè)計(jì)模式是進(jìn)行軟件設(shè)計(jì)開發(fā)的有效途徑。在企業(yè)級(jí)應(yīng)用開發(fā)中,通過(guò)使用設(shè)計(jì)模式,能夠大大提高應(yīng)用程序的性能和增加軟件的復(fù)用性。因此,在本項(xiàng)目中,我們采納通過(guò)實(shí)踐檢驗(yàn)的、成熟的面向?qū)ο蟮脑O(shè)計(jì)模式來(lái)對(duì)我們的應(yīng)用系統(tǒng)進(jìn)行建模,以期達(dá)到服務(wù)質(zhì)量(QoS)較好(可擴(kuò)展性強(qiáng)、性能優(yōu)良、安全可靠,有一定的靈活性)的目的,并在此基礎(chǔ)上實(shí)現(xiàn)整個(gè)系統(tǒng)。(二)、系統(tǒng)總體設(shè)計(jì)1、 MVC模式模型視圖操縱器(MVC)是Xerox PARC在八十年代為編程語(yǔ)言Smalltalk80發(fā)明的一種軟件設(shè)計(jì)模式,至今已被廣泛使用。最近幾年被推舉為Sun公司J2EE平臺(tái)的設(shè)計(jì)模式。MVC結(jié)構(gòu)提供了一種按功能對(duì)各種對(duì)
20、象進(jìn)行分割的方法,它強(qiáng)制性地使應(yīng)用程序的輸入、處理和輸出分開,因此依據(jù)這種設(shè)計(jì)思想能夠構(gòu)造良好的松耦合的構(gòu)件。使用MVC的應(yīng)用程序被分成三個(gè)核心構(gòu)件:模型、視圖、操縱器。2、系統(tǒng)總體結(jié)構(gòu)本系統(tǒng)采納MVC的設(shè)計(jì)模式,用戶輸入輸出界面均為JSP頁(yè)面,即展示層(VIEW),用戶的請(qǐng)求(REQUEST)將會(huì)被發(fā)送到操縱層(CONTROL)的一個(gè)SERVLET集中處理,依照請(qǐng)求調(diào)用模型層(MODEL)的JAVABEAN對(duì)請(qǐng)求進(jìn)行實(shí)際處理,并把結(jié)果返回給操縱層,操縱層依照請(qǐng)求的執(zhí)行結(jié)果將響應(yīng)(RESPONSE)派發(fā)到相應(yīng)的JSP頁(yè)面。例如,一個(gè)數(shù)據(jù)提交(操作請(qǐng)求)的標(biāo)準(zhǔn)流程:在問(wèn)卷治理模塊中的添加問(wèn)卷頁(yè)面
21、(SurveyAdd.jsp),用戶在那個(gè)頁(yè)面中輸入數(shù)據(jù),提交之后,請(qǐng)求被派發(fā)到一個(gè)名為SurveyManage的servlet中集中處理,在那個(gè)servlet中,調(diào)用了持久層的名為SurveyDAO 的javabean的addSurvey方法對(duì)數(shù)據(jù)進(jìn)行持久化,然后把處理結(jié)果返回給SurveyMange那個(gè)操縱器,操縱器依照返回的結(jié)果決定將相應(yīng)的頁(yè)面展現(xiàn)給客戶端掃瞄器。又如,一個(gè)數(shù)據(jù)查詢(數(shù)據(jù)請(qǐng)求)的標(biāo)準(zhǔn)流程:在問(wèn)卷設(shè)計(jì)頁(yè)面中(SurveyAdmin.jsp),用戶打開頁(yè)面后,頁(yè)面即調(diào)用SurveyDAO的listAllSurvey方法查詢出所有問(wèn)卷信息返回給頁(yè)面,即頁(yè)面進(jìn)行數(shù)據(jù)查詢時(shí)不再通過(guò)
22、CONTROLLER層。如圖3-2-1:圖3-2-1(三)、持久層設(shè)計(jì)與實(shí)現(xiàn)1、 數(shù)據(jù)庫(kù)設(shè)計(jì)核心實(shí)體包括:?jiǎn)柧恚⊿URVEY),問(wèn)題(QUESTION),答卷(ANSWERSHEET);還有保存用戶輸入的文本的文本輸入項(xiàng)實(shí)體(TEXT),治理員表(ADMINS),友情鏈接表(LINK),系統(tǒng)配置表(CONFIG),如圖3-3-1 。值得一提的是,為了保證每個(gè)題目能夠有不限量個(gè)選項(xiàng),在question表中,我把q_body字段用來(lái)保存該題目因此的選項(xiàng)信息,每個(gè)選項(xiàng)用&$&那個(gè)專門字符串隔開,同樣的,在q_result中保存的調(diào)查結(jié)果信息用逗號(hào)隔開,在q_jdtz中保存的截?cái)嗵D(zhuǎn)信息用&隔開。圖3
23、-3-1問(wèn)卷表(SURVEY)字段名類型可否空含義s_idNumericNo問(wèn)卷IDTemplet_idNumericNo模板ID,預(yù)留字段,暫未使用S_nameVarchar(100)No問(wèn)卷名稱S_descVarchar(500)Yes問(wèn)卷描述S_authorVarchar(100)Yes發(fā)起人S_imgVarchar(1000)Yes圖片文件名S_ipRepeatBit(1)Yes是否同意同一IP多次提交S_createdateDatetimeYes創(chuàng)建時(shí)刻S_ipLimitTypeVarchar(100)YesIP限制類型,預(yù)留字段未使用S_ipRangeVarchar(2000)Ye
24、sIP限制范圍,格式如下:“白名單:54;黑名單:”S_passwordVarchar(100)Yes訪問(wèn)密碼S_isOpenBit(1)Yes是否開放,即是否顯示在首頁(yè)S_expireDateDatetimeYes過(guò)期日期S_isAuditedBit(1)Yes是否審核通過(guò)S_hitsNumericYes點(diǎn)擊訪問(wèn)次數(shù),未使用S_usehitsNumericYes答卷張數(shù)題目表(question)字段名類型可否空含義Q_idnumericNo題目IDS_idNumeric(18)No問(wèn)卷ID,survey表外鍵Q_typeNumber(18)No題目類型: 1單選題,2多選題,3單選題加輸入框
25、,4多選題加輸入框,5問(wèn)答題Q_headVarchar(1000)Yes題干Q_bodyVarchar(8000)Yes選項(xiàng).以 &$& 分隔Q_resultVarchar(1000)Yes用戶提交的選擇,格式如下:2,3,5,2表示選擇A選項(xiàng)被選擇了2次,B選項(xiàng)被選擇了3次,C選項(xiàng)被選擇了5次,D選項(xiàng)被選擇了2次,即此某選項(xiàng)被選擇了一次之后,其對(duì)應(yīng)的RESULT值加一。Q_imgVarchar(1000)Yes題目的圖片,預(yù)留字段。Q_jdtzVarchar(1000)Yes截?cái)嗵D(zhuǎn):格式如下:null&69&over&90即用戶點(diǎn)擊A選項(xiàng)后,跳轉(zhuǎn)到默認(rèn)的題目,即下一題,點(diǎn)擊B跳轉(zhuǎn)到69號(hào)題
26、,點(diǎn)擊C終止問(wèn)卷,點(diǎn)擊D跳轉(zhuǎn)到90號(hào)題Q_orderNumeric(18)yes題目順序號(hào),保留字段答卷表(answersheet)字段名類型可否空含義as_idnumeric(9)no答卷IDs_idnumeric(9)no問(wèn)卷ID,survey表外鍵as_resultvarchar(8000)yes答卷內(nèi)容 格式如下:18:as=1,4;text=醬油&19:as=1;即每個(gè)題目用戶&分隔;題目?jī)?nèi)部以題號(hào)開頭+冒號(hào)+用戶選擇的項(xiàng)+分號(hào)+用戶輸入文本as_postdatedatetimeyes提交日期as_userIPvarchar(50)yes用戶IP2、 持久層框架設(shè)計(jì)持久性框架是一組軟
27、件服務(wù),將應(yīng)用程序同其使用和操縱的數(shù)據(jù)源分離。它位于機(jī)構(gòu)的數(shù)據(jù)源之上,隱藏訪問(wèn)這些數(shù)據(jù)源的數(shù)據(jù)查詢存取API(如JDBC、實(shí)體EJB等),它提供的服務(wù)應(yīng)完全抽象,同時(shí)隱藏使用及操縱數(shù)據(jù)源數(shù)據(jù)的細(xì)節(jié)。圖3-3-2顯示了它在J2EE系統(tǒng)體系結(jié)構(gòu)中的地位。圖3-3-2本系統(tǒng)在持久層要緊使用了3種設(shè)計(jì)模式:DAO模式、VO模式、簡(jiǎn)單工廠模式。DAO(數(shù)據(jù)訪問(wèn)對(duì)象)模式:數(shù)據(jù)訪問(wèn)對(duì)象(DAO)模式使用數(shù)據(jù)訪問(wèn)對(duì)象來(lái)封裝和抽象對(duì)所有數(shù)據(jù)源的訪問(wèn),它治理著與數(shù)據(jù)源的連接以便于檢索和存儲(chǔ)數(shù)據(jù),為業(yè)務(wù)對(duì)象提供了透明的底層數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)。DAO模式完全包裝數(shù)據(jù)的讀取和操縱,并包裝與數(shù)據(jù)庫(kù)交互的數(shù)據(jù)訪問(wèn)API,它用數(shù)
28、值對(duì)象包裝從數(shù)據(jù)庫(kù)讀取和發(fā)送到數(shù)據(jù)庫(kù)的數(shù)據(jù),與業(yè)務(wù)層進(jìn)行通信。DAO模式提供的靈活性是由于應(yīng)用程序并不直接訪問(wèn)數(shù)據(jù)源,而是創(chuàng)建DAO對(duì)象,用其訪問(wèn)數(shù)據(jù)源。讀取數(shù)據(jù)時(shí),能夠用數(shù)值對(duì)象保存取得的數(shù)據(jù)。例如: SurveyDAO.java beginpublic interface SurveyDAO boolean addSurvey(Survey survey);/添加問(wèn)卷boolean updateSurvey(Survey survey);/更新問(wèn)卷boolean delSurvey(Long surveyId);/刪除問(wèn)卷SurveyDAO.java endVO(值對(duì)象)模式:使用值對(duì)象能
29、夠減少使用實(shí)體bean時(shí)需要的遠(yuǎn)程調(diào)用的次數(shù)。我們使用值對(duì)象來(lái)封裝業(yè)務(wù)數(shù)據(jù),用相應(yīng)的方法調(diào)用來(lái)設(shè)置和檢索值對(duì)象。當(dāng)客戶端向?qū)嶓wbean請(qǐng)求業(yè)務(wù)數(shù)據(jù)時(shí),該實(shí)體bean能夠構(gòu)造值對(duì)象,用屬性值來(lái)填充,同時(shí)將值對(duì)象傳送給客戶端。同樣道理,客戶端向?qū)嶓wbean提交數(shù)據(jù)時(shí),也采納值對(duì)象這一方法。Question.java begin public class Question private Long QId;private Long survey;private Long QType;public Long getQId() /取得問(wèn)題IDreturn this.QId;public void set
30、QId(Long QId) /設(shè)置問(wèn)題IDthis.QId = QId;public Long getSurvey() /獵取問(wèn)卷IDreturn this.survey;Question.java end系統(tǒng)中因此的數(shù)據(jù)庫(kù)實(shí)體,都被封裝成了如此的VO。例如,頁(yè)面上要數(shù)據(jù)庫(kù)中添加一個(gè)問(wèn)卷,那么首先頁(yè)面把數(shù)據(jù)發(fā)送到操縱層的SERVLET,在該SERVLET中通過(guò)頁(yè)面?zhèn)鬟^(guò)來(lái)的參數(shù)構(gòu)造一個(gè)VO,然后把那個(gè)VO傳遞給DAO對(duì)象,DAO對(duì)象最后完成對(duì)數(shù)據(jù)庫(kù)的操縱操作。簡(jiǎn)單工廠模式:專門定義一個(gè)類來(lái)負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。它又稱為靜態(tài)工廠方法模式,屬于類的創(chuàng)建型模式。簡(jiǎn)單工
31、廠模式的實(shí)質(zhì)是由一個(gè)工廠類依照傳入的參數(shù),動(dòng)態(tài)決定應(yīng)該創(chuàng)建哪一個(gè)產(chǎn)品類(這些產(chǎn)品類繼承自一個(gè)父類或接口)的實(shí)例。DAOFactory.java beginpublic class DAOFactory private DAOFactory()public static SurveyDAO getSurveyDAO()return new SurveyDAOimpl();/返回問(wèn)卷DAO的實(shí)現(xiàn)類public static QuestionDAO getQuestionDAO()return new QuestionDAOimpl();/返回問(wèn)題DAO的實(shí)現(xiàn)類DAOFactory.java end
32、本工廠類使用了多方法工廠,隔離上層與數(shù)據(jù)庫(kù)底層,使上層方法不用關(guān)懷底層采納何種數(shù)據(jù)庫(kù)實(shí)現(xiàn),系統(tǒng)假如要遷移到其他數(shù)據(jù)庫(kù)上,也只需實(shí)現(xiàn)相應(yīng)的DAO接口,然后在DAOFactroy類中修改返回的實(shí)現(xiàn)類即可。(四)、 業(yè)務(wù)邏輯層的設(shè)計(jì)與實(shí)現(xiàn)本系統(tǒng)涉及的業(yè)務(wù)邏輯相對(duì)簡(jiǎn)單,因此在設(shè)計(jì)的時(shí)候,我們將其并入MVC操縱層,在操縱層中直接調(diào)用DAO處理對(duì)象持久化操作。 SurveyManage.java beginpublic class SurveyManage extends HttpServlet private static final long serialVersionUID = -173745830
33、2140188798L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException PrintWriter out=response.getWriter();if(“AddSurvey”.equals(request.getParameter(“op”)SurveyDAO surveydao=DAOFactory.getSurveyDAO(); /獵取DAO對(duì)象Survey survey=new Survey();/構(gòu)造VO對(duì)象su
34、rvey.setSName(request.getParameter(“Survey_name”);/給VO對(duì)象賦值survey.setSAuthor(request.getParameter(“Survey_author”);oolean ret=surveydao.addSurvey(survey);/調(diào)用DAO對(duì)象方法執(zhí)行數(shù)據(jù)庫(kù)操作if(ret=true)response.sendRedirect(“./admin/OpResult.jsp?op=SurveyAdd&ret=true”);/依照返回結(jié)果轉(zhuǎn)發(fā)頁(yè)面elseresponse.sendRedirect(“./admin/OpRe
35、sult.jsp?op=SurveyAdd&ret=false”); SurveyManage.java end (五)、 前端WEB層設(shè)計(jì)與實(shí)現(xiàn)WEB前端層的設(shè)計(jì)和實(shí)現(xiàn)中,充分利用的JAVASCRIPT的強(qiáng)大操縱功能,同時(shí)在某些頁(yè)面上采納了DIV+CSS組合設(shè)計(jì)方法。在系統(tǒng)后臺(tái),頁(yè)面采納框架布局,頁(yè)面上面顯示BANNER等信息,左邊顯示菜單,中間顯示操作頁(yè)面。后臺(tái)界面的設(shè)計(jì)要緊依據(jù)功能模塊來(lái)劃分,論文重點(diǎn)闡述問(wèn)卷治理模塊的設(shè)計(jì),這也是后臺(tái)的核心部分。一個(gè)正常的業(yè)務(wù)流程是如此的:第一步:點(diǎn)擊“添加問(wèn)卷”,進(jìn)入問(wèn)卷添加頁(yè)面,按要求錄入相應(yīng)的數(shù)據(jù),提交即可生成一份問(wèn)卷,然而那個(gè)時(shí)候,問(wèn)卷僅僅是一份
36、空白問(wèn)卷,我們還需要進(jìn)行第二步。如圖3-5-1:圖3-5-1系統(tǒng)后臺(tái)-添加問(wèn)卷頁(yè)面第二步:點(diǎn)擊“問(wèn)卷設(shè)計(jì)”,進(jìn)入問(wèn)卷設(shè)計(jì)頁(yè)面,界面會(huì)顯示出當(dāng)前系統(tǒng)中的因此問(wèn)卷,用戶找到相應(yīng)的問(wèn)卷后,點(diǎn)擊治理題目,進(jìn)入治理題目的界面,用戶在那個(gè)地點(diǎn)能夠?qū)μ砑觿h除題目,同時(shí)能夠?qū)︻}目進(jìn)行設(shè)置截?cái)嗪吞D(zhuǎn)操作。如圖3-5-2,3-5-3:圖3-5-2 系統(tǒng)后臺(tái)-問(wèn)卷設(shè)計(jì)頁(yè)面圖3-5-3系統(tǒng)后臺(tái)-題目治理頁(yè)面第三步:點(diǎn)擊“問(wèn)卷審核”,顯示出問(wèn)卷審核界面,用戶能夠在那個(gè)界面上對(duì)某一問(wèn)卷設(shè)置通過(guò)審核或禁用操作,值得強(qiáng)調(diào)的是,“通過(guò)審核”操作會(huì)凍結(jié)該問(wèn)卷,也確實(shí)是講用戶在審核問(wèn)卷之后就不能再對(duì)其進(jìn)行更改了,如此設(shè)計(jì)是為了保證
37、問(wèn)卷調(diào)查數(shù)據(jù)的準(zhǔn)確性和系統(tǒng)的穩(wěn)定性。然而,也存在用戶有專門需求需要修改問(wèn)卷的情況,那個(gè)時(shí)候用戶能夠執(zhí)行“禁用”操作,也確實(shí)是反審核操作,這會(huì)使問(wèn)卷返回到能夠編輯的狀態(tài),然而在執(zhí)行那個(gè)操作的時(shí)候,假如有用戶差不多希望系統(tǒng)提交了答卷,就會(huì)使系統(tǒng)產(chǎn)生臟數(shù)據(jù),系統(tǒng)就無(wú)法準(zhǔn)確的統(tǒng)計(jì)調(diào)查結(jié)果信息,因?yàn)楝F(xiàn)在系統(tǒng)的答卷數(shù)據(jù)是依照問(wèn)卷修改之前的問(wèn)卷結(jié)構(gòu)生成的,假如問(wèn)卷結(jié)構(gòu)發(fā)生變化,那么系統(tǒng)將無(wú)法依照現(xiàn)有的問(wèn)卷結(jié)構(gòu)分析之前的“臟數(shù)據(jù)”。因此,我在設(shè)計(jì)那個(gè)功能的時(shí)候,強(qiáng)烈建議用戶在執(zhí)行反審核之后趕忙到問(wèn)卷統(tǒng)計(jì)模塊中執(zhí)行答卷結(jié)果清零操作,以保證系統(tǒng)數(shù)據(jù)的正確性。如圖3-5-4:圖3-5-4 系統(tǒng)后臺(tái)-問(wèn)卷審核頁(yè)面第四
38、步:在通過(guò)充分的調(diào)查后,用戶能夠點(diǎn)擊“問(wèn)卷統(tǒng)計(jì)”,查看統(tǒng)計(jì)結(jié)果,統(tǒng)計(jì)結(jié)果分為兩部分,一部分是所有答卷的匯總統(tǒng)計(jì),另一部分是每個(gè)用戶的答卷。用戶能夠依照自己的需要使用這些數(shù)據(jù)信息。如圖3-5-5:圖3-5-5 答卷統(tǒng)計(jì)前臺(tái)界面采納簡(jiǎn)潔大方的設(shè)計(jì)風(fēng)格,首頁(yè)排列出了最新問(wèn)卷和熱門問(wèn)卷。如圖3-5-6:圖3-5-6 系統(tǒng)前臺(tái)-首頁(yè)圖3-5-7 系統(tǒng)前臺(tái)-問(wèn)卷頁(yè)面問(wèn)卷調(diào)查頁(yè)面的設(shè)計(jì)采納AJAX技術(shù)來(lái)實(shí)現(xiàn)本系統(tǒng)最大的特色功能動(dòng)態(tài)跳轉(zhuǎn),當(dāng)用戶點(diǎn)擊某一題目某一選項(xiàng)時(shí),系統(tǒng)會(huì)依照設(shè)置跳轉(zhuǎn)到與當(dāng)前選項(xiàng)相關(guān)的題目上,而這一切,用戶感受到只是網(wǎng)頁(yè)中局部一小塊刷新了,具有專門好的用戶體驗(yàn)。四、重難點(diǎn)問(wèn)題解決方案研究(一
39、)、如何實(shí)現(xiàn)用戶答卷時(shí)題目動(dòng)態(tài)截?cái)嗪吞D(zhuǎn)需求描述:當(dāng)用戶選擇一個(gè)選項(xiàng)時(shí),即刻彈出與此選項(xiàng)相關(guān)的后續(xù)題目,例如:有一張關(guān)于九九鴨脖消費(fèi)的調(diào)查問(wèn)卷:圖4-1-1第一題,當(dāng)用戶選擇明白時(shí)跳到默認(rèn)的下一題,選擇“不明白”,就提示用戶問(wèn)卷結(jié)束。第二題,當(dāng)用戶選擇前4項(xiàng)時(shí),跳到默認(rèn)的下一題,選擇“從不”,提示問(wèn)卷結(jié)束。第三題,當(dāng)用戶選擇“廣告宣傳”時(shí),彈出對(duì)何種廣告媒體的調(diào)查題目,選擇其他選項(xiàng)則躍過(guò)廣告媒體的題目。解決方案:首先,我們將SurveyShow.jsp那個(gè)頁(yè)面作為容器頁(yè)面,即那個(gè)頁(yè)面顯示問(wèn)卷本身的一些描述信息,如問(wèn)卷標(biāo)題,問(wèn)卷描述等,在那個(gè)頁(yè)面中間,我們嵌入一個(gè)區(qū)域(DIV)名叫questio
40、n_list,那個(gè)DIV用來(lái)裝載從ajax_SurveyShow.jsp實(shí)時(shí)獵取的題目信息。其次,ajax_SurveyShow.jsp 需要SurveyShow.jsp傳遞兩個(gè)參數(shù),一個(gè)是問(wèn)卷編號(hào)(sid),另一個(gè)是跳往題目編號(hào)(to),ajax_SurveyShow.jsp首先依照sid查找出所有的題目,然后過(guò)濾掉編號(hào)小于to的題目,接著推斷to所代表的題目是否屬于單選題(包括單選題,含輸入框的單選題),假如是單選題,則返回這道題目,假如不是單選題,則接著生成它后面的題目,直到發(fā)覺單選題才停止。單選題與其他類型題目的構(gòu)成是不同的,其他類型題目的結(jié)構(gòu)是如此的:題干選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D而單
41、選題在那個(gè)結(jié)構(gòu)的基礎(chǔ)上增加了一個(gè)DIV(qbox):題干選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D那么那個(gè)qbox就用來(lái)裝載他的后續(xù)題目,也確實(shí)是講,當(dāng)用戶點(diǎn)擊某選項(xiàng)的時(shí)候,依照參數(shù)to的值推斷后續(xù)題目,然后用后續(xù)題目來(lái)填充qbox,值得一提的是,假如他的后續(xù)題目是單選題,那么qbox就只裝后續(xù)題目這一道題目,而這一道題目又包含了一個(gè)qbox,以此類推;假如他的后續(xù)題目不是單選題,則那個(gè)qbox就不斷查詢加載下一題目,直到發(fā)覺單選題,如此那個(gè)qbox就會(huì)裝載專門多題目,而最后一題確信是單選題(除非問(wèn)卷結(jié)束時(shí)都沒(méi)有找到單選題),同時(shí)包含一個(gè)qboxDIV,而對(duì)那個(gè)題目進(jìn)行選擇時(shí),又會(huì)觸發(fā)對(duì)qbox的填充。如圖4-
42、1-2。圖4-1-2SurveyShow.jsp實(shí)現(xiàn)跳轉(zhuǎn)的JS代碼,使用prototype的AJAX對(duì)象:jump beignfunction jump(obj,to)var request_url = ajax_SurveyShow.jsp; / 需要獵取內(nèi)容的url if(to=null)to=0;var request_pars = to=+to+&sid=+;/請(qǐng)求參數(shù) var myAjax = new Ajax.Updater(obj, request_url, / 將request_url返回內(nèi)容綁定到id為result的HTML TAG中 ,那個(gè)地點(diǎn)的obj確實(shí)是qboxmeth
43、od : post, /HTTP請(qǐng)求的方法,get or post parameters : request_pars, /請(qǐng)求參數(shù) ); jump end 實(shí)現(xiàn)截?cái)嗟腏S代碼:EndSurvey bginfunction EndSurvey(qid)$(qbox+qid).innerHTML=;var ret=window.confirm(選擇此項(xiàng)意味著問(wèn)卷終止,確定提交問(wèn)卷嗎?);if(ret=true)$(form_survey).submit();EndSurvey end (二)、如何實(shí)現(xiàn)存取單張答卷需求描述:專門多情況下,問(wèn)卷發(fā)起人需要明白每個(gè)被調(diào)查人的單張答卷信息,以進(jìn)一步了解答
44、卷人的方法。因此需要系統(tǒng)能夠提供一個(gè)記錄和提取答卷人單張答卷的功能,也確實(shí)是講,問(wèn)卷發(fā)起人能夠查看到任何一個(gè)被調(diào)查人的答卷信息,同時(shí),因?yàn)橄到y(tǒng)有截?cái)嗵D(zhuǎn)功能,需要考慮每張答卷結(jié)構(gòu)專門可能不一樣的情況,如圖4-1-3,4-1-4:圖4-1-3 某用戶答卷圖4-1-4 某用戶答卷解決方案:首先,在用戶提交問(wèn)卷的時(shí)候,系統(tǒng)把該答卷存入ANSWERSHEET表,該表要緊有4個(gè)字段,as_id,s_id,as_result,as_userIP。As_id確實(shí)是答卷的編號(hào),s_id是問(wèn)卷的編號(hào),as_userIP是用戶的IP地址,而as_result是按一定結(jié)構(gòu)組織成的用戶的答卷信息。該結(jié)構(gòu)形式如下:18
45、:as=1,4;text=醬油&19:as=1;即每個(gè)題目用&分隔;題目?jī)?nèi)部以題號(hào)開頭+冒號(hào)+as=用戶選擇的項(xiàng)(多個(gè)項(xiàng)用逗號(hào)分隔)+分號(hào)+text=用戶輸入文本。其次,當(dāng)用戶打開答卷頁(yè)面時(shí),頁(yè)面解析從數(shù)據(jù)庫(kù)傳過(guò)來(lái)的as_result字符串,先用&拆成數(shù)組,然后再對(duì)每個(gè)字串進(jìn)行解析。把解析出來(lái)的qid構(gòu)造成一個(gè)ArrayList,依照個(gè)List,查找question表,迭代出該答卷所有的題目信息。然后,在頁(yè)面底部,用JAVASCRIPT給題目賦上用戶選擇或輸入的值。五、 通用框架設(shè)計(jì)(一)、 用于獵取數(shù)據(jù)庫(kù)連接的有用工具首先,在TOMCAT的CONTEXT.XML里配置如下代碼:context
46、.xml begincontext.xml end接著在WEB-INF/WEB.XML里配置如下代碼:web.xml begin JNDIname java.lang.String jdbc/survey/JNDI名稱 然后,在ConnectionFactory中寫:public class ConnectionFactory private ConnectionFactory()public static Connection getConnection()try String JNDIname=(String)new javax.naming.InitialContext().lookup
47、(java:comp/env/JNDIname);/查找WEB.XML中的JNDIname的值,通過(guò)它來(lái)找到數(shù)據(jù)庫(kù)JNDI的名稱return ConnectionFactory.getConnection(JNDIname); catch (NamingException e) e.printStackTrace();return null;public static Connection getConnection(String JNDIname) try Context initCtx = new InitialContext(); Context envCtx = (Context) i
48、nitCtx.lookup(java:comp/env); DataSource ds = (DataSource) envCtx.lookup(JNDIname);/通過(guò)指定的JNDI名稱獵取數(shù)據(jù)庫(kù)連接,如jdbc/surveyreturn ds.getConnection(); catch (NamingException e1) e1.printStackTrace();return null; catch (SQLException e) e.printStackTrace();return null;web.xml end總體思路確實(shí)是通過(guò)web.xml獵取JNDI名稱,然后通過(guò)JN
49、DI名稱去查找TOMCAT初始上下文中的JNDI配置中數(shù)據(jù)源,獵取那個(gè)數(shù)據(jù)源,創(chuàng)建數(shù)據(jù)庫(kù)連接。(二)、用于快速執(zhí)行SQL的工具SQLCommand為了簡(jiǎn)化開發(fā)的復(fù)雜度,我把執(zhí)行SQL的語(yǔ)句進(jìn)行了封裝,打包成一個(gè)SQLCommand類(圖5-2-1),使用那個(gè)類操作數(shù)據(jù)庫(kù),不用再關(guān)懷數(shù)據(jù)庫(kù)連接的獵取和釋放,只需提供要執(zhí)行的SQL即可。然而,考慮到模塊耦合的問(wèn)題,我并可不能在頁(yè)面中或業(yè)務(wù)邏輯層中使用本工具,本項(xiàng)目要緊在DAO的實(shí)現(xiàn)類中使用本工具。其他項(xiàng)目假如使用此類,可不必受此約束。圖5-2-1executeSQLs(String sqls) 方法:執(zhí)行一組SQL;executeSQL(Strin
50、g sql) 方法:執(zhí)行一條SQL;queryRowSet(String sql) 方法:執(zhí)行一條SQL,返回一個(gè)RowSet類型的結(jié)果集,那個(gè)結(jié)果集是無(wú)連接的,保存在內(nèi)存中;queryScalar(String sql) 方法:獵取結(jié)果集中第一行第一列的值,返回類型為String,常用于帶聚合函數(shù)的SQL。代碼片段:SQLCommand beginpublic class SQLCommand public int executeSQL(String sql)Connection conn=this.getConn();Statement stmt=null;try stmt=conn.cr
51、eateStatement();return stmt.executeUpdate(sql); catch (SQLException e) e.printStackTrace();return -1; finallySQLCommand.close(stmt);SQLCommand.close(conn);SQLCommand end結(jié)束語(yǔ)J2EE是開發(fā)分布式企業(yè)級(jí)應(yīng)用程序的中間件平臺(tái)。J2EE技術(shù)專門好地解決了傳統(tǒng)二層體系架構(gòu)帶來(lái)的弊端;而且它也被許多提供企業(yè)應(yīng)用軟件的國(guó)際領(lǐng)先廠商所支持,擁有眾多的支撐與應(yīng)用資源,進(jìn)展越來(lái)越成熟,因此在能夠預(yù)見的今后具有專門好的應(yīng)用前景。通過(guò)使用J2EE開
52、發(fā)平臺(tái),大大簡(jiǎn)化了應(yīng)用程序的編程代碼量,部分地免去了編程的復(fù)雜性,提高了軟件的生產(chǎn)效率和可維護(hù)性。因此,通過(guò)使用J2EE架構(gòu),我們能夠快速地開發(fā)出高質(zhì)量的企業(yè)級(jí)應(yīng)用軟件。在J2EE架構(gòu)上進(jìn)行的軟件開發(fā),盡管是面向組件的,但究其全然依舊屬于面向?qū)ο蟮某绦蛟O(shè)計(jì)方法范疇。因此,軟件除了必須給用戶提供必需的差不多功能外,還需要使軟件具備可重用性、可維護(hù)性、可擴(kuò)展性、可移植性和靈活性。面向?qū)ο笤O(shè)計(jì)模式的產(chǎn)生和應(yīng)用,正是為了實(shí)現(xiàn)這些目標(biāo)。設(shè)計(jì)模式是面向?qū)ο筌浖_發(fā)的指南,它強(qiáng)調(diào)的是一種重用思想,是設(shè)計(jì)上的重用和架構(gòu)上的重用,它將最佳實(shí)踐的解決方案抽象化,提供給人們學(xué)習(xí)和研究。在論文中介紹的企業(yè)治理信息系統(tǒng)
53、項(xiàng)目的設(shè)計(jì)和一個(gè)通用框架的設(shè)計(jì)過(guò)程中,都使用了大量的設(shè)計(jì)模式,從而使系統(tǒng)實(shí)現(xiàn)了擴(kuò)展性強(qiáng)、性能優(yōu)良、具有一定靈活性的設(shè)計(jì)目標(biāo)。軟件構(gòu)件化是21世紀(jì)軟件工業(yè)進(jìn)展的大趨勢(shì)。工業(yè)化的軟件復(fù)用差不多從通用類庫(kù)進(jìn)展到了面向領(lǐng)域的應(yīng)用框架。框架的最大好處確實(shí)是重用,面向?qū)ο笙到y(tǒng)獲得的最大的復(fù)用方式確實(shí)是框架??蚣艿闹赜靡殉蔀檐浖a(chǎn)中最有效的重用方式之一,一個(gè)大的應(yīng)用系統(tǒng)往往可能由多層互相協(xié)作的框架組成。在某些方面使用不人的成熟的框架,就相當(dāng)于讓不人幫你完成了一些基礎(chǔ)工作,你只需要集中精力完成應(yīng)用系統(tǒng)的業(yè)務(wù)邏輯設(shè)計(jì),從而使軟件生產(chǎn)效率得到了大幅度提高。因此,使用框架開發(fā)應(yīng)用程序,能夠加快開發(fā)速度,逐漸成為了
54、企業(yè)應(yīng)用程序開發(fā)的趨勢(shì)。在論文中,我們嘗試設(shè)計(jì)了一個(gè)通用框架的原型系統(tǒng),希望能夠?qū)崿F(xiàn)軟件復(fù)用,達(dá)到快速開發(fā)應(yīng)用程序的目的。附錄(一)、ajax_SurveyShow.jsp源代碼(部分)_%QuestionDAO qdao=DAOFactory.getQuestionDAO();List qlist=qdao.listAllQuestion(Long.valueOf(request.getParameter(sid);String to=request.getParameter(to);qlist:for(Question q:qlist) if(q.getQId()Long.valueOf(
55、to) continue;/this is to avoid generate the same question.out.println( +q.getQHead() + );out.println(); String body=q.getQBody().split(&$&); String sz_jdtz; int Jdtz; switch(q.getQType().intValue() case 1: sz_jdtz =q.getQJdtz().split(&); for(int i=0;ibody.length;i+) if(over.equals(sz_jdtzi) out.prin
56、tln(+bodyi+); else if(null.equals(sz_jdtzi) out.println(+bodyi+); else out.println(+bodyi+); out.println();out.println();break qlist;/ this is a single choice , it may have jump or break,so stop generate list,wait for users choice.case 2: for(int i=0;ibody.length;i+) out.println(+bodyi+); out.printl
57、n();break;/this is a mutible choice, it cannot have jump or break,so just break the switch clause,and continue to get the next question to the list.case 3: sz_jdtz =q.getQJdtz().split(&); for(int i=0;ibody.length;i+) if(over.equals(sz_jdtzi) out.print(+bodyi+); else if(null.equals(sz_jdtzi) out.print(+bodyi+); else out.print(+bodyi+); out.println(); out.println();out.println();break qlist;case 4:for(int i=0;ibody.length;i+) out.println(+bodyi+); out.println();out.println();break;c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省臨沂市沂縣重點(diǎn)中學(xué)2024-2025學(xué)年初三下期末考試(物理試題理)試卷含解析
- 寧德職業(yè)技術(shù)學(xué)院《公共管理思想史》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧省沈陽(yáng)市新民市2024-2025學(xué)年小升初易錯(cuò)點(diǎn)數(shù)學(xué)檢測(cè)卷含解析
- 瀘州職業(yè)技術(shù)學(xué)院《管理會(huì)計(jì)系列綜合》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年物業(yè)管理師考試試卷及答案
- 內(nèi)蒙古呼倫貝爾市莫力達(dá)瓦旗尼爾基一中2024-2025學(xué)年高三3月“陽(yáng)光校園空中黔課”階段性檢測(cè)試題化學(xué)試題含解析
- 山東省濟(jì)南市歷城區(qū)濟(jì)南一中2025年高三下學(xué)期線上周歷史試題含解析
- 2025年文化傳媒專業(yè)考試試題及答案
- 2025年中專生計(jì)算機(jī)操作考試試題及答案
- 江蘇省興化市顧莊區(qū)三校2024-2025學(xué)年高中畢業(yè)班模擬考試(一)物理試題含解析
- 2025-2030中國(guó)財(cái)務(wù)公司行業(yè)深度分析及發(fā)展前景與發(fā)展戰(zhàn)略研究報(bào)告
- 不分手協(xié)議書合同書
- 2025年護(hù)士執(zhí)業(yè)資格考試題庫(kù)基礎(chǔ)護(hù)理學(xué)專項(xiàng):新生兒護(hù)理操作要點(diǎn)試題
- 新生兒敗血癥診斷與治療專家共識(shí)(2024)解讀課件
- 2025屆高三語(yǔ)文4月名校聯(lián)考作文匯編(審題+立意+范文)
- 寵物托運(yùn)自負(fù)協(xié)議書范本
- GB/T 5453-2025紡織品織物透氣性的測(cè)定
- 國(guó)企人事專員筆試試題及答案
- 2025年甘肅蘭州建設(shè)投資(控股)集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 公路改擴(kuò)建工程地質(zhì)災(zāi)害危險(xiǎn)性評(píng)估報(bào)告
- IIT臨床研究培訓(xùn)
評(píng)論
0/150
提交評(píng)論