基于java的計(jì)算機(jī)考試系統(tǒng)畢業(yè)論文_第1頁
已閱讀1頁,還剩77頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  基于java的計(jì)算機(jī)考試系統(tǒng)</p><p>  學(xué)院(系): 計(jì)算機(jī)學(xué)院 </p><p><b>  摘要</b></p><p>  無紙化考試系統(tǒng)是現(xiàn)代教育的重要標(biāo)志,讓考試的結(jié)果更加的合理、公正、公平,也可以節(jié)約人力成本。高校在線考試系統(tǒng),常用客戶機(jī)/服務(wù)器(C/S)型的MIS型架構(gòu),或基于Web使用瀏覽器/

2、服務(wù)器 (B/S)的架構(gòu)。C/S架構(gòu)的在線考試系統(tǒng),試題存放在遠(yuǎn)程服務(wù)器上,客戶端安裝考試應(yīng)用程序和數(shù)據(jù)庫客戶機(jī)配置,每次考試時(shí)需對(duì)客戶端進(jìn)行安裝、配置。而采用B/S架構(gòu)的考試系統(tǒng),通過與B/S結(jié)構(gòu)的數(shù)據(jù)庫管理系統(tǒng)結(jié)合可實(shí)現(xiàn)瘦客戶機(jī),系統(tǒng)維護(hù)僅需在服務(wù)器端進(jìn)行。故開發(fā)了基于B/S的在線考試系統(tǒng)。網(wǎng)絡(luò)應(yīng)用軟件運(yùn)行的模式主要有兩類:C/S和B/S模式。前者主要的缺點(diǎn)是維護(hù)、升級(jí)相對(duì)比較麻煩,費(fèi)用也比較高;B/S(Browser/Server

3、)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW 瀏覽器來實(shí)現(xiàn),極少部分事務(wù)邏輯在前端 (Browser)實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn)。這樣大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體成本。</p><p>  本論文的內(nèi)容就是設(shè)計(jì)一個(gè)基于java的B/S結(jié)構(gòu)的計(jì)算機(jī)考試系統(tǒng),可以基本實(shí)現(xiàn)學(xué)生、教師以及管理員所需要的功能。在這個(gè)B/S結(jié)構(gòu)的設(shè)

4、計(jì)中,學(xué)生通過計(jì)算機(jī)網(wǎng)絡(luò)登入系統(tǒng),實(shí)時(shí)提交解答。系統(tǒng)能保存結(jié)果,供教師披閱,并能自動(dòng)根據(jù)條件對(duì)客觀題進(jìn)行判分,還能對(duì)分?jǐn)?shù)進(jìn)行統(tǒng)計(jì)、管理,協(xié)助教師找出教學(xué)中存在的問題,滿足任何授權(quán)的考生隨時(shí)隨地考試并迅速獲得成績的需求,同時(shí)也大大減輕了教師出題、監(jiān)考和判卷等繁重的工作量。</p><p>  關(guān)鍵字:J2EE;java;MVC;在線;考試系統(tǒng)</p><p><b>  Abstr

5、act</b></p><p>  Paperless exam is an important symbol of modern education for this kind of exam make the result more reasonable, more just, and release human resource. The online exam system of univer

6、sity, usually uses the C/S MIS architecture, or based web use B/S architecture. In the exam system of C/S architecture, where the papers are stored in the remote Server and the Client must set up the exam application and

7、 configure the database, we must set up and configure the Client every time when do exam. Howeve</p><p>  This graduate project is about the exam system based on java and B/S architecture. It has implemented

8、 the basic function needed by the student, teacher and administrator. In this B/S architecture project, students login the system through web, and commit the answers in real-time. The system can judge the paper and save

9、the result, statistic, manage the points; help the teacher to find the problem in teaching. It allows any student which is authorized to subscribe to exam and gain the result at a</p><p>  key words:J2EE;jav

10、a;MVC;web;exam system</p><p><b>  目 錄</b></p><p><b>  第1章 緒論3</b></p><p><b>  1.1項(xiàng)目背景3</b></p><p>  1.2計(jì)算機(jī)考試系統(tǒng)發(fā)展及現(xiàn)狀3</p>

11、<p>  1.3國內(nèi)外發(fā)展現(xiàn)狀4</p><p>  1.4研究開發(fā)的目標(biāo)和基本內(nèi)容4</p><p>  1.4.1 系統(tǒng)開發(fā)的主要任務(wù)和目標(biāo)4</p><p>  1.4.2 系統(tǒng)開發(fā)的基本內(nèi)容5</p><p>  1.5 技術(shù)研究背景5</p><p>  第2章 系統(tǒng)技術(shù)介紹及應(yīng)用

12、7</p><p>  2.1 JSP技術(shù)概述及工作原理7</p><p>  2.1.1 JSP技術(shù)概要7</p><p>  2.1.2 JSP的工作原理8</p><p>  2.1.3 JSP與ASP的比較8</p><p>  2.2 JDBC介紹10</p><p>  2

13、.3 MVC模式介紹12</p><p>  2.4 Struts技術(shù)概述及工作原理13</p><p>  2.4.1 Struts技術(shù)概述13</p><p>  2.4.2 Struts的工作原理14</p><p>  2.5 Hibernate技術(shù)概述及工作原理15</p><p>  2.5.1

14、Hibernate技術(shù)概述15</p><p>  2.5.2 Hibernate工作原理16</p><p>  2.6 Tomcat應(yīng)用服務(wù)器介紹17</p><p>  2.7 MySQL數(shù)據(jù)庫介紹19</p><p>  2.7.1 數(shù)據(jù)庫的歷史和發(fā)展19</p><p>  2.7.2 MySQL介

15、紹19</p><p>  2.7.3 MySQL的主要特性20</p><p>  第3章 系統(tǒng)需求分析22</p><p>  3.1系統(tǒng)功能概述22</p><p>  3.2權(quán)限與控制22</p><p>  3.3系統(tǒng)業(yè)務(wù)流程分析23</p><p>  3.3.1業(yè)務(wù)術(shù)

16、語23</p><p>  3.3.2業(yè)務(wù)流程23</p><p>  3.4系統(tǒng)模塊簡介27</p><p>  3.4.1登錄模塊27</p><p>  3.4.2系統(tǒng)管理模塊27</p><p>  3.4.3科目管理模塊28</p><p>  3.4.4題庫管理模塊29

17、</p><p>  3.4.5試卷管理模塊29</p><p>  3.4.6帳戶管理模塊29</p><p>  3.4.7考試管理模塊29</p><p>  3.4.8信息查詢模塊30</p><p>  3.5系統(tǒng)開發(fā)環(huán)境30</p><p>  第4章 系統(tǒng)設(shè)計(jì)31&l

18、t;/p><p>  4.1系統(tǒng)整體架構(gòu)設(shè)計(jì)31</p><p>  4.2系統(tǒng)管理設(shè)計(jì)31</p><p>  4.3題庫管理設(shè)計(jì)37</p><p>  4.4科目管理設(shè)計(jì)38</p><p>  4.5試卷管理設(shè)計(jì)39</p><p>  4.6帳戶管理設(shè)計(jì)39</p>

