已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
摘要目前隨著INTERNET的廣泛使用,網(wǎng)絡(luò)教學(xué)系統(tǒng)被越來越多的應(yīng)用在教學(xué)過程中。越來越多學(xué)校都建立了網(wǎng)絡(luò)答疑系統(tǒng),通過這樣的系統(tǒng),學(xué)生可以在異地訪問教學(xué)資源,不受時間的限制進行學(xué)習(xí)。網(wǎng)絡(luò)課程答疑系統(tǒng)是網(wǎng)絡(luò)教育系統(tǒng)的一個重要組成部分,學(xué)生可以通過這個系統(tǒng)向老師和系統(tǒng)尋求幫助,獲得問題的解答。本次畢業(yè)設(shè)計的題目就是設(shè)計并且實現(xiàn)一個基于WEB的網(wǎng)絡(luò)課程答疑系統(tǒng),為學(xué)生添加在網(wǎng)上遠(yuǎn)程學(xué)習(xí)交流的機會和空間。本系統(tǒng)主要以COREJAVA為主,采用B/S結(jié)構(gòu),底層數(shù)據(jù)庫選用MYSQL,數(shù)據(jù)訪問層采用JDBC,HIBERNATE,頁面模板采用JSP,WEB框架設(shè)計模式采用STRUTSMVC模式,IDE工具采用MYECLIPSE,服務(wù)器采用TOMCAT;該系統(tǒng)的實現(xiàn)可以提高學(xué)生學(xué)習(xí)的效率,使學(xué)生更好地享受WEB服務(wù)給生活帶來的便捷。本文首先介紹了STRUTES,HIBERNATE和JSP的相關(guān)知識。詳細(xì)闡述了系統(tǒng)所要完成的功能和開發(fā)的過程,重點說明了系統(tǒng)設(shè)計過程、關(guān)鍵技術(shù)和關(guān)鍵詞匹配算法。關(guān)鍵詞STRUTS,HIBERNATE,JSP,關(guān)鍵詞匹配算法,MVC模式ABSTRACTWITHTHECURRENTWIDESPREADUSEOFTHEINTERNET,NETWORKSYSTEMSOFTEACHINGAREMOREANDMOREAPPLICATIONSINTHETEACHINGPROCESSMOREANDMORECOLLEAGEHAVASETUPNEWTWORKSYSTEMOFTEACHING,STUDENTCANVISITTHESOURCEOFEDUCATINGANDSTUDYWITHOUTTHETROUBLEOFTIMEANDSPACEBYUSINGTHISSYSTEMNETWORKAUTOMATICQUESTION2研究了相關(guān)文獻中關(guān)于關(guān)鍵字匹配算法方面的的內(nèi)容3學(xué)習(xí)COREJAVA等各種技術(shù)4制定了基于WEB的網(wǎng)絡(luò)課程答疑系統(tǒng)的總體設(shè)計方案5設(shè)計了本系統(tǒng)的各模塊的功能和實現(xiàn)細(xì)則6設(shè)計并實現(xiàn)了基于關(guān)鍵字拆分的匹配算法7設(shè)計了底層數(shù)據(jù)庫的實現(xiàn)本論文主要論述了管理子系統(tǒng)以及匹配算法的詳細(xì)設(shè)計過程。2系統(tǒng)設(shè)計中各種技術(shù)的介紹21核心JAVA介紹在經(jīng)歷了以大型機為代表的集中計算模式和以PC機為代表的分散計算模式之后,互聯(lián)網(wǎng)的出現(xiàn)使得計算模式進入了網(wǎng)絡(luò)計算時代。網(wǎng)絡(luò)計算模式的一個特點是計算機是異構(gòu)的,即計算機的類型和操作系統(tǒng)是不一樣的,例如SUN工作站的硬件是SPARC體系,軟件是UNIX中的SOLARIS操作系統(tǒng),而PC機的硬件是INTEL體系,操作系統(tǒng)是WINDOWS或者是LINUX,因此相應(yīng)的編程語言基本上只是適用于單機系統(tǒng),例如COBOL、FORTRAN、C、C等等;網(wǎng)絡(luò)計算模式的另一個特點是代碼可以通過網(wǎng)絡(luò)在各種計算機上進行遷移,這就迫切需要一種跨平臺的編程語言,使得用它編寫的程序能夠在網(wǎng)絡(luò)中的各種計算機上能夠正常運行,JAVA就是在這種需求下應(yīng)運而生的。正是因為JAVA語言符合了互聯(lián)網(wǎng)時代的發(fā)展要求,才使它獲得了巨大的成功。俗話說“有心栽花花不成,無心插柳柳成蔭“。SUN公司絕沒想到本想用于消費電子產(chǎn)品開發(fā)的編程語言卻率先在網(wǎng)絡(luò)中得到了廣泛應(yīng)用,但是也可以說是“東方不亮西方亮“,正是因為JAVA語言在設(shè)計目標(biāo)上的正確性使得JAVA語言“是金字總會發(fā)光的“。C語言是面向過程的語言,也是使用率非常高的語言;而面向?qū)ο蟮乃枷胍氲骄幊陶Z言之后,C語言就被改造成為面向?qū)ο蟮腃語言,得到了廣泛的應(yīng)用。但是C語言必須兼容C語言,因此C語言是面向過程和面向?qū)ο蠡旌系恼Z言。JAVA語言產(chǎn)生于C語言之后,是完全的面向?qū)ο蟮木幊陶Z言,充分吸取了C語言的優(yōu)點,采用了程序員所熟悉的C和C語言的許多語法,同時又去掉了C語言中指針、內(nèi)存申請和釋放等影響程序健壯性的部分,可以說JAVA語言是站在C語言這個“巨人的肩膀上“前進的。JAVA語言的一個目標(biāo)是跨平臺,因此采用了解釋執(zhí)行而不是編譯執(zhí)行的運行環(huán)境,在執(zhí)行過程中根據(jù)所在的不同的硬件平臺把程序解釋為當(dāng)前的機器碼,實現(xiàn)跨平臺運行。而動態(tài)下載程序代碼的機制完全是為了適應(yīng)網(wǎng)絡(luò)計算的特點,程序可以根據(jù)需要把代碼實時的從服務(wù)器中下載過來執(zhí)行,在此之前還沒有任何一種語言能夠支持這一點。綜合上述,JAVA的生命力體現(xiàn)在如下方面1JAVA產(chǎn)生與流行是INTERNET發(fā)展的客觀要求。2是一門各方面性能都很好的編程語言,它的基本特點是簡單,面向?qū)ο?分布式,解釋的,健壯的,完全的,結(jié)構(gòu)中立的,可移植的,性能很優(yōu)異的,多線程的,動態(tài)的,適合的INTERNET環(huán)境上開發(fā)應(yīng)用系統(tǒng)。3JAVA可以制作大部分網(wǎng)絡(luò)應(yīng)用程序系統(tǒng),而且與如今流行的WWW瀏覽器結(jié)合很好。4JAVA不僅僅是一種各方,更重要的是一種區(qū)別于傳統(tǒng)系統(tǒng),遵守“網(wǎng)絡(luò)就是計算機“信條的平臺技術(shù)。JAVA平臺將面向?qū)ο笙到y(tǒng)擴展成包括程序和數(shù)據(jù)的網(wǎng)絡(luò)計算機NC,而這個平臺的核心就是JAVA虛擬機,許多使JAVA成為萬能開發(fā)平臺的屬性都源于JAVA虛擬機的概念和實現(xiàn)。221JAVA面向?qū)ο蟮乃枷?。JAVA是純面向?qū)ο缶幊?面向?qū)ο蟮娜笤瓌t封裝,繼承,多態(tài)。下面對這三大原則的介紹封裝封裝是一種把代碼和代碼所操作的數(shù)據(jù)捆綁在一起,使這兩者不受外界干擾和誤用的機制。封裝可被理解為一種用做保護的包裝器,以防止代碼和數(shù)據(jù)被包裝器外部所定義的其他代碼任意訪問。對包裝器內(nèi)部代碼與數(shù)據(jù)的訪問通過一個明確定義的接口來控制。封裝代碼的好處是每個人都知道怎樣訪問代碼,進而無需考慮實現(xiàn)細(xì)節(jié)就能直接使用它,同時不用擔(dān)心不可預(yù)料的副作用。在JAVA中,最基本的封裝單元是類,一個類定義著將由一組對象所共享的行為數(shù)據(jù)和代碼。一個類的每個對象均包含它所定義的結(jié)構(gòu)與行為,這些對象就好象是一個模子鑄造出來的。所以對象也叫做類的實例。在定義一個類時,需要指定構(gòu)成該類的代碼與數(shù)據(jù)。特別是,類所定義的對象叫做成員變量或?qū)嵗兞?。操作?shù)據(jù)的代碼叫做成員方法。方法定義怎樣使用成員變量,這意味著類的行為和接口要由操作實例數(shù)據(jù)的方法來定義。由于類的用途是封裝復(fù)雜性,所以類的內(nèi)部有隱藏實現(xiàn)復(fù)雜性的機制。所以JAVA中提供了私有和公有的訪問模式,類的公有接口代表外部的用戶應(yīng)該知道或可以知道的每件東西。私有的方法數(shù)據(jù)只能通過該類的成員代碼來訪問。這就可以確保不會發(fā)生不希望的事情。繼承繼承是指一個對象從另一個對象中獲得屬性的過程。是面向?qū)ο蟪绦蛟O(shè)計的三大原則之二,它支持按層次分類的概念。例如,波斯貓是貓的一種,貓又是哺乳動物的一種,哺乳動物又是動物的一種。如果不使用層次的概念,每個對象需要明確定義各自的全部特征。通過層次分類方式,一個對象只需要在它的類中定義是它成為唯一的各個屬性,然后從父類中繼承它的通用屬性。因此,正是由于繼承機制,才使得一個對象可以成為一個通用類的一個特定實例。一個深度繼承的子類將繼承它在類層次中的每個祖先的所有屬性。繼承與封裝可以互相作用。如果一個給定的類封裝了某些屬性,它的任何子類將會含有同樣得屬性,另加各個子類所有得屬性。這是面向?qū)ο蟪绦蛟趶?fù)雜性上呈線性而非幾何增長的一個重要概念。新的子類繼承其所有祖先的所有屬性。子類和系統(tǒng)中的其他代碼不會產(chǎn)生無法預(yù)料的交互作用。多態(tài)多態(tài)是指一個方法只能有一個名稱,但可以有許多形態(tài),也就是程序中可以定義多個同名的方法,用“一個接口,多個方法“來描述??梢酝ㄟ^方法的參數(shù)和類型引用。22持久層的HIBERNATE的介紹HIBERNATE是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了輕量級的對象封裝,使JAVA程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。它不僅提供了從JAVA類到數(shù)據(jù)表之間的映射,也提供了數(shù)據(jù)查詢和恢復(fù)機制。相對于使用JDBC和SQL來手工操作數(shù)據(jù)庫,HIBERNATE可以大大減少操作數(shù)據(jù)庫的工作量。另外HIBERNATE可以利用代理模式來簡化載入類的過程,這將大大減少利用HIBERNATEQL從數(shù)據(jù)庫提取數(shù)據(jù)的代碼的編寫量,從而節(jié)約開發(fā)時間和開發(fā)成本HIBERNATE可以和多種WEB服務(wù)器或者應(yīng)用服務(wù)器良好集成,如今已經(jīng)支持幾乎所有的流行的數(shù)據(jù)庫服務(wù)器。HIBERNATE具有很大的靈活性,但同時它的體系結(jié)構(gòu)比較復(fù)雜,提供了好幾種不同的運行方式。在輕型體系中,應(yīng)用程序提供JDBC連接,并且自行管理事務(wù),這種方式使用了HIBERNATE的一個最小子集;在全面解決體系中,對于應(yīng)用程序來說,所有底層的JDBC/JTAAPI都被抽象了,HIBERNATE會替你照管所有的細(xì)節(jié)。在本次系統(tǒng)設(shè)計中所有的DAO都應(yīng)用了HIBERNATE技術(shù),大部分利用HQL語言對數(shù)據(jù)庫進行增刪查改,其中只有小部分使用了SQL進行查詢,相比SQL語言而言,HQL使人很直觀的了解所進行的操作,更為對數(shù)據(jù)庫底層不熟悉的人提供了極大的方便。23業(yè)務(wù)層的JAVABEAN的介紹JAVABEAN是一種JAVA語言寫成的可重用組件。為寫成JAVABEAN,類必須是具體的和公共的,并且具有無參數(shù)的構(gòu)造器。JAVABEANS通過提供符合一致性設(shè)計模式的公共方法將內(nèi)部域暴露稱為屬性。眾所周知,屬性名稱符合這種模式,其他JAVA類可以通過自省機制發(fā)現(xiàn)和操作這些JAVABEAN屬性。用戶可以使用JAVABEAN將功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以用JAVA代碼創(chuàng)造的對象進行打包,并且其他的開發(fā)者可以通過內(nèi)部的JSP頁面、SERVLET、其他JAVABEAN、APPLET程序或者應(yīng)用來使用這些對象。用戶可以認(rèn)為JAVABEAN提供了一種隨時隨地的復(fù)制和粘貼的功能,而不用關(guān)心任何改變。雖然JAVABEAN和JAVA之間已經(jīng)有了明確的界限,但在某些方面JAVABEAN和JAVA之間仍然存在著非常明顯的混淆。JAVA確實是能夠為用戶創(chuàng)建可重用的對象,但它卻沒有管理這些對象相互作用的規(guī)則或標(biāo)準(zhǔn)。JAVABEAN通過指定定義對象之間交互作用的機制,以及大部分對象需要支持的常用行為,如持久性和實際處理等,建立了自己需要的組件模型。雖然當(dāng)前的JAVA組件模型也可以運行得很好,但在傳送真正的可重用性和交互操作性上仍然非常有限,JAVA用戶需要做的最多的一件事就是創(chuàng)建APPLET并使得它們在WEB頁面上相互通訊,這并非易事。JAVABEAN提供了一個框架包,使用這個包進行通訊就容易得多了。JAVABEAN組件能夠通過定義好的標(biāo)準(zhǔn)屬性改進性能??傮w而言,JAVABEAN充分發(fā)展了JAVAAPPLET的功能,并結(jié)合了JAVAAWT組件的緊湊性和可重用性。24表現(xiàn)層SERVLET和JSP的介紹241SERVLET和JSP的介紹SERVLET是運行在WEB服務(wù)器或應(yīng)用服務(wù)器上的JAVA程序,它是一個中間層,負(fù)責(zé)連接來自WEB瀏覽器或其他HTTP客戶程序的請求和HTTP服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序??梢詫ERVLET看作是一個含有HTML的JAVA程序SERVLET的工作是執(zhí)行下面的任務(wù)讀取客戶發(fā)送的顯式數(shù)據(jù);讀取由瀏覽器發(fā)送的隱式請求數(shù)據(jù);生成結(jié)果;向客戶發(fā)送顯式數(shù)據(jù)(即文檔);發(fā)送隱式的HTTP響應(yīng)數(shù)據(jù)。我們可以把JSP看作在靜態(tài)頁面上寫JAVA代碼,但其實JSP在服務(wù)器第一次運行的時候被服務(wù)器翻譯為SERVLET,正真運行的是翻譯后的SERVLET。JSP和SERVLET的區(qū)別就如下幾點1JSP以文本為主,主要用于畫界面2JSP可以人工擴充,而SERVLET是固定的3JSP內(nèi)核是SERVLET,所以也是基于HTTP協(xié)議的請求響應(yīng)循環(huán)4由HTML(CSS、XML)、JAVACODE、JSP標(biāo)簽組成5JSP有自定義標(biāo)簽(ASP沒有)6CGI和SERVLET以代碼為主,代碼中嵌文本;JSP中文本中嵌代碼7JSP擅長于表現(xiàn),而短于邏輯;而SERVLET一般用作CONTORLER和DIAPATCH控制和流轉(zhuǎn);所以在JSP中寫界面元素,而邏輯方面由SERVLET完成。8JSP不需要寫JAVA文件、不需要編譯和配置,它被封裝到了容器內(nèi)部9JSP代碼不可重用。242EL和JSTL的介EL全名為EXPRESSIONLANGUAGE,它原本是JSTL1。0為方便存取數(shù)據(jù)所自定義的語言。當(dāng)時EL只能在JSTL標(biāo)簽中使用。到了JSP2。0之后,EL已經(jīng)正式納入成為標(biāo)準(zhǔn)規(guī)范之一。因此,只要是支持SERVLET2。4/JSP2。0的CONTAINER,就都可以在JSP網(wǎng)頁中直接使用EL了。JSTL全名為JAVASERVERPAGESSTANDARDTAGLIBRARY,目前最新的版本為1。2版。JSTL是由JCP(JAVACOMMUNITYPROCESS)所制定的標(biāo)準(zhǔn)規(guī)范,它主要提供給JAVAWEB開發(fā)人員一個標(biāo)準(zhǔn)通用的標(biāo)簽函數(shù)庫。WEB程序員能夠利用JSTL和EL來開發(fā)WEB程序,取代傳統(tǒng)直接在頁面上嵌入JAVA程序(SCRIPTING)的做法,以提高程序的閱讀性,維護性和方便性。JSTL是一個標(biāo)準(zhǔn)的已制定好的標(biāo)簽庫,可以應(yīng)用于各種領(lǐng)域,如基本輸入輸出,流程控制,循環(huán),XML文件剖析,數(shù)據(jù)庫查詢及國際化和文字格式標(biāo)準(zhǔn)化的應(yīng)用等。從表21可以知道,JSTL所提供的標(biāo)簽函數(shù)庫主要分為五大類表21另外,JSTL也支持EL語法,這也是本系統(tǒng)設(shè)計上處理集合迭代的主要方法。24WEB架構(gòu)MVC模式和STRUTS的介紹241MVC模式的優(yōu)先和缺點說道MVC的優(yōu)點,首先,最重要的是應(yīng)該有多個視圖對應(yīng)一個模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問應(yīng)用的要求。例如,在本系統(tǒng)中用戶的注冊有學(xué)生注冊也可能是教師注冊,但對于注冊的處理都是一樣,也就是說注冊的處理是一致的。按MVC設(shè)計模式,一個用戶模型以及多個視圖即可解決問題。這樣減少了代碼的復(fù)制,即減少了代碼的維護量,一旦模型發(fā)生改變,也易于維護。其次,由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這些模型也可直接應(yīng)用于接口的使用。再次,由于一個應(yīng)用被分離為三層,因此有時改變其中的一層就能滿足應(yīng)用的改變。一個應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需改動MVC的模型層??刂茖拥母拍钜埠苡行?,由于它把不同的模型和不同的視圖組合在一起完成不同的請求,因此,控制層可以說是包含了用戶請求權(quán)限的概念。最后,它還有利于軟件工程化管理。由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過工程化、工具化產(chǎn)生管理程序代碼。關(guān)于MVC的缺點,首當(dāng)其沖的是其增加了系統(tǒng)結(jié)構(gòu)和實現(xiàn)的復(fù)雜性。對于簡單的界面,嚴(yán)格遵循MVC,使模型、視圖與控制器分離,會增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過多的更新操作,降低運行效率。另外,視圖與控制器間的過于緊密的連接。視圖與控制器是相互分離,但確實聯(lián)系緊密的部件,視圖沒有控制器的存在,其應(yīng)用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。最后,視圖對模型數(shù)據(jù)的低效率訪問。依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)。對未變化數(shù)據(jù)的不必要的頻繁訪問,也將損害操作性能。242MVC模型簡介模型一(圖21)JSPJAVABEAN,JSP既充當(dāng)控制,又充當(dāng)視圖,以頁面為核心,JSP使用JSPUSEBEAN,他不能夠?qū)崿F(xiàn)不同的頁面,顯示不同的數(shù)據(jù),需要借助于中間類來調(diào)用JAVABEAN的方法才能實現(xiàn)。圖21模型二(圖22)JSPSERVLETJAVABEAN,以控制為核心,JSP只負(fù)責(zé)顯示和收集數(shù)據(jù),SEVLET,連接視圖和模型,將視圖層數(shù)據(jù),發(fā)送給模型層,JAVABEAN,分為業(yè)務(wù)類和數(shù)據(jù)實體,業(yè)務(wù)類處理業(yè)務(wù)數(shù)據(jù),數(shù)據(jù)實體,承載數(shù)據(jù),基本上大多數(shù)的項目都是使用這種MVC的實現(xiàn)模式。圖22STRUTSMVC框架STRUTS是使用MVC的實現(xiàn)模式二來實現(xiàn)的,也就是以控制器為核心。圖23STRUTS提供了一些組件使用MVC開發(fā)應(yīng)用程序1)模型(MODEL)在STRUTS的體系結(jié)構(gòu)中,模型分為兩個部分系統(tǒng)的內(nèi)部狀態(tài)和可以改變狀態(tài)的操作(事務(wù)邏輯)。內(nèi)部狀態(tài)通常由一組ACTINFORMBEAN表示。根據(jù)設(shè)計或應(yīng)用程序復(fù)雜度的不同,這些BEAN可以是自包含的并具有持續(xù)的狀態(tài),或只在需要時才獲得數(shù)據(jù)(從某個數(shù)據(jù)庫)。大型應(yīng)用程序通常在方法內(nèi)部封裝事務(wù)邏輯(操作),這些方法可以被擁有狀態(tài)信息的BEAN調(diào)用。比如購物車BEAN,它擁有用戶購買商品的信息,可能還有CHECKOUT方法用來檢查用戶的信用卡,并向倉庫發(fā)定貨信息。小型程序中,操作可能會被內(nèi)嵌在ACTION類,它是STRUTS框架中控制器角色的一部分。當(dāng)邏輯簡單時這個方法很適合。建議用戶將事務(wù)邏輯(要做什么)與ACTION類所扮演的角色(決定做什么)分開。2)視圖(VIEW)視圖主要由JSP建立,STRUTS包含擴展自定義標(biāo)簽庫(TAGLIB),可以簡化創(chuàng)建完全國際化用戶界面的過程。目前的標(biāo)簽庫包括BEANTAGS、HTMLTAGS、LOGICTAGS、NESTEDTAGS以及TEMPLATETAGS等。3)控制器(CONTROLLER)在STRUTS中,基本的控制器組件是ACTIONSERVLET類中的實例SERVELT,實際使用的SERVLET在配置文件中由一組映射(由ACTIONMAPPING類進行描述)進行定義。對于業(yè)務(wù)邏輯的操作則主要由ACTION、ACTIONMAPPING、ACTIONFORWARD這幾個組件協(xié)調(diào)完成的,其中ACTION扮演了真正的業(yè)務(wù)邏輯的實現(xiàn)者,ACTIONMAPPING與ACTIONFORWARD則指定了不同業(yè)務(wù)邏輯或流程的運行方向。STRUTSCONFIG。XML文件配置控制器。STRUTS框架的處理流程清楚的體現(xiàn)了MVC系統(tǒng)的特點,簡單的STRUTS組件結(jié)構(gòu)如圖2所示。STRUTSCONTROLLERACTIONSERVLET處理客戶請求,利用配置的ACTIONMAPPING對象把請求映射到ACTION處理器對象進行處理。ACTION處理對象訪問ACTIONFORM中的數(shù)據(jù),處理和響應(yīng)客戶請求,它還調(diào)用后臺的BEAN組件,這些組件封裝了具體的業(yè)務(wù)邏輯。ACTION處理器對象根據(jù)處理結(jié)果通知CONTROLLER,CONTROLLER進行下一步的處理。圖233系統(tǒng)所使用工具的介紹31TOMCAT的介紹TOMCAT在嚴(yán)格意義上并不是一個真正的應(yīng)用服務(wù)器,它只是一個可以支持運行SERLVET/JSP的WEB容器,不過TOMCAT也擴展了一些應(yīng)用服務(wù)器的功能,如JNDI,數(shù)據(jù)庫連接池,用戶事務(wù)處理等等。TOMCAT是APACHE組織下JAKARTA項目下的一個子項目,目前TOMCAT被非常廣泛的應(yīng)用在中小規(guī)模的JAVAWEB應(yīng)用中。TOMCAT是一種具有JSP環(huán)境的SERVLET容器。SERVLET容器是代替用戶管理和調(diào)用SERVLET的運行時外殼。作為一個開放源代碼的軟件,JAKARTATOMCAT有著自己獨特的優(yōu)勢首先,它容易得到。事實上,任何人都可以從互聯(lián)網(wǎng)上自由地下載這個軟件。無論從HTTP/JAKARTA。APACHE。ORG還是從其他網(wǎng)站(JAKARTATOMCAT是APACHE軟件基金會開發(fā)的一個開放源碼的應(yīng)用服務(wù)器)。其次,對于開發(fā)人員,特別是JAVA開發(fā)人員,TOMCAT提供了全部的源代碼,包括SERVLET引擎、JSP引擎、HTTP服務(wù)器。無論是對哪一方面感興趣的程序員,都可以從這些由世界頂尖的程序員書寫的代碼中獲得收益。最后,由于源代碼的開放及世界上許多程序員的卓有成效的工作,TOMCAT已經(jīng)可以和大部分的主流服務(wù)器一起工作,而且是以相當(dāng)高的效率一起工作。如以模塊的形式被載入APACHE,以ISAPI形式被載入IIS或PWS,以NSAPI的形式被載入NETSCAPEENTERPRISESERVER。由于JAVA的跨平臺特性,基于JAVA的TOMCAT也具有跨平臺性。TOMCAT的目錄結(jié)構(gòu)首先,下載JAKARTATOMCAT。ZIP包,解壓縮到一個目錄下,如“CTOMCAT”。這時,會得到如下的TOMCAT的目錄結(jié)構(gòu)JAKARTATOMCAT|BINTOMCAT執(zhí)行腳本目錄|COMMON放置一些通用類(如JDBC的驅(qū)動程序等)|CONFTOMCAT配置文件|DOCTOMCAT文檔|LIBTOMCAT運行需要的庫文件(JARS)|LOGSTOMCAT執(zhí)行時的LOG文件|SRCTOMCAT的源代碼|WEBAPPSTOMCAT的主要WEB發(fā)布目錄(存放我們自己的JSP,SERVLET,類)|WORKTOMCAT的工作目錄,TOMCAT將翻譯JSP文件到的JAVA文件和CLASS文件放在這里。表31表41目錄名該目錄內(nèi)的文件的一般功能描述BIN包含有STARTUP。BAT(啟動服務(wù)器)與SHUTDOWN。BAT(關(guān)閉服務(wù)器)文件CONF包含設(shè)置部署在TOMCAT上的WEB應(yīng)用的變量的初始值的設(shè)置文件,包括SERVER。XMLTOMCAT的全局配置文件和WEB。XML(為不同的TOMCAT配置的WEB應(yīng)用設(shè)置缺省值的文件)DOC包含關(guān)于TOMCAT的各種各樣的文檔。COMMON在其LIB目錄下,主要存放如JDBC的驅(qū)動程序等LIB包含被TOMCAT使用的各種各樣的JAR文件。在UNIX上,任何這個目錄中的文件將被附加到TOMCAT的CLASSPATH中。LOGSTOMCAT的LOG文件。SRCSERVLETAPI的源文件。WEBAPPS包含WEB應(yīng)用的程序(JSP、SERVLET和JAVABEAN等)WORK由TOMCAT自動生成,這是TOMCAT放置它運行期間的中間INTERMEDIATE文件諸如編譯的JSP文件地方。如果當(dāng)TOMCAT運行時,你刪除了這個目錄那么將不能夠執(zhí)行包含JSP的頁面。本系統(tǒng)由MYECLIPSE部署至TOMCAT6。0服務(wù)器中。32MYSQL的介紹MYSQL是最受歡迎的開源SQL數(shù)據(jù)庫管理系統(tǒng),它由MYSQLAB開發(fā)、發(fā)布和支持。MYSQLAB是一家基于MYSQL開發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來結(jié)合開源價值和方法論的第二代開源公司。MYSQL是一個數(shù)據(jù)庫管理系統(tǒng)一個數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合。如果要添加、訪問和處理存儲在一個計算機數(shù)據(jù)庫中的數(shù)據(jù),你就需要一個像MYSQL這樣的數(shù)據(jù)庫管理系統(tǒng)。從計算機可以很好的處理大量的數(shù)據(jù)以來,數(shù)據(jù)庫管理系統(tǒng)就在計算機處理中和獨立應(yīng)用程序或其他部分應(yīng)用程序一樣扮演著一個重要的角色。MYSQL是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng)關(guān)系數(shù)據(jù)庫把數(shù)據(jù)存放在分立的表格中,這比把所有數(shù)據(jù)存放在一個大倉庫中要好得多,這樣做將增加你的速度和靈活性?!癕YSQL”中的SQL代表“STRUCTUREDQUERYLANGUAGE”(結(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)存在多個版本SQL86,SQL92,SQL1999,SQL2003,其中SQL2003是該標(biāo)準(zhǔn)的當(dāng)前版本。MYSQ是開源的開源意味著任何人都可以使用和修改該軟件,任何人都可以從INTERNET上下載和使用MYSQL而不需要支付任何費用。如果你愿意,你可以研究其源代碼,并根據(jù)你的需要修改它。本系統(tǒng)采用MYSQL508版本。33MYECLIPSE的介紹說到MYECLIPS先得說下ECLIPSE,ECLIPSE是一個開放源代碼的、基于JAVA的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,ECLIPSE附帶了一個標(biāo)準(zhǔn)的插件集,包括JAVA開發(fā)工具(JAVADEVELOPMENTTOOLS,JDT)。MYECLIPSE是什么簡單而言,MYECLIPSE是ECLIPSE的插件,也是一款功能強大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯。所以作為本次畢業(yè)設(shè)計IDE工具的不二人選。4網(wǎng)絡(luò)課程答疑系統(tǒng)的總體設(shè)計41系統(tǒng)的需求分析項目目標(biāo)本軟件功能大致分為三大模塊學(xué)生模塊,教師模塊和管理員模塊。學(xué)生模塊學(xué)生用戶進行操作的模塊。教師模塊教師用戶進行操作的模塊。管理員模塊管理員用戶進行操作的模塊。具體各用戶需求分析1。學(xué)生用戶的需求分析學(xué)生登錄后可以選擇查看個人資料或者進入答疑系統(tǒng),進入答疑系統(tǒng)后可以提出問題,問題提交給服務(wù)器端,并在服務(wù)器端進行檢索。若檢索成功,則返回答案給客戶端瀏覽器;若沒檢索成功,學(xué)生還能將問題設(shè)置為未解題目等待教師的解答。若教師解答了此題目,當(dāng)學(xué)生下次查看自己問題時即可看到老師回答的答案。2。教師用戶的需求分析教師登錄后可以選擇查看個人資料或者進入答疑系統(tǒng),進入答疑系統(tǒng)后可以查看未解題目,對未解問題的解答,教師還可以進行題庫的管理操作,給題庫添加刪除修改章節(jié),章節(jié)關(guān)鍵字,章節(jié)標(biāo)準(zhǔn)答案,標(biāo)準(zhǔn)答案的關(guān)鍵字。讓題庫能適應(yīng)學(xué)生的要求。3。管理員用戶的需求分析管理員登錄后可以為對用戶的管理操作和個人信息的修改。42系統(tǒng)的總體設(shè)計421系統(tǒng)總結(jié)構(gòu)設(shè)計系統(tǒng)結(jié)構(gòu)采用B/S結(jié)構(gòu)B/S(BROWSER/SERVER)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著INTERNET技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端(BROWSER)實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(SERVER)實現(xiàn),形成所謂三層(3TIER)結(jié)構(gòu)。一個三層架構(gòu)的應(yīng)用程序由三部分組成,這三部分各自分布在網(wǎng)絡(luò)中的不同地方。這三個部分分別是工作站或表示層接口、事務(wù)邏輯、數(shù)據(jù)庫以及與其相關(guān)的程序設(shè)計。在一個典型的三層架構(gòu)應(yīng)用程序中,應(yīng)用程序的用戶工作站包括提供圖形用戶界面(GUI)的程序設(shè)計和具體的應(yīng)用程序入口表格或交互式窗口。事務(wù)邏輯處在局域網(wǎng)(LAN)服務(wù)器或其他共享主機上,它作為響應(yīng)工作站所發(fā)出客戶請求的服務(wù)器,而相對于處于大型機的第三層它是作為客戶端,并且決定需要什么數(shù)據(jù)以及數(shù)據(jù)存儲在哪里。第三層包括數(shù)據(jù)庫以及處理讀寫以及訪問數(shù)據(jù)庫的程序。然而應(yīng)用程序的設(shè)計可能比這個架構(gòu)要復(fù)雜,對于大型程序來說,這個三層模式是一種比較簡便的考慮方法。這種應(yīng)用程序的設(shè)計使用客戶/服務(wù)器模式,各層可以同時開發(fā),并且可以由不同的成員組用不同的語言來開發(fā)。因為各個層次的開發(fā)不會影響其他層次,所以這種模型對于進一步開發(fā)軟件是很方便的。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護與升級的成本和工作量,降低了用戶的總體成本(TCO)。以目前的技術(shù)看,局域網(wǎng)建立B/S結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用,并通過INTERNET/INTRANET模式下數(shù)據(jù)庫應(yīng)用,相對易于把握、成本也是較低的。它是一次性到位的開發(fā),能實現(xiàn)不同的人員,從不同的地點,以不同的接入方式(比如LAN,WAN,INTERNET/INTRANET等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全。特別是在JAVA這樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)管理軟件更是方便、快捷、高效。421系統(tǒng)流程圖系統(tǒng)流程圖如圖41所示圖414。2教師用戶未登陸用戶管理員用戶答案庫人員注冊、登陸注冊、登陸注冊、登陸管理管理管理回答題庫置入問題查詢問題庫學(xué)生用戶管理。1系統(tǒng)用例圖設(shè)計系統(tǒng)用例圖如圖42所示圖42422系統(tǒng)的分層和技術(shù)選用本系統(tǒng)的分層結(jié)構(gòu)以及技術(shù)選用圖43圖43在整體設(shè)計模式上采用STRUTSMVC模式的B/S架構(gòu)各層的技術(shù)選用在表現(xiàn)層選用STRUTS,JSP為主要表現(xiàn)技術(shù)。需在WEB。XML中添加SERVICELOCATOR表示層STRUTSSTRUTSACTION,ACTIONFORM,JSP,STRUTSCONFIGXML,ETCDAOCLASSESJAVABEANHIBERNATESESSIONMANAGEMENT持久層HIBERNATEDATASOURCETRANSACTIONSBUSINESSSERVICECLASSESQUERYLANGUAGESUPPORTANDOTHERHIBERNATESERVICESACTIONSERVLETORGAPACHESTRUTSACTIONACTIONSERVLET1ACTIONSERVLETDO在業(yè)務(wù)層選用JAVABEAN為主要技術(shù),負(fù)責(zé)業(yè)務(wù)的操作。在持久層選用HIBERNATE為主要技術(shù),負(fù)責(zé)對持久對象的操作。由于使用HIBERNATE為持久層,所有與數(shù)據(jù)庫連接的工作只需要在HIBERNATE。CFG。XML配置就行,HIBERNATE。CFG。XML部分代碼如下COMMYSQLJDBCDRIVERJDBCMYSQL/1270013306/QA_SYSROOTSUYUEJIAORGHIBERNATEDIALECTMYSQLDIALECT在數(shù)據(jù)庫層上選用開源的MYSQL為數(shù)據(jù)庫。423各層之間的連接工廠模式。工廠模式主要是為創(chuàng)建對象提供過渡接口,以便將創(chuàng)建對象的具體過程屏蔽隔離起來,達到提高靈活性和低耦合的目的。跟為系統(tǒng)以后的擴展提供了良好接口。以DAOFACTORY為例,/產(chǎn)生DAO的工廠,綁定在線程上面,單例,線程安全。PUBLICCLASSDAOFACTORYPRIVATESTATICTHREADLOCALTHREADLOCALNEWTHREADLOCALPRIVATEDAOFACTORYPUBLICSTATICDAOFACTORYGETINSTANCEDAOFACTORYDAOFACTORYTHREADLOCALGETIFDAOFACTORYNULLDAOFACTORYNEWDAOFACTORYTHREADLOCALSETDAOFACTORYRETURNDAOFACTORYPUBLICOBJECTGETDAOSTRINGDAONAMETHROWSQAEXCEPTIONTRYRETURNCLASSFORNAMEDAONAMENEWINSTANCECATCHEXCEPTIONEXTHROWNEWQAEXCEPTIONEXGLOBALS類代碼如下PUBLICCLASSGLOBALSPUBLICSTATICFINALSTRINGUSER_DAO“COMAHUTQA_SYSTEMDAOIMPLUSERDAOIMPL“PUBLICSTATICFINALSTRINGANSWER_DAO“COMAHUTQA_SYSTEMDAOIMPLANSWERDAOIMPL“PUBLICSTATICFINALSTRINGCHAPTER_DAO“COMAHUTQA_SYSTEMDAOIMPLCHAPTERDAOIMPL“PUBLICSTATICFINALSTRINGQUESTION_DAO“COMAHUTQA_SYSTEMDAOIMPLQUESTIONDAOIMPL“PUBLICSTATICFINALSTRINGSTANDARDANSWER_DAO“COMAHUTQA_SYSTEMDAOIMPLSTANDARDANSWERDAOIMPL“PUBLICSTATICFINALSTRINGADMIN_BIZ“COMAHUTQA_SYSTEMBIZIMPLADMINBIZIMPL“PUBLICSTATICFINALSTRINGSTUDENT_BIZ“COMAHUTQA_SYSTEMBIZIMPLSTUDENTBIZIMPL“PUBLICSTATICFINALSTRINGTEACHER_BIZ“COMAHUTQA_SYSTEMBIZIMPLTEACHERBIZIMPL“PUBLICSTATICFINALSTRINGUSER_BIZ“COMAHUTQA_SYSTEMBIZIMPLUSERBIZUTIL“在業(yè)務(wù)層如果要調(diào)用某個DAO對象,只需寫如下代碼PRIVATEUSERDAOIMPLUDAOUSERDAOIMPLDAOFACTORYGETINSTANCEGETDAOGLOBALSUSER_DAO在ACTION中如果要調(diào)用某個業(yè)務(wù)對象,只需寫如下代碼PRIVATEADMINBIZIMPLBIZADMINBIZIMPLBIZFACTORYGETINSTANCEGETBIZCLASSGLOBALSADMIN_BIZ5系統(tǒng)詳細(xì)設(shè)計系統(tǒng)共分學(xué)生用戶模塊,教師用戶模塊,題庫管理模塊和管理員模塊。51系統(tǒng)類圖設(shè)計511系統(tǒng)實體類圖設(shè)計系統(tǒng)共設(shè)用戶類USER,學(xué)生類STUDENT,教師類TEACHER,管理員類ADMINISTRATOR,問題類QUESTION,答案類ANSWER,章節(jié)類CHAPTER,標(biāo)準(zhǔn)答案類STANDARDANSWER。設(shè)用戶父類USER,學(xué)生類STUDENT,教師類TEACHER,管理員類ADMINISTRATOR繼承自USER。問題類單向關(guān)聯(lián)學(xué)生類,學(xué)生和問題的關(guān)系為1對0到多。答案類單向關(guān)聯(lián)教師類,教師和答案的關(guān)系為1對0到多。章節(jié)類和標(biāo)準(zhǔn)答案類為雙向1對0至多關(guān)系。圖42圖42512DAO接口和實現(xiàn)類圖。系統(tǒng)設(shè)用戶DAO,問題DAO,答案DAO,章節(jié)DAO,標(biāo)準(zhǔn)答案DAO五個DAO,分別定義了對用戶,問題,答案,章節(jié),標(biāo)準(zhǔn)答案的增刪查改。他們各有IMPL類實現(xiàn)他們。圖43圖43513BIZ業(yè)務(wù)接口和實現(xiàn)類圖。業(yè)務(wù)層有用戶業(yè)務(wù)USERBIZ,學(xué)生業(yè)務(wù)STUDENTBIZ,教師業(yè)務(wù)TEACHERBIZ,管理員業(yè)務(wù)ADMINBIZ四個接口,分別實現(xiàn)一般用戶功能,學(xué)生用戶功能,教師用戶功能,管理員功能。分別有IMPL類對其實現(xiàn)圖44圖4452系統(tǒng)數(shù)據(jù)庫設(shè)計521數(shù)據(jù)庫表的設(shè)計本系統(tǒng)共設(shè)用戶表T_USER,問題表T_QUESTION,答案表T_ANSWER章節(jié)表T_CHAPTER,章節(jié)關(guān)鍵字表T_CHAPTER_KEYWORDS。標(biāo)準(zhǔn)答案表T_STANDARDANSWER,標(biāo)準(zhǔn)答案關(guān)鍵字表T_SA_KEYWORDS。圖45圖45522數(shù)據(jù)庫表的建立以T_USER表為例,由于實體類設(shè)計管理員,學(xué)生,教師都有用戶繼承而來,所以建表是需要考慮到表對多態(tài)的支持,因此在用戶表的選擇上采用每個類分層結(jié)構(gòu)一張表TABLEPERCLASSHIERARCHY,有字段TYPE區(qū)分到底是哪個子類表41。表41章節(jié)表答案表問題表用戶表標(biāo)準(zhǔn)答案表章節(jié)關(guān)鍵字表表標(biāo)答關(guān)鍵字表USERID為與任務(wù)業(yè)務(wù)無關(guān)的獨立字段,其優(yōu)點是能確保永遠(yuǎn)不會修改。為此表主鍵約束。類型為BIGINT。TYPE為該類的類型A為管理員,S為學(xué)生,T為教師類型VARCHARVERSION是HIBERNATE的樂觀鎖。類型INTEGER。USERNAME為用戶名。唯一約束。類型VARCHARPASSWORD為用戶密碼。類型VARCHAREMAIL為用戶EMAIL唯一約束。類型VARCHARREALNAME為真實姓名類型VARCHARCLASSNAME為班級名。類型VARCHARTEACHSPECIALITY為所授專業(yè)。類型VARCHAR具體建表SQL建表語言為CREATETABLET_USERUSERIDBIGINTNOTNULL,TYPEVARCHAR255NOTNULL,VERSIONINTNOTNULL,USERNAMEVARCHAR255NOTNULLUNIQUE,PASSWORDVARCHAR255NOTNULL,EMAILVARCHAR255NOTNULLUNIQUE,REALNAMEVARCHAR255,CLASSNAMEVARCHAR255,TEACHSPECIALITYVARCHAR255,PRIMARYKEYUSERID其他表的建立如下T_QUESTION表42表42QUESTIONEID為問題ID,與業(yè)務(wù)無關(guān),為此表主鍵約束。類型為BIGINT。VERSION是HIBERNATE的樂觀鎖,類型INTEGER。ANSWERED為問題是否已回答,類型BOOLEAN。QUESTIONCONTENT為問題內(nèi)容,類型VARCHAR。SFID為此表外鍵約束,引用T_USER的USERID主鍵。SQL建表語句CREATETABLET_QUESTIONQUESTIONIDBIGINTNOTNULLPRIMARYKEY,VERSIONINTNOTNULL,ANSWEREDBIT,QUESTIONCONTENTTEXT,SFIDBIGINT,FOREIGNKEYSFIDREFERENCEST_USERUSERIDT_ANSWER表43表43ANSWERIDD為答案ID,與業(yè)務(wù)無關(guān),為此表主鍵約束。類型為BIGINT。VERSION是HIBERNATE的樂觀鎖。類型INTEGER。ANSWERCONTENT為答案內(nèi)容。類型VARCHAR。QUESTIONED為此表外鍵約束,引用T_QUESTION的QUESTIONID主鍵TFID為此表外鍵約束,引用T_USER的USERID主鍵。SQL建表語句CREATETABLET_ASNWERANSWERIDBIGINTNOTNULLPRIMARYKEY,VERSIONINTNOTNULL,ANSWERCONTENTTEXT,QUESTIONIDBIGINT,TFIDBIGINT,FOREIGNKEYTFIDREFERENCEST_USERUSERID,FOREIGNKEYQUESTIONIDREFERENCEST_QUESTIONQUESTIONIDT_CHAPTER表43表43CHAPTERED為章節(jié)ID,與業(yè)務(wù)無關(guān),為此表主鍵。類型為BIGINT。VERSION是HIBERNATE的樂觀鎖。類型INTEGER。NUMBER為章節(jié)目錄。唯一約束。類型INTEGER。TITLE為章節(jié)標(biāo)題,類型VARCHAR。SQL建表語句CREATETABLET_CHAPTERCHAPTERIDBIGINTNOTNULL,VERSIONINTNOTNULL,NUMBERINTUNIQUE,TITLEVARCHAR50NOTNULL,PRIMARYKEYCHAPTERIDT_CHAPTER_KEYWORDS表44表44FID為此表外鍵約束,引用T_CHAPTER的主鍵。類型為BIGINT。KEYWORD為關(guān)鍵字。類型VARCHAR。FID和KEYWORD為聯(lián)合主鍵。SQL建表語句CREATETABLET_CHAPTER_KEYWORDSFIDBIGINTNOTNULL,KEYWORDVARCHAR255,FOREIGNKEYFIDREFERENCEST_CHAPTERCHAPTERIDT_STANDARDASNWER表45表45SAID為標(biāo)準(zhǔn)答案ID,與業(yè)務(wù)無關(guān),是此表主鍵。類型為BIGINT。QUESTIONCONTENT為問題內(nèi)容。類型VARCHAR。ANSWERCONTENT為答案內(nèi)容。類型VARCHAR。CHAPTERFID為此表外鍵,引用T_CHAPTER的主鍵。SQL建表語句CREATETABLET_STANDARDANSWERSAIDBIGINTNOTNULL,VERSIONINTNOTNULL,QUESTIONCONTENTTEXT,ANSWERCONTENTTEXT,CHAPTERFIDBIGINT,PRIMARYKEYSAID,FOREIGNKEYCHAPTERFIDREFERENCEST_CHAPTERCHAPTERIDT_SA_KEYWORDS表46表46FID為此表外鍵約束,引用T_STANDARDANSWER的主鍵。類型為BIGINT。KEYWORD為關(guān)鍵字。類型VARCHAR。FID和KEYWORD為聯(lián)合主鍵。SQL建表語句CREATETABLET_SA_KEYWORDSFIDBIGINTNOTNULL,KEYWORDVARCHAR255,FOREIGNKEYFIDREFERENCEST_STANDARDANSWERSAID522對象與數(shù)據(jù)庫的映射因為JDBC代碼重復(fù)量大,所以在本系統(tǒng)采用了HIBERNATE技術(shù),使用HIBERNATE技術(shù),對象與數(shù)據(jù)庫的映射只需要在配置文件中實現(xiàn)。以T_USER為例,在實體包下添加USER。XML,在里面添加配置53學(xué)生用戶模塊的設(shè)計學(xué)生功活動圖如下圖63學(xué)生通過帳號密碼登錄,可以選擇進入答疑系統(tǒng)或者學(xué)生信息管理,若進入個人信息管理則可以修改自己的信息。進入答疑系統(tǒng)后可以選擇提問或者對自己的問題進行管理,若在提問時對所提供的答案并不滿意,可以將提問放入問題庫中,在學(xué)生問題管理中可以查看問題的答案,并可以對問題進行刪除操作。圖63531學(xué)生模板大致設(shè)計學(xué)生的一般操作如登錄,注冊,注銷,對應(yīng)系統(tǒng)ACTION,然后根據(jù)類型的不同返回不同的頁面。學(xué)生的其他操作對應(yīng)STUDENTACTION,利用隱藏標(biāo)簽或者超鏈接直接帶參數(shù)調(diào)用不同的方法,在各個方法中,調(diào)用學(xué)生業(yè)務(wù)實現(xiàn)類STUDENTBIZIMPL,STUDENTBIZIMPL再調(diào)用不同的DAOIMPL類實現(xiàn)對象的基本操作以完成業(yè)務(wù)操作,然后根據(jù)STRUTSCONFIG。XML中對應(yīng)的路徑返回頁面。532學(xué)生提問功能的設(shè)計學(xué)生向系統(tǒng)提出問題,調(diào)用STUDENTACTION中的ASKQUESTION方法得到最為匹配的答案集合,并顯實在學(xué)生的瀏覽器上,若學(xué)生對系統(tǒng)給出的答案不滿意,可以調(diào)用STUDENTACION中的ASKTEACHER方法把題目添加到我的問題,等待老師來解決。學(xué)生提問界面圖64圖64學(xué)生查詢完后的界面圖65圖65533學(xué)生問題管理功能的設(shè)計學(xué)生通過此功能可以查詢自己未解的題目,若發(fā)現(xiàn)問題已經(jīng)解答點擊超連接調(diào)用STUDENTACTION中的CHECKANSWER方法就可以查詢老師給出的答案,并查看給出答案老師的資料。最后還能把問題從自己的問題庫中刪除。同樣在頁面上使用了JSTL來給出顯示。學(xué)生問題管理界面圖66圖66534學(xué)生模塊代碼舉例說明以學(xué)生查詢自己以解答案為例學(xué)生點擊查看我的問題連接通過頁面跳轉(zhuǎn)進入STUDENT_QA_CENTER_MYQUESTIONS。JSP??梢钥吹阶约旱乃袉栴},若問題已回答,可以看見問題狀態(tài)成為已解答,并有超鏈接查看答案查看答案我們可以看到這是個帶參數(shù)的超連接,有METHODNAME和QUESTIONID,其中METHODNAME為CHECKANSWER,QUESTIONID為動態(tài)SESSION中QUESTION的QUESTIONID,該連接被SERVLET攔截并調(diào)用STUDENTACTION中的CHECKANSWER方法,方法代碼如下STRINGSTRREQUESTGETPARAMETER“QUESTIONID“LONGQUESTIONIDNEWLONGSTRSYSTEMOUTPRINTLNQUESTIONIDANSWERANSWERNULLQUESTIONQUESTIONNULLTEACHERTEACHERNULLTRYHTTPSESSIONSESSIONREQUESTGETSESSIONANSWERBIZFINDANSWERBYQUESTIONIDQUESTIONIDQUESTIONBIZFINDQUESTIONBYQUESIONIDQUESTIONIDTEACHERBIZFINDTEACHERBYUSERIDANSWERGETTEACHERGETUSERIDSESSIONREMOVEATTRIBUTE“ANSWER“SESSIONREMOVEATTRIBUTE“QUESTION“SESSIONREMOVEATTRIBUTE“TEACHER“SESSIONSETATTRIBUTE“ANSWER“,ANSWERSESSIONSETATTRIBUTE“QUESTION“,QUESTIONSESSIONSETATTRIBUTE“TEACHER“,TEACHERRETURNMAPPINGFINDFORWARD“FINDA
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年畢節(jié)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題帶答案解析
- 2026年湖南工商職業(yè)學(xué)院單招綜合素質(zhì)考試備考試題帶答案解析
- 2026年河北正定師范高等??茖W(xué)校單招職業(yè)技能考試參考題庫帶答案解析
- 2026年河北青年管理干部學(xué)院單招綜合素質(zhì)筆試參考題庫帶答案解析
- 2026年安徽郵電職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性考試參考題庫帶答案解析
- 2026年安徽中澳科技職業(yè)學(xué)院單招綜合素質(zhì)筆試參考題庫帶答案解析
- 2026年保險職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫有答案解析
- 2026年廣西英華國際職業(yè)學(xué)院單招職業(yè)技能筆試備考題庫帶答案解析
- 2026年黑龍江司法警官職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試參考題庫有答案解析
- 私人舞蹈考級培訓(xùn)合同協(xié)議2025年
- 2026 年中職機械基礎(chǔ)(機械基礎(chǔ))試題及答案
- 2025年昆明市呈貢區(qū)城市投資集團有限公司及下屬子公司第二批招聘(11人)考試備考題庫附答案
- “青苗筑基 浙里建證”浙江省建設(shè)投資集團2026屆管培生招聘30人備考核心題庫及答案解析
- 江蘇百校大聯(lián)考2026屆高三語文第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 濃鹽水深度處理及零排放方案
- 黑吉遼2024年高考物理
- 城市照明合同能源管理技術(shù)規(guī)程
- 馬克思主義中國化理論成果
- 永康房地產(chǎn)調(diào)研報告課件
- 《赤壁賦》理解性默寫匯編(超詳細(xì))
- 貴州省安順市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃劃分代碼居民村民委員會
評論
0/150
提交評論