19、<p>  4.7考試管理設(shè)計(jì)40</p><p>  4.8信息查詢?cè)O(shè)計(jì)41</p><p>  4.9數(shù)據(jù)庫設(shè)計(jì)42</p><p>  第5章 系統(tǒng)實(shí)現(xiàn)45</p><p>  5.1 系統(tǒng)Model層實(shí)現(xiàn)45</p><p>  5.1.1類AdminBean:45</p>

20、;<p>  5.1.2類SchoolBean:45</p><p>  5.1.3類CollegeBean:46</p><p>  5.1.4類ClassBean:46</p><p>  5.1.5類TeacherBean:47</p><p>  5.1.6類StudentBean:47</p>

21、<p>  5.1.7類ExamBean:48</p><p>  5.1.8類PaperBean:49</p><p>  5.1.9類SubjectBean:50</p><p>  5.1.10類TiankongBean:50</p><p>  5.1.11類XuanzeBean:51</p><

22、;p>  5.2系統(tǒng)數(shù)據(jù)訪問對(duì)象DAO層實(shí)現(xiàn)52</p><p>  5.2.1類AdminBeanDAO:52</p><p>  5.2.2類SchoolBeanDAO:52</p><p>  5.2.3類CollegeBeanDAO:53</p><p>  5.2.4類ClassBeanDAO:53</p>

23、;<p>  5.2.5類TeacherBeanDAO:53</p><p>  5.2.6類StudentBeanDAO:53</p><p>  5.2.7類ExamBeanDAO:54</p><p>  5.2.8類PaperBeanDAO:54</p><p>  5.2.9類SubjectBeanDAO:5

24、4</p><p>  5.2.10類TiankongBeanDAO:55</p><p>  5.2.11類XuanzeBeanDAO:55</p><p>  5.3系統(tǒng)中的ACTION類55</p><p>  5.3.1類AccountAction:55</p><p>  5.3.2類AccountM

25、anageAction:56</p><p>  5.3.3類SchoolAction:56</p><p>  5.3.4類CollegeAction:57</p><p>  5.3.5類ClassAction:57</p><p>  5.3.6類TeacherAction:58</p><p>  5

26、.3.7類StudentAction:59</p><p>  5.3.8類ExamAction:59</p><p>  5.3.9類PaperAction:60</p><p>  5.3.10類SubjectAction:61</p><p>  5.3.11類QuestionAction:62</p><

27、p>  5.4系統(tǒng)中的視圖層62</p><p>  第6章 總結(jié)71</p><p><b>  第1章 緒論</b></p><p><b>  1.1項(xiàng)目背景</b></p><p>  無紙化考試系統(tǒng)是現(xiàn)代教育的重要標(biāo)志,這樣的考試讓考試的結(jié)果更加的合理,更加的公正、公平。也讓

28、不必要的人力從中解脫出來,去完成其它的一些事情。學(xué)生通過計(jì)算機(jī)網(wǎng)絡(luò)登入系統(tǒng),實(shí)時(shí)提交解答。系統(tǒng)能保存結(jié)果,供教師披閱,并能自動(dòng)根據(jù)條件對(duì)客觀題進(jìn)行判分,還能對(duì)分?jǐn)?shù)進(jìn)行統(tǒng)計(jì)、管理,協(xié)助教師找出教學(xué)中存在的問題,滿足任何授權(quán)的考生隨時(shí)隨地考試并迅速獲得成績的需求,同時(shí)也大大減輕了教師出題、監(jiān)考和判卷等繁重的工作量。</p><p>  鑒于現(xiàn)在大多數(shù)學(xué)校的計(jì)算機(jī)考試系統(tǒng)基本上都是C/S結(jié)構(gòu),對(duì)時(shí)間、地點(diǎn)以及考試規(guī)模都

29、有很大的限制,而現(xiàn)在的大學(xué)里基本上的學(xué)生都人手一臺(tái)電腦。如果將考試系統(tǒng)做成B/S結(jié)構(gòu)的話就可以將沒有這些方面的限制,可以進(jìn)行大規(guī)模同時(shí)的考試,而且計(jì)算機(jī)可以方便的進(jìn)行考試,不需要進(jìn)行任何的客戶端安裝,只需要有一個(gè)瀏覽器。</p><p>  1.2計(jì)算機(jī)考試系統(tǒng)發(fā)展及現(xiàn)狀</p><p>  20世紀(jì)50年代,電子計(jì)算機(jī)和光電閱讀機(jī)在大規(guī)??荚囍械膹V泛運(yùn)用促進(jìn)了標(biāo)準(zhǔn)化考試的推廣和普及。然而

30、應(yīng)當(dāng)指出,這時(shí)的考試方法仍是傳統(tǒng)的紙筆考試形式。到了2O世紀(jì)末,隨著測試?yán)碚摰耐晟?、?jì)算機(jī)的普及、多媒體技術(shù)的運(yùn)用和經(jīng)濟(jì)的增長,測試界已清楚地看到單一的紙筆考試弊大于利。那么紙筆考試所暴露出來的問題該如何解決?標(biāo)準(zhǔn)化考試還要不要推行?于是專家們開始在測試的方法和手段上下工夫,國外的TOEFL如此,國內(nèi)的CET亦然。這一變化競來得如此之快,可以說是在向一個(gè)時(shí)代告別,即:計(jì)算機(jī)化考試時(shí)代的到來[1]。</p><p>

31、;  1.3國內(nèi)外發(fā)展現(xiàn)狀</p><p>  現(xiàn)在國內(nèi)外都有許多的計(jì)算機(jī)考試系統(tǒng),而CAT(computerized Adaptive Testing,計(jì)算機(jī)自適應(yīng)考試系統(tǒng))是近年來測驗(yàn)研究中引人注目并取得了重大發(fā)展的領(lǐng)域。計(jì)算機(jī)化白適應(yīng)測驗(yàn)(簡稱CAT)是在項(xiàng)目反應(yīng)理論的基礎(chǔ)上,建立題庫,然后計(jì)算機(jī)根據(jù)被試的能力水平自動(dòng)地選擇測試題目,并對(duì)被試的所達(dá)到的能力的水平做出判斷的一種全新的測驗(yàn)形式 [2] 。所謂自

32、適應(yīng)測驗(yàn)它的基本思想是“因人施測”,使不同水平被試者都能接受一組跟自己特質(zhì)水平相適應(yīng)的試題。所謂“自適應(yīng)”就是測驗(yàn)本身要自動(dòng)地適應(yīng)被試的具體情況,在被試作答過程中及時(shí)根據(jù)作答資料估出被試的可能水平,并針對(duì)這一水平迅速?zèng)Q策,從大型題庫中調(diào)取難度恰當(dāng)、性能優(yōu)良的題目繼續(xù)施測。直到施測的題目足夠多,測驗(yàn)信息量累計(jì)和達(dá)到指定值為止。</p><p>  如今在美國,CAT已經(jīng)在教育測驗(yàn)、職業(yè)測量、人事測評(píng)等領(lǐng)域中大顯身手

33、,如美國研究生入學(xué)考試(Graduate Record Examination)、工商管理類研究生入學(xué)考試(Graduate for Management and Administration Test)以及全美護(hù)士國家委員會(huì)資格考試(Nurse National Committee License Test)等都已采取了CAT的方式。在信息產(chǎn)業(yè)中,美國Novell公司于1991年成功的應(yīng)用了CAT進(jìn)行認(rèn)證考試,使參加Novell自適應(yīng)

34、考試的人數(shù)超過1,000,000人次。</p><p>  在我國,已經(jīng)出現(xiàn)一些應(yīng)用型的研究,自行編制了一些CAT測驗(yàn),并取得了實(shí)際的運(yùn)用效果,上海電大在上海市計(jì)算機(jī)應(yīng)用能力的考試項(xiàng)目“VB6.0程序設(shè)計(jì)”中已采用了CAT的考試設(shè)計(jì)方法。江西師大小學(xué)數(shù)學(xué)CAT研究、華南理工大的“數(shù)據(jù)結(jié)構(gòu)”自適應(yīng)測試系統(tǒng)的研究也取得了一定的成果。自上世紀(jì)九十年代初期開始,全國大學(xué)英語四、六級(jí)考試委員會(huì)一直致力于項(xiàng)目反應(yīng)理論和“計(jì)算

35、機(jī)自適應(yīng)測驗(yàn)”的研究和開發(fā)。</p><p>  1.4研究開發(fā)的目標(biāo)和基本內(nèi)容</p><p>  1.4.1 系統(tǒng)開發(fā)的主要任務(wù)和目標(biāo)</p><p>  1、實(shí)現(xiàn)保存試題的數(shù)據(jù)庫系統(tǒng)</p><p>  2、實(shí)現(xiàn)在線考試系統(tǒng)的服務(wù)器端及客戶端</p><p>  3、了解試卷批改規(guī)則,實(shí)現(xiàn)客觀題的自動(dòng)判分<

36、/p><p>  4、實(shí)現(xiàn)系統(tǒng)成績查詢功能</p><p>  1.4.2 系統(tǒng)開發(fā)的基本內(nèi)容</p><p>  1、提供數(shù)據(jù)庫訪問權(quán)限給不同人員進(jìn)行試題庫添加、管理,試卷批改,答案輸入;</p><p>  2、從試題庫中生成難度的合理試卷;</p><p>  3、通過網(wǎng)絡(luò)實(shí)現(xiàn)與考生的互動(dòng),隨時(shí)增減試題難度,以便最大

37、限度地考察學(xué)生水平;</p><p>  4、結(jié)合試題難度系數(shù)協(xié)助教師判分。</p><p>  1.5 技術(shù)研究背景</p><p>  J2EE是適用于創(chuàng)建服務(wù)器應(yīng)用程序和服務(wù)的Java 2平臺(tái)企業(yè)版Java2 Platform Enterprise Edition,J2EE),該技術(shù)的基礎(chǔ)就是核心Java平臺(tái)或Java 2平臺(tái)的標(biāo)準(zhǔn)版,J2EE不僅鞏固了標(biāo)準(zhǔn)版

38、中的許多優(yōu)點(diǎn),例如“編寫一次、隨處運(yùn)行”的特性,方便存取數(shù)據(jù)庫的JDBC API、CORBA技術(shù)以及能夠在Intemet應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等等,同時(shí)還提供了對(duì)EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持[3]。J2EE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個(gè)應(yīng)用組件根據(jù)他們所在的層面分布在不同的機(jī)器上,解

39、決了兩層模式(client/server)的弊端.在傳統(tǒng)模式中,客戶端擔(dān)當(dāng)了過多的角色,可能第一次部署時(shí)比較容易,但難于升級(jí),可伸展性也不理想,經(jīng)常是基于某種專有的協(xié)議(通常是某種數(shù)據(jù)庫協(xié)議),重用業(yè)務(wù)邏輯和界面邏輯非常困難.現(xiàn)在J2EE的多層企業(yè)級(jí)應(yīng)用模型將兩層化模型中的不同層面切分成許多層,每個(gè)多層化應(yīng)用能夠?yàn)椴煌姆?wù)提供一</p><p>  本系統(tǒng)采用J2EE進(jìn)行開發(fā),J2EE特別適用于WEB開發(fā),現(xiàn)在

40、最流行的WEB開發(fā)模式是SSH(Struts+Spring+Hibernate)模式,Struts作為視圖層,Spring作為控制層,Hibernate為模型層。這樣寫的程序有很清晰的分層,耦合度低,有利于開發(fā)和維護(hù)。</p><p>  這些框架可以為開發(fā)者提供一個(gè)簡單易用的模型,采用一個(gè)經(jīng)過良好設(shè)計(jì)的開源框架有很多好處:</p><p>  開發(fā)者只需要寫一些必須的代碼。他們不需要直接

41、接觸底層的API。</p><p>  經(jīng)過良好設(shè)計(jì)的框架可以為程序提供清晰的結(jié)構(gòu)并且提高程序的內(nèi)聚性。清晰的結(jié)構(gòu)使得其他人很容易加入項(xiàng)目。</p><p>  一個(gè)容易適用的框架可以通過一些例子和文檔為用戶提供最佳實(shí)踐。</p><p>  使用成功的框架的代碼比自己的代碼容易測試。</p><p>  框架應(yīng)該在需要的時(shí)候才使用,不要為了

42、使用框架而使用框架。所為我的這個(gè)系統(tǒng)使用的是Struts+Hibernate,這兩個(gè)都是比較成熟的開源框架,通過Hibernate做OR映射和對(duì)數(shù)據(jù)庫的訪問。Struts做視圖層,Struts的ActionServlet做控制層。</p><p>  第2章 系統(tǒng)技術(shù)介紹及應(yīng)用</p><p>  2.1 JSP技術(shù)概述及工作原理</p><p>  2.1.1

43、JSP技術(shù)概要</p><p>  在開始介紹JSP之前,我先要介紹兩個(gè)名詞:組件和容器還有servlet。</p><p><b>  組件:</b></p><p>  組件是你的應(yīng)用程序的的組體構(gòu)件。它包括servlets、JavaBeans、JSP、HTML頁面、EJBs以及其它類似的東西。</p><p>&l

44、t;b>  容器:</b></p><p>  容器是那些執(zhí)行組件的應(yīng)用程序。如果你的應(yīng)用程序由JSP和servlet組件構(gòu)成的,那么你就需要一個(gè)具有JSP支持的servlet容器(正式名稱是servlet引擎);如果你的應(yīng)用程序是有EJBs構(gòu)成的,那就需要一個(gè)EJB容器。</p><p><b>  servlet:</b></p>

45、<p>  servlet是一種獨(dú)立于平臺(tái)和協(xié)議的服務(wù)器端的Java應(yīng)用程序,可以動(dòng)態(tài)的生成WEB頁面。servlet由WEB服務(wù)器進(jìn)行加載,該WEB服務(wù)器必須包含支持servlet的java虛擬機(jī)。</p><p><b>  JSP:</b></p><p>  JSP(java server pages)是由SUN公司在servlet基礎(chǔ)上開發(fā)出來的一

46、種動(dòng)態(tài)網(wǎng)頁制作技術(shù),其可使您可以將網(wǎng)頁中的動(dòng)態(tài)部分和靜態(tài)的HTML相分離。您可以使用平常得心應(yīng)手的工具并按照平常的方式來書寫HTML語句。然后,將動(dòng)態(tài)部分用特殊的標(biāo)記嵌入即可,這些標(biāo)記常常以“<%”開始并以“%>”結(jié)束。通常,您要將文件以“.jsp”為擴(kuò)展名,并將它 放置到任何您可以放置普通WEB頁面的路徑下。盡管JSP文件看起來更象是HTML文件而不是Servlet文件,但,事實(shí)上,它恰恰將轉(zhuǎn)換為 Servlet文件,其中的靜態(tài)HTM

47、L僅僅用來輸出Servlet服務(wù)方法返回的信息。如果JSP pages 已經(jīng)被轉(zhuǎn)換為Servlet且Servlet 被編譯進(jìn)而被裝載(在第一次被Request時(shí)),當(dāng)您再次Request 此JSP頁面時(shí),將察覺不到一瞬的延遲。</p><p>  JSP有4個(gè)關(guān)鍵成分:指令(directive)、動(dòng)作(action)、scriptlet和 標(biāo)記庫(tag library)。指令是指那些發(fā)送給JSP容器的消息,它使

48、程序能夠指定頁面的設(shè)置、包含其它資源中的內(nèi)容和指定JSP中使用的定制標(biāo)記庫。動(dòng)作將功能封裝在預(yù)定義的 標(biāo)記中,然后程序員可以將它們(預(yù)定義標(biāo)記)嵌入JSP中。通常根據(jù)發(fā)送給服務(wù)器的 特定客戶請(qǐng)求中的信息來執(zhí)行動(dòng)作。它們還可以創(chuàng)建在JSP scriptlet中使用Java對(duì)象。Scriptlet,即腳本元素(scripting element),使程序員能夠插入與JSP中的組件(和其它Web應(yīng)用程序組件)進(jìn)行交互的Java代碼,以處理請(qǐng)求

49、。標(biāo)記庫是標(biāo)記擴(kuò)展機(jī)制的一部分,它使程序員能夠創(chuàng)建定制的標(biāo)記,這種標(biāo)記使得程序員能夠操作JSP內(nèi)容。[5]</p><p>  2.1.2 JSP的工作原理</p><p>  當(dāng)用戶第一次請(qǐng)求或者刷新一個(gè)JSP頁面時(shí),JSP容器首先是要找到這個(gè)JSP頁面的源代碼文件,然后開始處理,把這個(gè)JSP源文件翻譯成java代碼文件。當(dāng)用戶請(qǐng)求這個(gè)文件時(shí),需要JSP容器來處理這個(gè)文件。[6]<

50、/p><p>  2.1.3 JSP與ASP的比較</p><p>  一般說來,Sun 公司的JavaServer Pages(JSP)和Microsoft的Active Server Pages(ASP)在技術(shù)方面有許多相似之處。兩者都為動(dòng)態(tài)網(wǎng)頁的技術(shù),并且雙方都能夠替代CGI 技術(shù),使網(wǎng)站的開發(fā)時(shí)程能夠大大縮短,在性能上也有較高的表現(xiàn),更重要的一點(diǎn)是,兩者都能夠?yàn)槌绦騿T提供組件設(shè)計(jì)的功能

51、,通過組件設(shè)計(jì),將網(wǎng)頁中邏輯處理部分交由組件負(fù)責(zé)處理(ASP 使用COM 組件、JSP則有JavaBean 組件),而和網(wǎng)頁上的排版、美工分離。</p><p>  盡管Java Server Pages 技術(shù)和Active Server Pages(ASP)在許多方面都很相似,但仍然存在很多不同之處,其中本質(zhì)上的區(qū)別在于:兩者是來源于不同的技術(shù)規(guī)范組織。以下就來比較兩大技術(shù)有哪些不同點(diǎn),而又為各自帶來哪些優(yōu)勢。

52、</p><p><b>  平臺(tái)和服務(wù)器的彈性</b></p><p>  ASP (Active Server Pages)技術(shù)主要在微軟(Microsoft)公司的Windows 平臺(tái)上運(yùn)行,其中包括Windows 2000、Windows XP 和Windows 2003,并且搭配其WEB 服務(wù)器IIS (Internet Information Servic

53、es)。但是,在其他的平臺(tái)運(yùn)行時(shí),不是性能低落,就是根本不支持,因此,當(dāng)在開發(fā)網(wǎng)站系統(tǒng)時(shí),選擇NT+IIS+ASP的體系結(jié)構(gòu)時(shí),未來當(dāng)系統(tǒng)無法負(fù)荷時(shí),也只能繼續(xù)選擇Windows 平臺(tái)的服務(wù)器,無法改寫在性能表現(xiàn)相當(dāng)優(yōu)異的UNIX 平臺(tái)上。</p><p>  JSP (Java Server Pages)技術(shù)主要運(yùn)行在操作系統(tǒng)上的一個(gè)Java Virtual Machine (JVM)虛擬機(jī)器上,因此,它能夠跨

54、越所有的平臺(tái),例如:NT、Windows 2000、Solaris、Linux、OS/390、AIX、HP-UX ,等等,除了能在各式各樣的操作系統(tǒng)上執(zhí)行,并且能搭配現(xiàn)有的WEB服務(wù)器:Apache、IIS、Netscape Enterprise Server ,等等,將靜態(tài)的HTML網(wǎng)頁交由執(zhí)行速度較快的Web Server 處理,而動(dòng)態(tài)產(chǎn)生網(wǎng)頁的部分,就交由JSP Container 來執(zhí)行。由上述可知,JSP (JavaServe

55、r Pages)技術(shù)在跨平臺(tái)的表現(xiàn)比ASP來得更有彈性。</p><p>  WEB 網(wǎng)頁程序員未來在開發(fā)電子商務(wù)平臺(tái)時(shí),就不需要再考慮客戶廠商的操作系統(tǒng)平臺(tái),可更專心于系統(tǒng)功能的開發(fā)。相應(yīng)地,廠商在使用Java Server Pages 技術(shù)開發(fā)的系統(tǒng)平臺(tái)時(shí),不再需要擔(dān)心未來在擴(kuò)充軟、硬件時(shí),是否產(chǎn)生不兼容的問題。光這一點(diǎn),就能為企業(yè)省下一大筆的費(fèi)用,這是JSP 的主要優(yōu)點(diǎn)。</p><p&

56、gt;<b>  開放的開發(fā)環(huán)境</b></p><p>  自從1995 年,Sun 公司已經(jīng)開放技術(shù)與國際Java 組織合作開發(fā)和修改Java 技術(shù)與規(guī)范。JSP應(yīng)用程序接口(API)毫無疑問已經(jīng)取得成功,并隨著Java 組織不斷擴(kuò)大其應(yīng)用的范圍,目前全力發(fā)展Java 技術(shù)的廠商不勝枚舉,例如:最近IBM 公司強(qiáng)力推廣的WebSphere 家族,正是完全支持J2EE 標(biāo)準(zhǔn)而開發(fā)。數(shù)據(jù)庫廠

57、商Oracle 也發(fā)展自己的Application Server 來和自己公司本身數(shù)據(jù)庫產(chǎn)品Oracle 9i 做一緊密的結(jié)合。那也更不用提Amazon 系統(tǒng)的供貨商BEA 公司,它的產(chǎn)品WebLogic也是完全支持Java Server Pages技術(shù)和J2EE 規(guī)范的。</p><p>  相反,ASP 技術(shù)僅依靠微軟本身的推動(dòng),其發(fā)展建立在獨(dú)占、封閉的基礎(chǔ)之上,并且微軟本身的技術(shù)又只允許在微軟相關(guān)平臺(tái)的服務(wù)

58、器上執(zhí)行,因此,在標(biāo)準(zhǔn)方面顯得有點(diǎn)力不從心。</p><p><b>  執(zhí)行性能表現(xiàn)</b></p><p>  ASP 和JSP 在執(zhí)行性能的表現(xiàn)上,有一段顯著的差距,JSP 除了在一開始加載的時(shí)間會(huì)比較久外,之后的表現(xiàn)就遠(yuǎn)遠(yuǎn)比ASP 的表現(xiàn)來得好。原因在于:JSP 在一開始接受到請(qǐng)求時(shí),會(huì)產(chǎn)生一份Servlet 實(shí)體( instance ),它會(huì)先被暫存在內(nèi)存中

59、,我們稱之為持續(xù)( Persistence ),當(dāng)再有相同請(qǐng)求時(shí),這實(shí)體會(huì)產(chǎn)生一個(gè)線程(thread)來服務(wù)它。如果過了一段時(shí)間都不再用到此實(shí)體時(shí), Container 會(huì)自動(dòng)將其釋放,至于時(shí)間的長短,通常都是可以在Container 上自行設(shè)定的。</p><p>  而ASP在每次接收到請(qǐng)求時(shí),都必須要重新編譯,因此,JSP 的執(zhí)行比每次都要編譯執(zhí)行的ASP要快,尤其是程序中存在循環(huán)操作時(shí),JSP 的速度要快

60、上1 到2倍。不過,ASP在這部分的缺陷,將隨ASP+的出現(xiàn)有所改觀,在新版的ASP+技術(shù)中,性能表現(xiàn)上有很大的突破。[7]</p><p>  2.2 JDBC介紹</p><p>  JDBC(Java DataBase Connectivity),是用于執(zhí)行SQL語句的Java應(yīng)用程序接口,是一套API集合,在這個(gè)集合中設(shè)置了許多允許Java程序連接數(shù)據(jù)庫的框架。JDBC由一組用Ja

61、va語言寫成的類和接口組成,是一種連接不同數(shù)據(jù)庫的規(guī)范,其宗旨是讓各數(shù)據(jù)庫開發(fā)商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫訪問類和接口。JDBC與Java結(jié)合,使用戶可以很容易的把SQL語句傳送到任何關(guān)系型數(shù)據(jù)庫中,程序員用它編寫的數(shù)據(jù)庫應(yīng)用程序,可以在各種數(shù)據(jù)庫系統(tǒng)上運(yùn)行。[8]這是真正的可移植性的軟件所必須具備的一個(gè)特點(diǎn)。JDBC已經(jīng)被業(yè)界普遍采用,而且是在Java在服務(wù)器端成功的主要貢獻(xiàn)因素。JDBC驅(qū)動(dòng)程序是依靠獨(dú)立的軟件公司開發(fā)的。JD

62、BC驅(qū)動(dòng)程序適合特定的數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)訪問模型,主要的那些數(shù)據(jù)庫系統(tǒng)都有對(duì)應(yīng)的的驅(qū)動(dòng)程序,例如Microsoft、oracle、Informix、Sybase、Postgress、MySQL等等。JDBC與java應(yīng)用程序和數(shù)據(jù)庫的關(guān)系如圖2.2所示.</p><p>  圖2.2 JDBC與java應(yīng)用程序和數(shù)據(jù)庫的關(guān)系</p><p>  JDBC中的主要對(duì)象包括:</p>

63、<p>  class:- DriverManager - 驅(qū)動(dòng)管理,獲得連接</p><p>  interface:</p><p>  -Connection – 連接對(duì)象</p><p>  -Statement – 執(zhí)行SQL語句</p><p>  -PrepareStatement – 執(zhí)行SQL語句,預(yù)編譯,可

64、帶參數(shù)</p><p>  -CallableStatement – 執(zhí)行存儲(chǔ)過程</p><p>  ResultSet – 查詢結(jié)果記錄集</p><p>  ResultSetMetaData – 記錄集的元信息</p><p>  2.3 MVC模式介紹</p><p>  MVC是一種體系結(jié)構(gòu)模式,代表Mod

65、el—View—Controller,是應(yīng)用于交互式系統(tǒng)的一種體系結(jié)構(gòu)模式。MVC產(chǎn)生于20世紀(jì)70年代Palo—Alto實(shí)驗(yàn)室的Smalltalk編程環(huán)境。MVC模式指導(dǎo)模塊的職責(zé)分配和模塊之間的通信協(xié)議。職責(zé)分配是面向?qū)ο蠓治龊驮O(shè)計(jì)中最重要的工作,協(xié)議設(shè)計(jì)則是相當(dāng)困難的工作。MVC為這兩項(xiàng)工作提供了指導(dǎo),所以意義重大。</p><p>  Model是應(yīng)用程序?qū)ο?,也就是包含?yīng)用程序數(shù)據(jù)和業(yè)務(wù)邏輯的對(duì)象。Mo

66、del對(duì)外表現(xiàn)為一個(gè)對(duì)象,實(shí)際上可以也應(yīng)該是一組子對(duì)象的集合。</p><p>  傳統(tǒng)意義上的View是屏幕對(duì)象,負(fù)責(zé)向用戶顯示交互界面。這個(gè)意義可以進(jìn)行擴(kuò)展,將View視為向外界展現(xiàn)應(yīng)用程序狀態(tài)的接口和界面。</p><p>  所有的用戶輸入都由Controller負(fù)責(zé)處理。在交互式系統(tǒng)中,Controller是導(dǎo)致Model發(fā)生變化的唯一原因,是導(dǎo)致View發(fā)生變化的兩個(gè)原因之一,

67、因此是控制中心。</p><p>  Controller將用戶事件翻譯成為請(qǐng)求,而不是命令。如果機(jī)械地遵循MVC的規(guī)則,Controller的邏輯將十分復(fù)雜。Controller通常需要查詢View和Model才知道如何處理用戶輸入。不要把所有邏輯寫在Controller里。View和Model都是有智能的對(duì)象。可以通知它們,由它們自己決定應(yīng)對(duì)的方式。</p><p>  一個(gè)應(yīng)用程序或

68、者組件只能有一個(gè)Model,但是這個(gè)Model可以對(duì)應(yīng)多個(gè)View。View向Model注冊(cè),要求在Model的數(shù)據(jù)發(fā)生變化時(shí)獲得通知消息。View得到通知消息之后,獲取Model的相應(yīng)數(shù)據(jù),更新自己的顯示。View不向Model發(fā)送消息。</p><p>  一個(gè)View對(duì)應(yīng)一個(gè)Controller。View負(fù)責(zé)創(chuàng)建和初始化Controller,這也是View和Controller關(guān)系密切的原因之一。Contr

69、oller接收用戶輸入,如果有與應(yīng)用程序數(shù)據(jù)無關(guān),而只涉及顯示變化的用戶輸入,Controller直接通知View。</p><p>  Controller和View關(guān)系密切的另一個(gè)原因是現(xiàn)代應(yīng)用程序界面復(fù)雜,靈活多變。因此Controller需要大量了解View的情況,大量查詢View的信息,距離太遠(yuǎn)不利于效率和靈活性,協(xié)議也很難設(shè)計(jì),所以經(jīng)常捆綁在一起。例如,目前基于控件的圖形界面,很多控件實(shí)際上是一個(gè)封裝

70、好的MVC實(shí)體,通過屬性、事件和方法與外界協(xié)同工作,強(qiáng)行拆分反而適得其反。</p><p>  因?yàn)橐粋€(gè)Model對(duì)應(yīng)多個(gè)View,一個(gè)View對(duì)應(yīng)一個(gè)Controller,所以一個(gè)Model對(duì)應(yīng)多個(gè)Controllers。Controller接收外部輸入,是導(dǎo)致Model發(fā)生變化的唯一原因。同時(shí),Model的變化可能導(dǎo)致Controller行為的變化。[9]</p><p>  MVC模

71、式如圖2.3所示。</p><p>  圖2.3 MVC模式圖</p><p>  2.4 Struts技術(shù)概述及工作原理</p><p>  2.4.1 Struts技術(shù)概述</p><p>  Struts最初是由Craig R.McClanahan 創(chuàng)建的,然后在2000年用于Apache Software Foundation(ASF

72、)的Jakarta項(xiàng)目。2001年6月,Struts1.0發(fā)布。那以后,很多人在源代碼和文檔方面對(duì)該項(xiàng)目做出過貢獻(xiàn),Struts得到迅速的發(fā)展。在Craig R.McClanahan將Struts用于Apache Jakarta項(xiàng)目的時(shí)候,Struts就成為了開放源代碼軟件,任何人都可以通過http://jakarta.apache.org/struts 下載到源代碼。</p><p>  Struts是構(gòu)建基于

73、java的Web應(yīng)用程序的首選框架。通過采用模型-視圖-控制器(MVC)設(shè)計(jì)模式,使用Struts可以開發(fā)使用Java Servlets和JavaServer Pages的高性能、面向事務(wù)的Web應(yīng)用程序,并可以解決諸多相關(guān)問題。首先,需要認(rèn)識(shí)到Struts帶來的不僅僅是編程的便利性,Struts還從根本上為Web編程人員構(gòu)思和 構(gòu)建Web應(yīng)用程序提供了一種新的方式。在MVC體系結(jié)構(gòu)中,中心Servlet(被稱為控制器)接收所有應(yīng)用程序

74、的請(qǐng)求。然后控制器將對(duì)請(qǐng)求進(jìn)行處理,同時(shí)準(zhǔn)備視圖(通常是JSP)所需要的任何數(shù)據(jù),并將此數(shù)據(jù)發(fā)給JSP。接著JSP使用由控制器準(zhǔn)備的數(shù)據(jù)生成瀏覽器響應(yīng)。本體系結(jié)構(gòu)中,事務(wù)邏輯和顯示邏輯彼此相互獨(dú)立。[10]</p><p>  在struts框架中,模型分為兩個(gè)部分:</p><p><b>  ·系統(tǒng)的內(nèi)部狀態(tài) </b></p><p&

75、gt;  ·可以改變狀態(tài)的操作(事務(wù)邏輯) </p><p>  內(nèi)部狀態(tài)通常由一組ActinForm JavaBean表示。根據(jù)設(shè)計(jì)或應(yīng)用程序復(fù)雜度的不同,這些Bean可以是自包含的并具有持續(xù)的狀態(tài),或只在需要時(shí)才獲得數(shù)據(jù)(從某個(gè)數(shù)據(jù)庫)。</p><p>  大型應(yīng)用程序通常在方法內(nèi)部封裝事務(wù)邏輯(操作),這些方法可以被擁有狀態(tài)信息的bean調(diào)用。比如購物車bean,它擁有用

76、戶購買商品的信息,可能還有checkOut()方法用來檢查用戶的信用卡,并向倉庫發(fā)定貨信息。</p><p>  小型程序中,操作可能會(huì)被內(nèi)嵌在Action類,它是struts框架中控制器角色的一部分。當(dāng)邏輯簡單時(shí)這個(gè)方法很適合。 </p><p>  建議用戶將事務(wù)邏輯(要做什么)與Action類所扮演的角色(決定做什么)分開。[11]</p><p>  2.4

77、.2 Struts的工作原理</p><p>  Struts應(yīng)用程序的執(zhí)行流如圖2.4.2所示:</p><p>  圖2.4.2 Struts應(yīng)用程序的執(zhí)行流</p><p>  1.瀏覽器向Struts應(yīng)用程序發(fā)出請(qǐng)求,ActionServlet(控制器)對(duì)該請(qǐng)求進(jìn)行處理。</p><p>  2.ActionServlet(控制器)用

78、HTML表單填充ActionForm(視圖)對(duì)象,并調(diào)用其validate()方法。</p><p>  3.ActionServlet(控制器)執(zhí)行Action對(duì)象(控制器)。</p><p>  4.Action(控制器)與模型組件一起為視圖準(zhǔn)備數(shù)據(jù)。</p><p>  5.Action(控制器)將控制權(quán)交給JSP(視圖)。</p><p&

79、gt;  6.JSP(視圖)使用模型數(shù)據(jù)生成對(duì)瀏覽器的響應(yīng)。</p><p>  2.5 Hibernate技術(shù)概述及工作原理</p><p>  2.5.1 Hibernate技術(shù)概述</p><p>  現(xiàn)今的應(yīng)用系統(tǒng)設(shè)計(jì)中,MVC作為主流系統(tǒng)架構(gòu)模式之一,貫穿了 整個(gè)設(shè)計(jì)流程。MVC中的 M,也就是所謂的Model,則可以說是與業(yè)務(wù)邏輯和數(shù)據(jù)邏輯關(guān)聯(lián)最為緊密的

80、部分。而持久層作為Model層中的主要組成,其設(shè)計(jì)的優(yōu)劣勢必對(duì)系統(tǒng)的整體表現(xiàn)產(chǎn)生至關(guān)重要的影響。</p><p>  說到持久層設(shè)計(jì)就必須說到持久層框架,現(xiàn)在有很多優(yōu)秀的實(shí)現(xiàn)版本,其中ORM持久層框架,則是未來的主流。</p><p>  所謂ORM—Object/Relational Mapper,從字面上理解是:對(duì)象—關(guān)系型數(shù)據(jù)映射組件。</p><p>  在

81、java發(fā)展的初級(jí)階段,直接調(diào)用JDBC幾乎是數(shù)據(jù)庫訪問的唯一手段。隨著近年來設(shè)計(jì)思想和Java技術(shù)本身的演化,出現(xiàn)了許多JDBC的封裝技術(shù),這些技術(shù)為我們的數(shù)據(jù)庫訪問層實(shí)現(xiàn)提供了更多的選擇,目前主流的JDBC封裝框架包括:Hibernate、Apache OJB、iBatis,JDO以及J2EE框架中的CMP等。這些框架以優(yōu)良的設(shè)計(jì)大大提高了數(shù)據(jù)庫訪問層的開發(fā)效率,并且通過對(duì)數(shù)據(jù)訪問中各種資源和數(shù)據(jù)的緩存調(diào)度,實(shí)現(xiàn)了更佳的性能。<

82、;/p><p>  Hibernate提供了強(qiáng)大、高性能的對(duì)象到關(guān)系型數(shù)據(jù)庫的持久化服務(wù)。利用Hibernate,開發(fā)人員可以按照J(rèn)ava的基礎(chǔ)語義(包括關(guān)聯(lián)、繼承、多態(tài)、組合以及Java的集合架構(gòu))進(jìn)行持久化開發(fā)。Hibernate提供的HQL(Hibernate Query Language)是面向?qū)ο蟮牟樵冋Z言,它在對(duì)象型數(shù)據(jù)和關(guān)系型數(shù)據(jù)庫之間構(gòu)建了一條快速、高效、便捷的 溝通渠道。</p>&l

83、t;p>  2001年末,Hibernate第一個(gè)正式版本對(duì)外發(fā)布,之后兩年作者Gavin King以靈活快速的迭代發(fā)布,使得Hibernate快速發(fā)展起來。</p><p>  2003年6月8日,Hibernate2發(fā)布,提供了對(duì)大多數(shù)主流數(shù)據(jù)庫的良好支持,提供了完善的 數(shù)據(jù)關(guān)聯(lián)、事務(wù)處理、緩存管理、延遲加載機(jī)制實(shí)現(xiàn),同時(shí)堪稱典范的開發(fā)文檔(Hibernate Reference)也為廣大用戶提供了一份

84、清晰易懂的參考手冊(cè)。</p><p>  2003年末,Hibernate獲得了Jolt2004大獎(jiǎng)并且Hibernate被業(yè)內(nèi)知名的開源組織JBoss收納,成為從屬于JBoss組織的子項(xiàng)目之一。這兩個(gè)時(shí)間確立了Hibernate在Java ORM架構(gòu)中的主導(dǎo)地位。[12]</p><p>  2.5.2 Hibernate工作原理</p><p>  Hibern

85、ate的基礎(chǔ)代碼包括POJO和Hibernate映射文件。</p><p>  POJO在Hibernate語義中理解為數(shù)據(jù)庫表所對(duì)應(yīng)的Domain Object。這里的POJO是所謂的“Plain Ordinary Java Object”,指無格式普通Java對(duì)象,可以簡單地理解為一個(gè)不包含邏輯代碼的值對(duì)象,這樣的類只包含字段的get和set方法。</p><p>  Hibernat

86、e是一種“對(duì)象—關(guān)系型數(shù)據(jù)映射組件”,它使用映射文件將對(duì)象和關(guān)系型數(shù)據(jù)相關(guān)聯(lián)。在Hibernate中,映射文件通常以“.hbm.xml”作為后綴。</p><p>  Hibernate配置文件主要用于配置數(shù)據(jù)庫連接和運(yùn)行時(shí)所需要的各種屬性。主要配置內(nèi)容為:SessionFactory中的數(shù)據(jù)庫URL配置、數(shù)據(jù)庫JDBC驅(qū)動(dòng)配置、數(shù)據(jù)庫用戶名配置、數(shù)據(jù)庫用戶密碼配置、數(shù)據(jù)庫適配器配置,映射文件配置等等。</

87、p><p>  由于Hibernate對(duì)JDBC進(jìn)行的很好的封裝,所以我們并不需要直接通過JDBC操作數(shù)據(jù)庫表,而是通過Hibernate間接使用。</p><p>  首先通過Configuration config = new Configuration().configure();得到Configuration類,Configuration類負(fù)責(zé)管理Hibernate的 配置信息。<

88、;/p><p>  再通過SessionFactory sessionFactory = config.buildSessionFactory();得到sessionFactory,SessionFactory中保存了對(duì)應(yīng)當(dāng)前數(shù)據(jù)庫配置的所有映射關(guān)系,同時(shí)負(fù)責(zé)維護(hù)當(dāng)前二級(jí)數(shù)據(jù)緩存和Statement Pool。</p><p>  Session是Hibernate持久化操作的基礎(chǔ)。這里的Se

89、ssion與傳統(tǒng)意義上的Web層HttpSession沒有什么關(guān)系。Hibernate Session 之與Hibernate,相當(dāng)于JDBC Connection 之與JDBC。</p><p>  Session通過 Session session = sessionFactory.openSession();得到,Session作為貫穿Hibernate的持久化管理器核心,提供了眾多持久化方法,如save、

90、update、delete,find等。通過這些方法我們就可以操作數(shù)據(jù)庫了。</p><p>  Session是一個(gè)輕量級(jí)對(duì)象。通常每一個(gè)Session實(shí)例和一個(gè)數(shù)據(jù)庫事務(wù)綁定,也就是說,每執(zhí)行一個(gè)數(shù)據(jù)庫事務(wù),都應(yīng)該先創(chuàng)建一個(gè)新的Session實(shí)例。如果事務(wù)執(zhí)行中出現(xiàn)異常,應(yīng)該撤銷事務(wù)。不論事務(wù)執(zhí)行成功與否,最后都應(yīng)該調(diào)用Session的close()方法,從而釋放Session實(shí)例占用的資源。[13]<

91、/p><p>  2.6 Tomcat應(yīng)用服務(wù)器介紹</p><p>  學(xué)習(xí)Servlet技術(shù),首先需要有一個(gè)Servlet運(yùn)行環(huán)境,也就是需要有一個(gè)Servlet容器,這里介紹Tomcat。</p><p>  Tomcat服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器,它是Apache軟件基金會(huì)(Apache Software Foundation)的Jakart

92、a項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其他一些公司及個(gè)人共同開發(fā)而成。由于有了Sun的參與和支持, 最新的Servlet和JSP規(guī)范總是能在Tomcat中得到體現(xiàn)。因?yàn)門omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器</p><p>  Tomcat很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載

93、平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。</p><p>  Tomcat是一個(gè)小型的輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。對(duì)于一個(gè)初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置好Apache服務(wù)器,可利用它響應(yīng)對(duì)HTML頁面的訪問請(qǐng)求。實(shí)際上Tomcat 部分是Ap

94、ache服務(wù)器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat時(shí),它實(shí)際上作為一個(gè)與Apache獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。[14]</p><p>  圖2.6是Tomcat服務(wù)器接受客戶請(qǐng)求并做出響應(yīng)的過程。</p><p>  圖2.6 Tomcat服務(wù)器接受客戶請(qǐng)求并做出響應(yīng)的過程</p><p>  1客戶端(通常都是瀏覽器)訪問Web服務(wù)器,發(fā)送HTPP請(qǐng)求

95、。</p><p>  2 Web服務(wù)器接收到請(qǐng)求后,傳遞給Servlet容器。</p><p>  3 Servlet容器加載Servlet,產(chǎn)生Servlet實(shí)例后,向其傳遞表示請(qǐng)求和響應(yīng)的對(duì)象。</p><p>  4 Servlet實(shí)例使用請(qǐng)求對(duì)象得到客戶端的請(qǐng)求信息,然后進(jìn)行相應(yīng)的處理。</p><p>  5 Servlet實(shí)例將

96、處理結(jié)果通過響應(yīng)對(duì)象發(fā)送回客戶端,容器負(fù)責(zé)確保響應(yīng)正確送出,同時(shí)將控制返回給Web服務(wù)器。[15]</p><p>  2.7 MySQL數(shù)據(jù)庫介紹</p><p>  2.7.1 數(shù)據(jù)庫的歷史和發(fā)展</p><p>  在當(dāng)前信息時(shí)代,作為信息管理的主要工具——數(shù)據(jù)庫技術(shù)得到了廣泛的應(yīng)用。數(shù)據(jù)庫一詞起源于20世紀(jì)50年代,當(dāng)時(shí)美國的研究人員為了戰(zhàn)爭的需要,把各種情

97、報(bào)集中在一起存儲(chǔ)在計(jì)算機(jī)中,稱為 Information Base 或 DataBase。半個(gè)世紀(jì)以來,數(shù)據(jù)庫技術(shù)已經(jīng)成為計(jì)算機(jī)領(lǐng)域中最重要的技術(shù)之一,它是軟件學(xué)科中一個(gè)獨(dú)立的分支。數(shù)據(jù)庫技術(shù)的出現(xiàn)使得計(jì)算機(jī)應(yīng)用滲透到工業(yè)、農(nóng)業(yè)、商業(yè)、行政、科研、工程、國防、軍事、文化教育等各個(gè)部門,滲透到社會(huì)的每個(gè)角落,并且正改變著人們的工作和生活方式。管理信息系統(tǒng)、辦公自動(dòng)化系統(tǒng)、決策支持系統(tǒng)等都是使用的數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)應(yīng)用系統(tǒng)。數(shù)據(jù)庫技術(shù)已經(jīng)成

98、為了信息高速公路的核心組件技術(shù)[16]。當(dāng)前主要的數(shù)據(jù)庫產(chǎn)品有IBM的DB2當(dāng)前版本為9,Microsoft 的 SQL Server當(dāng)前版本為2005,Oracle數(shù)據(jù)庫當(dāng)前版本為11g,和開源社區(qū)的MySQL當(dāng)前版本為5.1。</p><p>  2.7.2 MySQL介紹</p><p><b>  MySQL:</b></p><p>

99、  MySQL是最受歡迎的開源SQL數(shù)據(jù)庫管理系統(tǒng),它由MySQL AB開發(fā)、發(fā)布和支持。MySQL AB是一家基于MySQL開發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來結(jié)合開源價(jià)值和方法論的第二代開源公司。MySQL是MySQL AB的注冊(cè)商標(biāo)。</p><p>  MySQL網(wǎng)站(http://www.mysql.com)提供了關(guān)于MySQL和MySQL AB的最新的消息。</p>&

100、lt;p>  MySQL是一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng)</p><p>  關(guān)系數(shù)據(jù)庫把數(shù)據(jù)存放在分立的表格中,這比把所有數(shù)據(jù)存放在一個(gè)大倉庫中要好得多,這樣做將增加你的速度和靈活性?!癕ySQL”中的SQL代表“Structured Query Language”(結(jié)構(gòu)化查詢語言)。SQL是用于訪問數(shù)據(jù)庫的最通用的標(biāo)準(zhǔn)語言,它是由ANSI/ISO定義的SQL標(biāo)準(zhǔn)。SQL標(biāo)準(zhǔn)發(fā)展自1986年以來,已經(jīng)存在多個(gè)版本

101、:SQL-86,SQL-92,SQL:1999,SQL:2003,其中SQL:2003是該標(biāo)準(zhǔn)的當(dāng)前版本。</p><p>  MySQL是一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。SQL(結(jié)構(gòu)化查詢語言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫語言。MySQL是以一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序mysqld和很多不同的客戶程序和庫組成。SQL是一種標(biāo)準(zhǔn)化的語言,它使得存儲(chǔ)、更新和存取信息更容易。例

102、如,你能用SQL語言為一個(gè)網(wǎng)站檢索產(chǎn)品信息及存儲(chǔ)顧客信息,同時(shí)MySQL也足夠快和靈活以允許你存儲(chǔ)記錄文件和圖像。[17]</p><p>  MySQL 主要目標(biāo)是快速、健壯和易用。最初是因?yàn)槲覀冃枰@樣一個(gè)SQL服務(wù)器,它能處理與任何可不昂貴硬件平臺(tái)上提供數(shù)據(jù)庫的廠家在一個(gè)數(shù)量級(jí)上的大型數(shù)據(jù)庫,但速度更快,MySQL就開發(fā)出來。</p><p>  2.7.3 MySQL的主要特性&l

103、t;/p><p>  ·使用核心線程的完全多線程。這意味著它能很容易地利用多CPU。</p><p>  ·C、C++、Eiffel、Java、Perl、PHP、Python API</p><p>  ·可運(yùn)行在不同的平臺(tái)上。</p><p>  ·多種列類型:1、2、3、4、和8字節(jié)長度的有符號(hào)/無符號(hào)

104、整數(shù)、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET和ENUM類型。</p><p>  ·利用一個(gè)優(yōu)化的一遍掃描多重聯(lián)結(jié)(one-sweep multi-join)非??焖俚剡M(jìn)行聯(lián)結(jié)(join)。</p><p>  ·通過一個(gè)高度優(yōu)化的類庫實(shí)現(xiàn)SQL函數(shù)庫并且像他們能

105、達(dá)到的一樣快速,通常在查詢初始化后不應(yīng)該有任何內(nèi)存分配。</p><p>  ·一個(gè)非常快速的基于線程的內(nèi)存分配系統(tǒng)。</p><p>  ·函數(shù)名不會(huì)與表或列名沖突。例如ABS是一個(gè)有效的列名字。對(duì)函數(shù)調(diào)用的唯一限制是函數(shù)名與隨后的“(”不能有空格</p><p>  ·支持ANSI SQL的LEFT OUTER JOIN和ODBC語

106、法。</p><p>  ·所有MySQL程序可以用選項(xiàng)--help或-?獲得聯(lián)機(jī)幫助。</p><p>  ·服務(wù)器能為客戶提供多種語言的出錯(cuò)消息</p><p>  第3章 系統(tǒng)需求分析</p><p><b>  3.1系統(tǒng)功能概述</b></p><p>  隨著網(wǎng)絡(luò)

107、的發(fā)展,越來越多的應(yīng)用被移植到網(wǎng)絡(luò)上,有人預(yù)言網(wǎng)絡(luò)操作系統(tǒng)將會(huì)替代現(xiàn)在的桌面操作系統(tǒng)。采用B/S結(jié)構(gòu)的WEB應(yīng)用程序具有瘦客戶端的特點(diǎn),它不需要像C/S結(jié)構(gòu)的桌面應(yīng)用程序那樣進(jìn)行繁瑣和費(fèi)時(shí)的安裝,你只需要一個(gè)瀏覽器便可以使用WEB應(yīng)用程序。但是WEB應(yīng)用程序也有一定的局限性,因?yàn)樗鼘⒋罅康牟僮饔煞?wù)器完成,這將大大加重服務(wù)器的負(fù)擔(dān),因此大型的WEB應(yīng)用程序需要強(qiáng)大服務(wù)器支持。</p><p>  本系統(tǒng)采用B/S

108、結(jié)構(gòu)設(shè)計(jì)開發(fā),旨在讓用戶通過網(wǎng)絡(luò)瀏覽器實(shí)現(xiàn)對(duì)系統(tǒng)的訪問??梢源蟠鬁p少各個(gè)用戶在時(shí)間和空間上的限制。不同級(jí)別的用戶可以對(duì)系統(tǒng)進(jìn)行不同的管理和操作。這個(gè)系統(tǒng)主要目的是可以讓考試變得更方便,讓改卷變得更輕松,讓管理變得更容易。有了這個(gè)系統(tǒng),學(xué)生可以拿到一臺(tái)計(jì)算機(jī)就可以考試,不必?fù)?dān)心這臺(tái)機(jī)器上是否裝有考試系統(tǒng)。</p><p><b>  3.2權(quán)限與控制</b></p><p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論