數(shù)據(jù)庫(kù)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  第1章  緒論</b></p><p><b>  1.1選題背景</b></p><p>  Internet是目前世界上最大的計(jì)算機(jī)互聯(lián)網(wǎng)絡(luò),它遍布全球,將世界各地各種規(guī)模的網(wǎng)絡(luò)連接成一個(gè)整體。作為Internet上一種先進(jìn)的,易于被人們所接受的信息檢索手段,World Wide Web(簡(jiǎn)稱WWW)發(fā)展十分迅速

2、,成為目前世界上最大的信息資源寶庫(kù)。據(jù)估計(jì),目前Internet上已有上百萬(wàn)個(gè)Web站點(diǎn),其內(nèi)容范圍跨越了教育科研、文化事業(yè)、金融、商業(yè)、新聞出版、娛樂(lè)、體育等各個(gè)領(lǐng)域,其用戶群十分龐大,因此,建設(shè)一個(gè)好的Web站點(diǎn)對(duì)于一個(gè)機(jī)構(gòu)的發(fā)展十分重要。近年來(lái),隨著網(wǎng)絡(luò)用戶要求的不斷提高及計(jì)算機(jī)科學(xué)的迅速發(fā)展,特別是數(shù)據(jù)庫(kù)技術(shù)在Internet中的廣泛應(yīng)用,Web站點(diǎn)向用戶提供的服務(wù)將越來(lái)越豐富,越來(lái)越人性化。</p><p&

3、gt;  我們發(fā)現(xiàn)這樣一個(gè)事實(shí),一個(gè)用戶在訪問(wèn)一個(gè)網(wǎng)站時(shí)一般來(lái)講只對(duì)該網(wǎng)站的部分內(nèi)容感性趣,而且這種興趣會(huì)持續(xù)一段時(shí)間。這點(diǎn)啟發(fā)了我們,如果能根據(jù)用戶的喜好為不同的用戶顯示其個(gè)性化的頁(yè)面,即著重顯示該用戶感興趣的內(nèi)容,將為用戶節(jié)約大量的檢索時(shí)間,而且這樣的網(wǎng)頁(yè)顯然是更具有吸引力的。一些站點(diǎn)已經(jīng)在這方面作出了一定的嘗試,通常采用的方法是,在用戶登陸時(shí)為其提供一系列的選項(xiàng),使用戶能夠?qū)φ军c(diǎn)進(jìn)行一些自主的設(shè)置。這樣做能夠使站點(diǎn)呈現(xiàn)一定程度的個(gè)

4、性化,但是對(duì)用戶來(lái)講,還是比較煩瑣,而且在用戶了解一個(gè)站點(diǎn)前讓其對(duì)站點(diǎn)進(jìn)行設(shè)置,其結(jié)果未免有些粗糙。于是我們構(gòu)想了這樣一種方案,對(duì)用戶登陸后的動(dòng)作進(jìn)行跟蹤,分析,發(fā)掘用戶點(diǎn)擊的規(guī)律,即用戶先后點(diǎn)擊的關(guān)聯(lián)規(guī)則,這樣,在用戶點(diǎn)擊一個(gè)主題(鏈接)之后,系統(tǒng)能夠自動(dòng)生成一頁(yè)面,其中包含了該主題下用戶經(jīng)常關(guān)注的內(nèi)容(若干鏈接),這樣便在無(wú)須用戶作出任何額外工作的情況下實(shí)現(xiàn)了為用戶量身訂做的個(gè)性化頁(yè)面。</p><p>  

5、要實(shí)現(xiàn)這樣的功能,離不開(kāi)后臺(tái)數(shù)據(jù)庫(kù)的支持。用戶驗(yàn)證信息,收集到的用戶點(diǎn)擊信息,主題層次信息,分析得出的關(guān)聯(lián)規(guī)則表等大量的數(shù)據(jù)都由數(shù)據(jù)庫(kù)管理系統(tǒng)管理。本文中數(shù)據(jù)庫(kù)服務(wù)器端采用了MySql數(shù)據(jù)庫(kù)作為JDBC數(shù)據(jù)源,并以先進(jìn)的JDBC技術(shù)進(jìn)行數(shù)據(jù)庫(kù)存取等操作,使Web與數(shù)據(jù)庫(kù)緊密聯(lián)系起來(lái)。</p><p>  整個(gè)個(gè)性化頁(yè)面生成系統(tǒng)主要由使用Dreamweaver_MX開(kāi)發(fā)的關(guān)聯(lián)規(guī)則采掘系統(tǒng)和利用Freemarker+

6、Tomcat技術(shù)實(shí)現(xiàn)的個(gè)性化Web頁(yè)面生成器兩部分組成。關(guān)聯(lián)</p><p>  規(guī)則采掘系統(tǒng)對(duì)數(shù)據(jù)庫(kù)中的歷史記錄進(jìn)行分析,產(chǎn)生用戶關(guān)聯(lián)規(guī)則表;頁(yè)面生成器則負(fù)責(zé)記錄用戶行為和根據(jù)關(guān)聯(lián)規(guī)則表動(dòng)態(tài)生成用戶個(gè)性化Web頁(yè)面。二者通過(guò)數(shù)據(jù)庫(kù)服務(wù)器和Web服務(wù)器連接。</p><p>  本文作者主要完成Web服務(wù)器端的用戶管理、帖子管理、版面管理、數(shù)據(jù)庫(kù)管理、瀏覽和查找、短消息功能等設(shè)計(jì)、實(shí)現(xiàn)與完

7、善以及整個(gè)實(shí)驗(yàn)網(wǎng)站的組織建立和測(cè)試工作。</p><p>  第2章  系統(tǒng)技術(shù)及運(yùn)行環(huán)境</p><p>  2.1 Freemarker技術(shù)簡(jiǎn)介</p><p>  FreeMarker允許Java servlet保持圖形設(shè)計(jì)同應(yīng)用程序邏輯的分離,這是通過(guò)在模板中密封HTML完成的。模板用servlet提供的數(shù)據(jù)動(dòng)態(tài)地生成 HTML。模板語(yǔ)言是強(qiáng)大的直觀的,編譯

8、器速度快,輸出接近靜態(tài)HTML頁(yè)面的速度。</p><p>  FreeMarker是一個(gè)模板引擎,一個(gè)基于模板生成文本輸出的通用工具,使用純Java編寫。</p><p>  FreeMarker被設(shè)計(jì)用來(lái)生成HTML Web頁(yè)面,特別是基于MVC模式的應(yīng)用程序。</p><p>  雖然FreeMarker具有一些編程的能力,但通常由Java程序準(zhǔn)備要顯示的數(shù)據(jù)

9、,由FreeMarker生成頁(yè)面,通過(guò)模板顯示準(zhǔn)備的數(shù)據(jù)。</p><p>  FreeMarker不是一個(gè)Web應(yīng)用框架,而適合作為Web應(yīng)用框架一個(gè)組件。</p><p>  FreeMarker與容器無(wú)關(guān),因?yàn)樗⒉恢繦TTP或Servlet;FreeMarker同樣可以應(yīng)用于非Web應(yīng)用程序環(huán)境。</p><p>  FreeMarker更適合作為Mode

10、l2框架(如Struts)的視圖組件,你也可以在模板中使用JSP標(biāo)記庫(kù),F(xiàn)reeMarker是免費(fèi)的。</p><p>  Freemarker程序的優(yōu)點(diǎn):</p><p><b>  1、通用目標(biāo)</b></p><p> ?。?)能夠生成各種文本:HTML、XML、RTF、Java源代碼等等。</p><p> ?。?/p>

11、2)易于嵌入到你的產(chǎn)品中:輕量級(jí);不需要Servlet環(huán)境。</p><p>  (3)插件式模板載入器:可以從任何源載入模板,如本地文件、數(shù)據(jù)庫(kù)等等。</p><p> ?。?)你可以按你所需生成文本:保存到本地文件;作為Email發(fā)送;從Web應(yīng)用程序發(fā)送它返回給Web瀏覽器。</p><p><b>  2、強(qiáng)大的模板語(yǔ)言</b><

12、/p><p> ?。?)所有常用的指令:include、if/elseif/else、循環(huán)結(jié)構(gòu)。</p><p> ?。?)在模板中創(chuàng)建和改變變量。</p><p> ?。?)幾乎在任何地方都可以使用復(fù)雜表達(dá)式來(lái)指定值。</p><p> ?。?)命名的宏,可以具有位置參數(shù)和嵌套內(nèi)容。</p><p>  (5)名字空間有

13、助于建立和維護(hù)可重用的宏庫(kù),或者將一個(gè)大工程分成模塊,而不必?fù)?dān)心名字沖突。</p><p> ?。?)輸出轉(zhuǎn)換塊:在嵌套模板片段生成輸出時(shí),轉(zhuǎn)換HTML轉(zhuǎn)義、壓縮、語(yǔ)法高亮等等;你可以定義自己的轉(zhuǎn)換。 </p><p><b>  3、通用數(shù)據(jù)模</b></p><p>  (1)FreeMarker不是直接反射到Java對(duì)象,Jav

14、a對(duì)象通過(guò)插件式對(duì)象封裝,以變量方式在模板中顯示。</p><p>  (2)你可以使用抽象(接口)方式表示對(duì)象(JavaBean、XML文檔、SQL查詢結(jié)果集等等),告訴模板開(kāi)發(fā)者使用方法,使其不受技術(shù)細(xì)節(jié)的打擾 。</p><p><b>  4、為Web準(zhǔn)備</b></p><p>  (1)在模板語(yǔ)言中內(nèi)建處理典型Web相關(guān)任

15、務(wù)(如HTML轉(zhuǎn)義)的結(jié)構(gòu)。</p><p>  (2)能夠集成到Model2 Web應(yīng)用框架中作為JSP的替代。</p><p>  (3)支持JSP標(biāo)記庫(kù)。</p><p>  (4)為MVC模式設(shè)計(jì):分離可視化設(shè)計(jì)和應(yīng)用程序邏輯;分離頁(yè)面設(shè)計(jì)和程序員。</p><p>  5、智能的國(guó)際化和本地化</p><p>

16、;  (1)字符集智能化(內(nèi)部使用UNICODE)。</p><p>  (2)數(shù)字格式本地化敏感。</p><p>  (3)日期和時(shí)間格式本地化敏感。</p><p>  (4)非US字符集可以用作標(biāo)識(shí)(如變量名)。</p><p>  (5)多種不同語(yǔ)言的相同模板。</p><p>  6、強(qiáng)大的XML處理能力&

17、lt;/p><p>  (1)<#recurse> 和<#visit>指令(2.3版本)用于遞歸遍歷XML樹(shù)。</p><p>  (2)在模板中清楚和直覺(jué)的訪問(wèn)XML對(duì)象模型。</p><p>  2.2 MySql技術(shù)簡(jiǎn)介</p><p>  MySql就是關(guān)系數(shù)據(jù)庫(kù)開(kāi)發(fā)工具,數(shù)據(jù)庫(kù)能匯集各種信息以供查詢,存儲(chǔ)和檢索。

18、那么什么叫數(shù)據(jù)庫(kù)呢?數(shù)據(jù)庫(kù)(Database)是由一些有意義和有關(guān)系的數(shù)據(jù)(data)所組合而成。一個(gè)數(shù)據(jù)庫(kù)中,包含了許多條記錄(Record),而每條記錄是由多個(gè)字段(Field)所組成,不同的字段存放這不同的數(shù)據(jù)。所以數(shù)據(jù)庫(kù)的嚴(yán)格定義</p><p>  是一組相關(guān)記錄的集合,而字段則是最基本的數(shù)據(jù)項(xiàng),也是數(shù)據(jù)庫(kù)中最小的單位。在計(jì)算機(jī)中用來(lái)幫我們管理數(shù)據(jù)庫(kù)的系統(tǒng),我們稱之為數(shù)據(jù)庫(kù)管理管理系統(tǒng)(Database

19、 Management System DBMS)。數(shù)據(jù)庫(kù)管理系統(tǒng)是架構(gòu)在一個(gè)或多個(gè)數(shù)據(jù)庫(kù)之上,并針對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行管理運(yùn)用。</p><p>  MySql 的優(yōu)點(diǎn)在于它能使用數(shù)據(jù)表示圖或自定義窗體收集信息,數(shù)據(jù)表示圖提供了一種類似于 Excel 的電子表格,可以使數(shù)據(jù)庫(kù)一目了然。另外,MySql 允許創(chuàng)建自定義報(bào)表用于打印或輸出數(shù)據(jù)庫(kù)中的信息。MySql也提供了數(shù)據(jù)存儲(chǔ)庫(kù),可以使用桌面數(shù)據(jù)庫(kù)文件把數(shù)據(jù)庫(kù)文件

20、置于網(wǎng)絡(luò)文件服務(wù)器,與其他網(wǎng)絡(luò)用戶共享數(shù)據(jù)庫(kù)。如上所述,MySql 作為關(guān)系數(shù)據(jù)庫(kù)開(kāi)發(fā)具備了許多優(yōu)點(diǎn),可以在一個(gè)數(shù)據(jù)</p><p>  中同時(shí)擁有桌面數(shù)據(jù)庫(kù)的便利和關(guān)系數(shù)據(jù)庫(kù)的強(qiáng)大功能。</p><p>  2.3利用JDBC訪問(wèn)數(shù)據(jù)庫(kù)</p><p>  JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)

21、句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫(kù)開(kāi)發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠用純 Java API 編寫數(shù)據(jù)庫(kù)應(yīng)用程序,同時(shí),JDBC也是個(gè)商標(biāo)名。</p><p>  有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語(yǔ)句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問(wèn)Sybase數(shù)

22、據(jù)庫(kù)專門寫一個(gè)程序,為訪問(wèn)Oracle數(shù)據(jù)庫(kù)又專門寫一個(gè)程序,或?yàn)樵L問(wèn)Informix數(shù)據(jù)庫(kù)又編寫另一個(gè)程序等等,程序員只需用JDBC API寫一個(gè)程序就夠了,它可向相應(yīng)數(shù)據(jù)庫(kù)發(fā)送SQL調(diào)用。同時(shí),將Java語(yǔ)言和JDBC結(jié)合起來(lái)使程序員不必為不同的平臺(tái)編寫不同的應(yīng)用程序,只須寫一遍程序就可以讓它在任何平臺(tái)上運(yùn)行,這也是Java語(yǔ)言“編寫一次,處處運(yùn)行”的優(yōu)勢(shì)。</p><p>  Java數(shù)據(jù)庫(kù)連接體系結(jié)構(gòu)是用

23、于Java應(yīng)用程序連接數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)方法。JDBC對(duì)Java程序員而言是API,對(duì)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)連接的服務(wù)提供商而言是接口模型。作為API,JDBC為程序開(kāi)發(fā)提供標(biāo)準(zhǔn)的接口,并為數(shù)據(jù)庫(kù)廠商及第三方中間件廠商實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接提供了標(biāo)準(zhǔn)方法。JDBC使用已有的SQL標(biāo)準(zhǔn)并支持與其它數(shù)據(jù)庫(kù)連接標(biāo)準(zhǔn),如ODBC之間的橋接。JDBC實(shí)現(xiàn)了所有這些面向標(biāo)準(zhǔn)的目標(biāo)并且具有簡(jiǎn)單、嚴(yán)格類型定義且高性能實(shí)現(xiàn)的接口?! ava 具有堅(jiān)固、安全、易于使用、易于

24、理解和可從網(wǎng)絡(luò)上自動(dòng)下載等特性,是編寫數(shù)據(jù)庫(kù)應(yīng)用程序的杰出語(yǔ)言。所需要的只是 Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間進(jìn)行對(duì)話的方法。而 JDBC 正是作為此種用途的機(jī)制,是應(yīng)用程序和數(shù)據(jù)庫(kù)之間的橋梁。</p><p>  二、創(chuàng)建數(shù)據(jù)庫(kù)鏈接(Connection) </p><p>  鏈接用以保持一些關(guān)于正在訪問(wèn)的數(shù)據(jù)的一些狀態(tài)信息,以及鏈接者信息。在本系統(tǒng)中如果要訪問(wèn)數(shù)據(jù),必須首先創(chuàng)建與

25、數(shù)據(jù)庫(kù)的鏈接,其語(yǔ)法如下:</p><p>  Class.forName("com.mysql.jdbc.Driver");</p><p>  Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=123456

26、&autoReconnect=true");</p><p>  這條語(yǔ)句創(chuàng)建了鏈接對(duì)象Conn,接下來(lái): </p><p>  Statement p = conn.createStatement();</p><p>  三、定義數(shù)據(jù)對(duì)象(Record Set)</p><p>  ResultSet rs = null

27、;</p><p><b>  四、操作數(shù)據(jù)庫(kù)</b></p><p>  我們通過(guò)調(diào)用鏈接對(duì)象的ExecuteQuery方法來(lái)將查詢結(jié)果返回給一個(gè)數(shù)據(jù)對(duì)象。例如:</p><p>  rs = p.executeQuery(“select * from class”);</p><p><b>  執(zhí)行查詢操

28、作</b></p><p>  或通過(guò)調(diào)用鏈接對(duì)象的Execute方法進(jìn)行插入、刪除等操作</p><p><b>  例如:</b></p><p>  p.execute(“INSERT INTO tab1 VALUES(1,2)”);</p><p><b>  執(zhí)行插入操作</b>

29、;</p><p>  五、關(guān)閉數(shù)據(jù)對(duì)象和鏈接對(duì)象</p><p>  在使用了數(shù)據(jù)庫(kù)操作對(duì)象之后要關(guān)閉它,因?yàn)樗褂昧艘欢ǖ姆?wù)器資源。通過(guò)調(diào)用方法close實(shí)現(xiàn)關(guān)閉,然后再釋放它。</p><p>  if (rs != null) {</p><p><b>  try {</b></p><p

30、>  rs.close();</p><p>  }catch (Exception e){ }</p><p><b>  }</b></p><p>  ‘關(guān)閉創(chuàng)建的數(shù)據(jù)對(duì)象</p><p>  if (p != null) {</p><p><b>  try {<

31、;/b></p><p>  p.close();</p><p>  }catch (Exception e) { }</p><p><b>  }</b></p><p>  if (conn != null) {</p><p><b>  try {</b>&

32、lt;/p><p>  conn.close();</p><p>  }catch (Exception e) { }</p><p><b>  }</b></p><p><b>  關(guān)閉創(chuàng)建的鏈接對(duì)象</b></p><p>  2.4 SQL語(yǔ)句簡(jiǎn)介</p>

33、<p>  1,SQL 語(yǔ)句簡(jiǎn)介</p><p>  SQL全稱是"結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)",SQL包含4個(gè)</p><p><b>  部分:</b></p><p>  (1)數(shù)據(jù)查詢語(yǔ)言DQL-Data Query Language SELECT</p&

34、gt;<p>  (2)據(jù)操縱語(yǔ)言DQL-Data Manipulation Language INSERT, UPDATE, DELETE </p><p>  (3)數(shù)據(jù)定義語(yǔ)言DQL-Data Definition Language CREATE, ALTER, DROP</p><p>  (4)數(shù)據(jù)控制語(yǔ)言DQL-Data Control Language COMM

35、IT WORK, ROLLBACK </p><p><b>  2,SQL的優(yōu)點(diǎn)</b></p><p><b>  非過(guò)程化語(yǔ)言</b></p><p><b>  統(tǒng)一的語(yǔ)言</b></p><p>  SQL為許多任務(wù)提供了命令,包括:查詢數(shù)據(jù),數(shù)據(jù)更新,在表中插入記錄

36、,在表中修改記錄,在表中刪除記錄,建立,修改和刪除數(shù)據(jù)對(duì)象,控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取,保證數(shù)據(jù)庫(kù)一致性和完整性,以前的數(shù)據(jù)庫(kù)管理系統(tǒng)為</p><p>  上述各類操作提供單獨(dú)的語(yǔ)言,而SQL將全部任務(wù)統(tǒng)一在一種語(yǔ)言中。</p><p>  是所有關(guān)系數(shù)據(jù)庫(kù)的公共語(yǔ)言</p><p>  由于所有主要的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)都支持SQL語(yǔ)言,用戶可將使用SQL的技能從

37、一個(gè)RDBMS轉(zhuǎn)到另一個(gè)。所有用SQL編寫的程序都是可以移植的。SQL是大多數(shù)關(guān)系型數(shù)據(jù)庫(kù)用做查詢語(yǔ)言的語(yǔ)言。它是可以移植的,并且容易學(xué)習(xí)使用,但是所有SQL語(yǔ)句都必須由數(shù)據(jù)庫(kù)服務(wù)器獨(dú)立地執(zhí)行。這就意味著客戶端應(yīng)用必須把每條查詢發(fā)送到數(shù)據(jù)庫(kù)服務(wù)器,等待它處理這個(gè)查詢,接收結(jié)果,做一些運(yùn)算,然后給服務(wù)器發(fā)送另外一條查詢。所有這些東西都會(huì)產(chǎn)生進(jìn)程間通訊,并且如果客戶端在另外一臺(tái)機(jī)器上甚至還會(huì)導(dǎo)致網(wǎng)絡(luò)開(kāi)銷。</p><p&

38、gt;  2.5 Tomcat簡(jiǎn)介</p><p>  1,Tomcat的安裝</p><p>  Aapche組織提供的WEB服務(wù)器組件TOMCAT的安裝方法,雙擊安裝文件,就會(huì)彈出如圖2-1所示的WINDOWS組件向?qū)?duì)話框.在其中選擇文件安裝目錄,然后單擊下一步按鈕,隨后根據(jù)系統(tǒng)提示一步一步的操作即完成TOMCAT的安裝。</p><p>  圖2-1 TOM

39、CAT安裝</p><p>  2,TOMCAT基本設(shè)置</p><p>  在安裝過(guò)程中,配置tomcat的基本設(shè)置,設(shè)置訪問(wèn)端口為80,設(shè)置admin用戶的訪問(wèn)密碼,如下圖所示,虛擬目錄的設(shè)置及其他設(shè)置,需設(shè)置于tomcat下的</p><p>  conf/server.xml文件</p><p>  圖2-2 Tomcat基本設(shè)置&l

40、t;/p><p><b>  2.6 運(yùn)行環(huán)境</b></p><p>  為了保證成績(jī)管理系統(tǒng)運(yùn)行的效率和可靠性,服務(wù)器應(yīng)具有較高的軟硬件配置,客戶端的要求不是很高。此應(yīng)用程序可廣泛運(yùn)行于國(guó)際互聯(lián)網(wǎng)即Internet,也可適用于內(nèi)部的局域網(wǎng)。其運(yùn)行要求如下:</p><p><b>  軟件環(huán)境:</b></p>

41、<p>  客戶端: Windows95/98/2000/XP,Internet Explorer(IE)等。</p><p>  服務(wù)器端:Windows NT/Windows2000,TOMCAT5.0及其以上版本,IE等;或者Windows 2003 SERVER,Personal Web Server(PWS),IE等。</p><p>  數(shù)據(jù)庫(kù):采用MySql5.

42、0,運(yùn)行于服務(wù)器端。</p><p><b>  最低硬件環(huán)境:</b></p><p>  服務(wù)器 CPU:PIII 500以上 ,內(nèi)存:512M以上。</p><p>  客戶機(jī) CPU:P200MMX以上,內(nèi)存:32M以上。</p><p><b>  第3章 需求分析</b></p&

43、gt;<p><b>  3.1 編寫目的</b></p><p>  在網(wǎng)絡(luò)技術(shù)逐漸滲入社會(huì)生活各個(gè)層面的今天,以前網(wǎng)站上的論壇管理系統(tǒng)要用戶登陸以后才能進(jìn)行相關(guān)訪問(wèn)及互動(dòng)。而隨著網(wǎng)絡(luò)互聯(lián)技術(shù)的進(jìn)步,現(xiàn)在網(wǎng)站投票只需打開(kāi)網(wǎng)頁(yè)就可進(jìn)行論壇留言。論壇對(duì)象是很多的,各個(gè)層次都可進(jìn)行論壇訪問(wèn),大至國(guó)家領(lǐng)導(dǎo),小至一個(gè)普通干部,訪問(wèn)和留言從到指定用戶進(jìn)行表格到現(xiàn)在通過(guò)網(wǎng)絡(luò)直接點(diǎn)擊相應(yīng)就可

44、進(jìn)行。網(wǎng)上論壇管理系統(tǒng)可解決游客訪問(wèn)及留言,致使現(xiàn)在幾乎各個(gè)網(wǎng)站都有各種類型網(wǎng)站論壇管理系統(tǒng),用戶可選擇自己的看法。所以我提出了本課題的研究。</p><p><b>  3.2 任務(wù)目標(biāo)</b></p><p>  3.2.1 基本性能</p><p>  系統(tǒng)包括主要的功能:新用戶的注冊(cè),會(huì)員密碼取回,會(huì)員登錄,用戶自己修改信息,管理員刪除

45、用戶,游客瀏覽留言,會(huì)員新增留言,會(huì)員留言回復(fù),管理員刪除留言這些功能,可以應(yīng)付一般的用戶需要。</p><p>  3.2.2 開(kāi)發(fā)目標(biāo)</p><p>  這個(gè)系統(tǒng)預(yù)期的目的是為了做成交互式的網(wǎng)頁(yè),方便客戶端和瀏覽器端之間的交流。通過(guò)論壇,人們能夠相互交流溝通,把疑惑在論壇里公布,大家獻(xiàn)計(jì)獻(xiàn)策,共同學(xué)習(xí),共同進(jìn)步。</p><p>  3.2.3 應(yīng)用目標(biāo)<

46、;/p><p>  網(wǎng)上論壇系統(tǒng)是一個(gè)會(huì)員登錄留言系統(tǒng)。網(wǎng)上游客能夠?yàn)g覽論壇上的帖子,并且能夠注冊(cè)成為用戶。論壇注冊(cè)會(huì)員能夠修改自己的資料信息,申請(qǐng)版主,發(fā)表帖</p><p>  子,讓大家積極參與討論。論壇管理員能夠便于管理論壇,包括瀏覽游客留言,審核留言,對(duì)于不健康或是不利于社會(huì)穩(wěn)定的留言能進(jìn)行刪除操作,會(huì)員管理以及論壇版主管理等等。</p><p><b&

47、gt;  第4章  總體設(shè)計(jì)</b></p><p><b>  4.1系統(tǒng)設(shè)計(jì)思想</b></p><p>  4.1.1網(wǎng)上論壇系統(tǒng)說(shuō)明</p><p>  此網(wǎng)上論壇可以實(shí)現(xiàn):</p><p>  游    客:查看帖子、注冊(cè)新用戶。</p><p>  注冊(cè)

48、用戶:查看帖子、發(fā)新帖子、在線發(fā)布信息、回復(fù)信息、修改個(gè)人資料、在線短消息。</p><p>  管理員:發(fā)布公告、帖子管理、論壇設(shè)置、版面管理、會(huì)員管理、友情連接、短消息管理、數(shù)據(jù)庫(kù)備份。</p><p>  4.1.2網(wǎng)上論壇系統(tǒng)總體分析</p><p>  通過(guò)上面的功能說(shuō)明,我們可以將論壇的制作分為四大部分:</p><p>  會(huì)員

49、注冊(cè)和登陸模塊:這個(gè)模塊的功能,就是新來(lái)網(wǎng)友可以填寫注冊(cè)資料 ,通過(guò)審核后便成為本論壇的正式會(huì)員,并可以以會(huì)員身份登陸論壇。</p><p> ?。?) 版塊及文章顯示模塊:顯示論壇的各大版塊和所有會(huì)員最新發(fā)表的一些文章主題。</p><p>  (3) 發(fā)表文章模塊:為會(huì)員提供發(fā)表文章的地方,以及回復(fù)主題等。</p><p>  (4) 論壇管理模塊:版主以上職務(wù)

50、可以進(jìn)行對(duì)文章處理,置頂,加精華,刪除等,還有就是管理員對(duì)論壇進(jìn)行綜合管理。</p><p>  了解了具體的功能需求后,就可以按模塊的開(kāi)始論壇的設(shè)計(jì)了。當(dāng)然,這些模塊的只是在功能上對(duì)論壇結(jié)構(gòu)的劃分,實(shí)際上并不能夠完全的把他們獨(dú)立出來(lái)</p><p>  進(jìn)行設(shè)計(jì)。對(duì)于這種較小的應(yīng)用,也沒(méi)有必要進(jìn)行完全的模塊化設(shè)計(jì),在良好的規(guī)劃下直接寫程序代碼或許來(lái)的更為簡(jiǎn)單一些。</p>

51、<p>  4.1.2 MVC總體設(shè)計(jì)模式</p><p>  MVC最初是在Smalltalk-80中被用來(lái)構(gòu)建用戶界面的。M代表模型Model, V代表視圖 View, C代表 控制器Controller。</p><p>  MVC的目的是增加代碼的重用率,減少數(shù)據(jù)表達(dá),數(shù)據(jù)描述和應(yīng)用操作的耦合度。 同時(shí)也使得軟件可維護(hù)性,可修復(fù)性,可擴(kuò)展性,靈活性以及封裝性大大提高。&l

52、t;/p><p>  單用戶的應(yīng)用通常是以事件驅(qū)動(dòng)的用戶界面為組織結(jié)構(gòu)的。開(kāi)發(fā)人員用一個(gè)界面工</p><p>  具畫了一個(gè)用戶接口界面,然后編寫代碼根據(jù)用戶輸入去執(zhí)行相應(yīng)的動(dòng)作,許多交互式的開(kāi)發(fā)環(huán)境鼓勵(lì)這么做,因?yàn)樗鼜?qiáng)調(diào)先有界面然后再有功能。一些軟件設(shè)計(jì)模式策略是這樣的,然后經(jīng)常將固定后的代碼融入最后的系統(tǒng)當(dāng)中。導(dǎo)致的結(jié)果就是,程序組織圍繞用戶界面元素和用戶在那些界面元素上的動(dòng)作,數(shù)據(jù)的存

53、儲(chǔ),應(yīng)用的功能以及用來(lái)顯示的代碼都雜亂無(wú)章的纏繞在一起。在單用戶的系統(tǒng)里代碼結(jié)構(gòu)是可以這樣的,因?yàn)橄到y(tǒng)需求不會(huì)頻繁變化。但是對(duì)一個(gè)大的系統(tǒng)如大型Web系統(tǒng),或電子商務(wù)系統(tǒng)來(lái)說(shuō)就不太適用了。</p><p>  通過(guò)把數(shù)據(jù)模式從各種可以被存取和控制的數(shù)據(jù)中分離出來(lái)可以改善分布式系統(tǒng)的設(shè)計(jì)。MVC設(shè)計(jì)模式由三部分組成。模型是應(yīng)用對(duì)象,沒(méi)有用戶界面。視圖表示它在屏幕上的顯示,代表流向用戶的數(shù)據(jù)??刂破鞫x用戶界面對(duì)用戶

54、輸入的響應(yīng)方式,負(fù)責(zé)把用戶的動(dòng)作轉(zhuǎn)成針對(duì)Model的操作。Model 通過(guò)更新View的數(shù)據(jù)來(lái)反映數(shù)據(jù)的變化。</p><p><b>  三者關(guān)系如圖:</b></p><p>  圖4-1. MVC關(guān)系圖</p><p><b>  MVC關(guān)系圖的理解</b></p><p>  圖4-2 M

55、VC的分工與協(xié)作</p><p>  4.2數(shù)據(jù)庫(kù)設(shè)計(jì)思想</p><p>  4.2.1數(shù)據(jù)庫(kù)的選擇</p><p>  MySql 的優(yōu)點(diǎn)在于它能使用數(shù)據(jù)表示圖或自定義窗體收集信息,數(shù)據(jù)表示圖提供了一種類似于 Excel 的電子表格,可以使數(shù)據(jù)庫(kù)一目了然。另外,MySql允許創(chuàng)建自定義報(bào)表用于打印或輸出數(shù)據(jù)庫(kù)中的信息。Access也提供了數(shù)據(jù)存儲(chǔ)庫(kù),可以使用桌面

56、數(shù)據(jù)庫(kù)文件把數(shù)據(jù)庫(kù)文件置于網(wǎng)絡(luò)文件服務(wù)器,與其他網(wǎng)絡(luò)用戶共享數(shù)據(jù)庫(kù)。如上所述,MySql 作為關(guān)系數(shù)據(jù)庫(kù)開(kāi)發(fā)具備了許多優(yōu)點(diǎn),可以在一個(gè)數(shù)據(jù)</p><p>  中同時(shí)擁有桌面數(shù)據(jù)庫(kù)的便利和關(guān)系數(shù)據(jù)庫(kù)的強(qiáng)大功能。</p><p>  4.2.2數(shù)據(jù)庫(kù)設(shè)計(jì)</p><p><b>  表4-1.管理員表</b></p><p&g

57、t;<b>  表4-2.用戶表</b></p><p><b>  表4-3.帖子表</b></p><p><b>  表4-4.投票表</b></p><p>  表4-5.上傳文件表</p><p><b>  表4-6.版塊表</b></p

58、><p><b>  表4-7.短信表</b></p><p>  表4-8.在線用戶表</p><p>  表4-9.封鎖IP表</p><p>  表4-10.論壇公告表</p><p>  表4-11.精華版塊表</p><p><b>  第5章 詳細(xì)設(shè)計(jì)&

59、lt;/b></p><p>  5.1 用戶注冊(cè)功能</p><p><b>  5.1.1人機(jī)界面</b></p><p>  此部分是實(shí)現(xiàn)用戶的注冊(cè)功能。用戶先閱讀注冊(cè)協(xié)議,同意協(xié)議后,通過(guò)填寫注冊(cè)資料,正確填寫后,點(diǎn)擊注冊(cè)按鈕后便可注冊(cè)成為正式的會(huì)員。</p><p><b>  圖5-1 注冊(cè)&

60、lt;/b></p><p>  注冊(cè)資料分必填資料和選填資料,用戶只要把必填資料填寫正確就可以注冊(cè)了。用戶名最多不能超過(guò)16個(gè)字符,而且不允許注冊(cè)重復(fù)的用戶名,當(dāng)用戶輸</p><p>  入想要注冊(cè)的用戶名后,可以點(diǎn)擊后面的檢測(cè)按鈕檢驗(yàn)是否該用戶名已經(jīng)被注冊(cè)過(guò)。性別只能選擇男或女其中一個(gè)。密碼最多不能超過(guò)16位,兩次密碼必須輸入一致,否則不可以注冊(cè)。E-mail必須輸入有效的郵箱

61、地址,以便日后能使用到論文</p><p>  的各種功能。驗(yàn)證碼是系統(tǒng)隨即產(chǎn)生的,只要用戶按照出現(xiàn)的數(shù)字輸入進(jìn)去就可以了。選填資料注冊(cè)時(shí)可以不用填寫,等注冊(cè)成功后,可以在修改用戶資料里隨便修改。本論壇支持自定義外部頭像,而且還支持簽名等。用戶注冊(cè)成功后就可以使用會(huì)員所擁有的一切功能了。</p><p>  5.1.2 操作流程圖</p><p>  圖5-2 注冊(cè)

62、操作流程圖</p><p>  5.2 會(huì)員發(fā)帖功能</p><p><b>  5.2.1人機(jī)界面</b></p><p>  此部分實(shí)現(xiàn)會(huì)員的發(fā)帖以及回帖等功能。登陸的會(huì)員可以在允許會(huì)員發(fā)帖的版塊進(jìn)行發(fā)帖,還可以在普通版塊進(jìn)行回復(fù)主題帖子。游客只能瀏覽帖子,不能發(fā)表帖子和回復(fù)帖子。</p><p><b>

63、  圖5-3 發(fā)帖</b></p><p>  會(huì)員在開(kāi)放的版塊里如果想發(fā)表新的主題,便可直接點(diǎn)擊發(fā)表帖子按鈕。進(jìn)到發(fā)表帖子頁(yè)面后,首先要寫自己想發(fā)表的主題,主題字?jǐn)?shù)不能超過(guò)100漢字,主題可以選擇話題類型,例如分享、原創(chuàng)、灌水、推薦、轉(zhuǎn)貼等等。接下來(lái)可以選擇帖子的表情,這個(gè)是放在帖子的前面。如果會(huì)員想上傳圖片等,就要選擇文件上傳了,大小每個(gè)不能超過(guò)200K,每天限制上傳3個(gè)。正文不能超過(guò)15000字

64、,字體、字號(hào)、字體顏色可以自己設(shè)置,正文還可以插入視頻等。本論壇還為發(fā)帖者提供很多正問(wèn)內(nèi)容的表情,從而豐富了文章的活力。特殊內(nèi)容是變相保護(hù)會(huì)員的發(fā)帖權(quán)益,發(fā)帖人可以設(shè)置內(nèi)容為等級(jí)可見(jiàn),即會(huì)員必須到達(dá)指定的等級(jí)才可以閱讀;回復(fù)可見(jiàn),即會(huì)員必須回復(fù)該主題才可以閱讀;積分可見(jiàn),即會(huì)員必須達(dá)到指定的積分才能閱讀;登陸可見(jiàn),即游客和沒(méi)登陸的會(huì)員是不能閱讀的,必須會(huì)員登陸后方可閱讀等等。正文還可以設(shè)置投票選項(xiàng),用于調(diào)查一下大家對(duì)</p>

65、<p>  某某的一些見(jiàn)解?;蚴墙y(tǒng)計(jì)一下某某數(shù)據(jù)等等。正文寫完后可以先點(diǎn)擊預(yù)覽,覺(jué)得不滿意可以在不滿意的地方再修改一下,直到滿意后,便可點(diǎn)擊發(fā)表了?;貜?fù)帖子只針對(duì)會(huì)員開(kāi)放,游客不可以回復(fù)主題?;貜?fù)帖子有兩種方式:一是快速回復(fù),即簡(jiǎn)單的回復(fù)幾句話,不能設(shè)置字體,沒(méi)有表情,也不能上傳文件等。二是高級(jí)回復(fù),即回復(fù)內(nèi)容比較全面,可以上傳文件,可有表情,也可以設(shè)置字體大小顏色,段落格式。還可以象發(fā)表主題那樣設(shè)置特殊內(nèi)容回復(fù)可見(jiàn),等級(jí)

66、可見(jiàn),積分可見(jiàn)等</p><p>  5.2.2 操作流程圖</p><p>  圖5-4 發(fā)帖操作流程圖</p><p>  5.3 版主管理帖子功能</p><p><b>  5.3.1人機(jī)界面</b></p><p>  此部分主要是版主對(duì)論壇的帖子進(jìn)行綜合管理,刪除、編輯、鎖定、置頂、加

67、精華等等。普通會(huì)員是不可以進(jìn)行此操作的。</p><p><b>  圖5-5 管理帖子</b></p><p><b>  圖5-6 權(quán)限設(shè)置</b></p><p>  版主只可以管理自己版塊的帖子,對(duì)別的版塊帖子不能管理。超級(jí)版主和管理員可以管理所有版塊的帖子。版主可以把通知或版規(guī)等性質(zhì)帖子置頂,以便引起大家注意。再

68、不需要的時(shí)候可以取消置頂。對(duì)一些寫的非常好的文章版主可以為其加精華,這樣讓大家多多關(guān)注好的文章,以便鼓勵(lì)發(fā)帖者多多發(fā)表好的文章上來(lái)大家一起分享。當(dāng)然對(duì)于不好的帖子或者就是灌水的帖子,嚴(yán)重的可以直接刪除了,情節(jié)較輕的則可以將其鎖定。對(duì)有些文章內(nèi)容有地方不足時(shí),版主可以對(duì)其進(jìn)行編輯修改。版塊里的帖子除了置頂?shù)奶?,別的帖子都是按照發(fā)表時(shí)間和回復(fù)時(shí)間排列的,時(shí)間最新的帖子則排在最前面,時(shí)間越舊排的就越靠后面。有的文章內(nèi)容比較好,或是值得大家注

69、意一下,但又沒(méi)必要置頂更沒(méi)必要加精華,這樣版主就可以使用提升功能,使其排在后面的帖子上升到普通帖子的最前面。這種提升和置頂?shù)膮^(qū)別在于置頂?shù)奶右恢迸旁谧钌厦?,無(wú)論別的帖子更新時(shí)間比它多新,都沒(méi)有。普通帖子更新時(shí)間最新也是排在它的后面。而提升的帖子呢,</p><p>  提升后是排在普通的帖子最前面了,但別的帖子只要在它被提升后更新了,那么別的帖子就會(huì)跑到這個(gè)提升帖子的前面了,依此類推。還有一項(xiàng)功能就是轉(zhuǎn)移帖子,

70、這是超級(jí)版主以上的職務(wù)才有此權(quán)限。對(duì)于某版塊里用戶的發(fā)的帖子不符合該版塊的內(nèi)容范圍呢,而是屬于另一個(gè)版塊內(nèi)容的,這時(shí)就可以把此帖子轉(zhuǎn)移到符合其內(nèi)容的版塊里。</p><p>  5.3.2 操作流程圖</p><p>  圖5-6 管理帖子操作流程圖</p><p>  5.4 管理員管理論壇功能</p><p><b>  5.4

71、.1人機(jī)界面</b></p><p>  此部分是實(shí)現(xiàn)管理員對(duì)論壇的后臺(tái)管理,發(fā)布公告、添加刪除版塊、任命撤消版主等等。</p><p><b>  圖5-7 管理論壇</b></p><p>  首先對(duì)于前臺(tái)的管理,大部分就是對(duì)帖子的管理,版主所有的權(quán)限管理員都有;其次就是對(duì)后臺(tái)的專署管理,后臺(tái)管理分5大模塊。一是論壇常規(guī)設(shè)置,其

72、中包括</p><p>  常規(guī)信息設(shè)置、公告管理、風(fēng)格設(shè)置、友情連接管理、IP封鎖與解除。二是論壇管理,其中包括論壇版面設(shè)置、版主設(shè)置、超級(jí)版主設(shè)置、管理員設(shè)置、后臺(tái)密碼修改。三是用戶管理,其中包括用戶刪除與恢復(fù)、更改用戶密碼、修改用戶資料、用戶特殊設(shè)置、批量刪除用戶。四是帖子與留言管理,其中包括帖子批量刪除、帖子批量移動(dòng)、論壇留言管理、群發(fā)留言、帖子數(shù)據(jù)表管理、論壇回收站。五是其他操作,其中包括論壇整理、數(shù)據(jù)

73、庫(kù)、上傳文件管理、執(zhí)行SQL語(yǔ)句。</p><p>  5.4.2 操作流程圖</p><p>  圖5-8 管理論壇操作流程圖</p><p><b>  第6章 編碼實(shí)現(xiàn)</b></p><p><b>  6.1選擇編程語(yǔ)言</b></p><p>  近年來(lái)隨著In

74、ternet技術(shù)的飛速發(fā)展及用戶需求的不斷升級(jí),Web頁(yè)面技術(shù)也不斷的推陳出新,使得Web站點(diǎn)的功能越來(lái)越強(qiáng)大,能夠提供的服務(wù)種類越來(lái)越繁多。從HTML、Client Script 到CGI,從JAVA的誕生到ActiveX, Web頁(yè)面設(shè)計(jì)人員不斷受到?jīng)_擊,Sun公司在總結(jié)了以往技術(shù),重新思考Web頁(yè)面設(shè)計(jì)的真正需要后,推出了Java Server Pages /Freemarker,一種用以取代CGI(Common Gateway

75、Interface,通用網(wǎng)關(guān)接口)的技術(shù)。簡(jiǎn)單講,F(xiàn)reemarker是位于服務(wù)器端的腳本運(yùn)行環(huán)境,通過(guò)這種環(huán)境,用戶可以創(chuàng)建和運(yùn)行動(dòng)態(tài)的交互式 Web 服務(wù)器應(yīng)用程序,如交互式的動(dòng)態(tài)網(wǎng)頁(yè),包括使用 HTML 表單收集和處理信息,上傳與下載等等。更重要的是,F(xiàn)reemarker使用的ActiveX技術(shù)基于開(kāi)放設(shè)計(jì)環(huán)境,用戶可以自己定義和制作組件加入其中,使自己的動(dòng)態(tài)網(wǎng)頁(yè)幾乎具有無(wú)限的擴(kuò)充能力,這是傳統(tǒng)的Web編寫工具所遠(yuǎn)遠(yuǎn)不及的地方。使

76、用Freemarker還有個(gè)好處,就在于Freemarker可利用JDBC,SUN的一種新的數(shù)據(jù)訪問(wèn)模型)</p><p>  Wsb服務(wù)器是Web應(yīng)用程序的心臟。Tomcat是Sun推出的Web Service的主要成員,作為一個(gè)獨(dú)立的Web Server的擴(kuò)展,自推出以來(lái)已經(jīng)有了很大發(fā)展,其體系結(jié)構(gòu)是當(dāng)今市場(chǎng)上最受關(guān)注的Web服務(wù)器之一。新推出的Tomcat5.5版本增強(qiáng)了系統(tǒng)安全性,具有服務(wù)器端腳本開(kāi)發(fā)調(diào)試

77、,內(nèi)容管理和站點(diǎn)分析,崩潰防護(hù),內(nèi)置JAVA虛擬機(jī)及全面支持Freemarker等強(qiáng)大功能。</p><p>  在過(guò)去,客戶機(jī)/服務(wù)器結(jié)構(gòu)的設(shè)計(jì)與Web的相關(guān)技術(shù)幾乎處于平行線上,兩者相互獨(dú)立并無(wú)法作出集成性的設(shè)計(jì)。現(xiàn)在我們利用Tomcat+Freemarker構(gòu)成三層式Web結(jié)構(gòu)(如圖2.1所示)的中間一層,將客戶機(jī)/服務(wù)器結(jié)構(gòu)與Web密切結(jié)合,完成前后端兩者的集成輸出功能,使得Web站點(diǎn)的開(kāi)發(fā)更方便實(shí)現(xiàn)的

78、功能更強(qiáng)大。</p><p>  利用Tomcat+Freemarker技術(shù)來(lái)集成Web前后端所帶來(lái)的強(qiáng)大效益可歸結(jié)為以下幾個(gè)方面:</p><p>  1. 減少構(gòu)建和維護(hù)成本。</p><p>  2. 加快聯(lián)機(jī)過(guò)程。</p><p>  3. 應(yīng)用軟件集中在服務(wù)器端開(kāi)發(fā)管理。</p><p>  4. 前端可使用

79、任何瀏覽器(IE、Netscape…..)。</p><p>  5. 后端可存取任何數(shù)據(jù)庫(kù) (SQL、Access…..)。</p><p>  6. 可使用任何腳本語(yǔ)言開(kāi)發(fā) (VBScript、JavaScript、PERL…..)。</p><p>  6.2 論壇登錄功能</p><p><b>  6.2.1代碼實(shí)現(xiàn)<

80、;/b></p><p>  public void validateLogin()</p><p>  { String password;</p><p>  String username;</p><p>  if (parseBasicAuthentication()) {</p><p>  use

81、rname = (String)this.request.getAttribute("username");</p><p>  password = (String)this.request.getAttribute("password");</p><p><b>  } </b></p><p>&

82、lt;b>  else {</b></p><p>  username = this.request.getParameter("username");</p><p>  password = this.request.getParameter("password");</p><p><b>

83、  }</b></p><p>  boolean validInfo = false;</p><p>  if (password.length() > 0) {</p><p>  User user = this.validateLogin(username, password);</p><p>  if (use

84、r != null) {</p><p>  // Note: here we only want to set the redirect location if it hasn't already been</p><p>  // set. This will give the LoginAuthenticator a chance to set the redirect lo

85、cation.</p><p>  this.buildSucessfulLoginRedirect();</p><p>  SessionFacade.makeLogged();</p><p>  String sessionId = SessionFacade.isUserInSession(user.getId());</p><p&g

86、t;  UserSession userSession = new UserSession(SessionFacade.getUserSession());</p><p>  // Remove the "guest" session</p><p>  SessionFacade.remove(userSession.getSessionId());</p&g

87、t;<p>  userSession.dataToUser(user);</p><p>  UserSession currentUs = SessionFacade.getUserSession(sessionId);</p><p>  // Check if the user is returning to the system</p><p&g

88、t;  // before its last session has expired ( hypothesis )</p><p>  UserSession tmpUs;</p><p>  if (sessionId != null && currentUs != null) {</p><p>  // Write its old sessio

89、n data</p><p>  SessionFacade.storeSessionData(sessionId, JForumExecutionContext.getConnection());</p><p>  tmpUs = new UserSession(currentUs);</p><p>  SessionFacade.remove(session

90、Id);</p><p><b>  }else {</b></p><p>  UserSessionDA sm = DataAccessDriver.getInstance().newUserSessionDAO();</p><p>  tmpUs=sm.selectById(userSession,JForumExecutionCont

91、ext.getConnection());}</p><p>  I18n.load(user.getLang());</p><p>  // Autologin</p><p>  if (this.request.getParameter("autologin") != null</p><p>  &&am

92、p; SystemGlobals.getBoolValue(ConfigKeys.AUTO_LOGIN_ENABLED)) {userSession.setAutoLogin(true);</p><p>  // Generate the user-specific hash</p><p>  String systemHash = MD5.crypt(SystemGloba

93、ls.getValue(ConfigKeys.USER_HASH_SEQUENCE) + user.getId());</p><p>  String userHash = MD5.crypt(System.currentTimeMillis() + systemHash);// Persist the user hash</p><p>  UserDAO dao = Dat

94、aAccessDriver.getInstance().newUserDAO();</p><p>  dao.saveUserAuthHash(user.getId(), userHash);</p><p>  systemHash = MD5.crypt(userHash);ControllerUtils.addCookie(SystemGlobals.getValue(C

95、onfigKeys.COOKIE_AUTO_LOGIN), "1");</p><p>  ControllerUtils.addCookie(SystemGlobals.getValue(ConfigKeys.COOKIE_USER_HASH), systemHash);</p><p><b>  }</b></p><p&

96、gt;<b>  else {</b></p><p>  // Remove cookies for safetyControllerUtils.addCookie(SystemGlobals.getValue(ConfigKeys.COOKIE_USER_HASH), </p><p>  null);ControllerUtils.addCooki

97、e(SystemGlobals.getValue(ConfigKeys.COOKIE_AUTO_LOGIN), null);}</p><p>  if (tmpUs == null) {</p><p>  userSession.setLastVisit(new Date(System.currentTimeMillis()));</p><p><

98、;b>  }</b></p><p><b>  else {</b></p><p>  // Update last visit and session start time</p><p>  userSession.setLastVisit(new Date(tmpUs.getStartTime().getTime()

99、 + tmpUs.getSessionTime()));</p><p><b>  }</b></p><p>  SessionFacade.add(userSession);</p><p>  SessionFacade.setAttribute(ConfigKeys.TOPICS_READ_TIME, new HashMap());&

100、lt;/p><p>  ControllerUtils.addCookie(SystemGlobals.getValue(ConfigKeys.COOKIE_NAME_DATA), </p><p>  Integer.toString(user.getId()));</p><p>  SecurityRepository.load(user.getId(), tru

101、e);</p><p>  validInfo = true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  // Invalid login</p><p>  if (!validInfo) {</p>

102、<p>  this.context.put("invalidLogin", "1");</p><p>  this.setTemplateName(TemplateKeys.USER_VALIDATE_LOGIN);</p><p>  if (this.request.getParameter("returnPath&quo

103、t;) != null) {</p><p>  this.context.put("returnPath",</p><p>  this.request.getParameter("returnPath"));</p><p><b>  }</b></p><p><b

104、>  } </b></p><p>  else if (this.request.getParameter("returnPath") != null) {</p><p>  JForumExecutionContext.setRedirect(this.request.getParameter("returnPath"));&

105、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  6.2.2測(cè)試</b></p><p>  先注冊(cè)一個(gè)ID為USER的用戶(先前數(shù)據(jù)庫(kù)中無(wú)此用戶名的),注冊(cè)成功后,再注冊(cè)一個(gè)ID為USER的用戶!預(yù)期結(jié)果應(yīng)該是系統(tǒng)提示

106、該用戶名已經(jīng)存在。填寫完整的資料后點(diǎn)擊注冊(cè),此時(shí)系統(tǒng)按照預(yù)期結(jié)果提示該用戶名已經(jīng)被注冊(cè)了。測(cè)試結(jié)果,系統(tǒng)正常按照設(shè)計(jì)模式運(yùn)行。</p><p><b>  總  結(jié)</b></p><p>  BBS(Bulletin Board Service,公告牌服務(wù))是Internet上的一種信息服務(wù)系統(tǒng)。它提供一塊公共電子白板,每個(gè)用戶都可以在上面書寫,可發(fā)布信息或提出看法

107、。</p><p>  隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,論壇已經(jīng)成為網(wǎng)絡(luò)上不可缺少的交流方式之一,深受網(wǎng)民的喜愛(ài)。整個(gè)論壇系統(tǒng)使用Browser/Web模式來(lái)設(shè)計(jì),服務(wù)器端采用MySql和Freemarker組件來(lái)構(gòu)成論壇系統(tǒng);客戶端采用瀏覽器來(lái)完成系統(tǒng)維護(hù)和管理。</p><p>  1、 該論壇所實(shí)現(xiàn)的功能:</p><p>  用戶注冊(cè)、發(fā)帖、回復(fù)、發(fā)短消息、圖片上傳

108、、帖子加精華。</p><p>  2、 論壇待完善問(wèn)題:</p><p>  管理員發(fā)貼審核系統(tǒng)、郵件發(fā)送等。</p><p>  經(jīng)過(guò)這二個(gè)多月的畢業(yè)設(shè)計(jì)和對(duì)相關(guān)資料的收集,讓我清楚的感到隨著網(wǎng)絡(luò)科技的不斷發(fā)展和網(wǎng)絡(luò)的廣泛應(yīng)用,使我們的生活離不開(kāi)它了。網(wǎng)絡(luò)它以自己的獨(dú)特的優(yōu)點(diǎn)征服了我們。在教育越來(lái)越受重視的21世紀(jì),隨著學(xué)生學(xué)習(xí)類型的不斷增加和交流方式的不斷提高

109、,技術(shù)方面的工作量將會(huì)越來(lái)越大,在這樣的情況下有一個(gè)實(shí)用的平臺(tái)讓老師和學(xué)生從中受益是有其必然性的,如果能做出一個(gè)完善的論壇交流系統(tǒng)就會(huì)使學(xué)生能更好的去學(xué)習(xí)。在這次的畢業(yè)設(shè)計(jì)中雖然時(shí)間緊迫但我學(xué)會(huì)了很多,也感到自身知識(shí)的貧乏,希望在日后的努力中能做出更完善的系統(tǒng)。</p><p><b>  致  謝</b></p><p>  從接受課題到現(xiàn)在完成畢業(yè)設(shè)計(jì)論文,衷心的

110、感謝我的指導(dǎo)XX老師給予了精心的指導(dǎo)和熱情的幫助,尤其在課題設(shè)計(jì)的前期準(zhǔn)備階段和本人的數(shù)據(jù)庫(kù)的設(shè)計(jì)階段,導(dǎo)師提出許多寶貴的設(shè)計(jì)意見(jiàn),在最后的測(cè)試修改階王老師在百忙之中抽出時(shí)間為我們提供了必要的幫助,這樣使得我們得以順利的完成畢業(yè)設(shè)計(jì)開(kāi)發(fā)工作,在短暫的幾個(gè)月的相處時(shí)間里,老師淵博的知識(shí),敏銳的思路和實(shí)事求是的工作作風(fēng)給我留下了深刻的印象,這將使得我終身受益,謹(jǐn)此向老師表示衷心的感謝和崇高的敬意。</p><p> 

111、 在短暫的4年大學(xué)時(shí)光里,同學(xué)和朋友們也給了我無(wú)私的幫助與支持,在此我對(duì)所有學(xué)習(xí)和生活上幫助過(guò)我的同學(xué)們表示深深的謝意! </p><p><b>  參考文獻(xiàn)</b></p><p>  [1]前沿電腦圖像工作室 巧學(xué)巧用Dreamweaver、Fireworks、Flash制作網(wǎng)頁(yè) 北京:人民郵電出版社 2001</p><p>  [2]

112、 [孫衛(wèi)琴.精通Struts:基于MVC的JavaWeb設(shè)計(jì)與開(kāi)發(fā).北京:電子工業(yè)出版社,2004.11</p><p>  [3] 萬(wàn)峰科技.JSP網(wǎng)站開(kāi)發(fā)四“酷”全書:新聞、論壇、電子商城、博客.北京:電子工業(yè)出版社,2005.9</p><p>  [4]毛一心等 MySql應(yīng)用及實(shí)例集錦 北京:人民郵電出版社 2000</p><p>  [5]教育部考試中

113、心 數(shù)據(jù)庫(kù)(MySql)教程 北京:清華大學(xué)出版社 2000</p><p>  [6]李禹生 蔣利華等 MySql應(yīng)用技術(shù) 北京:中國(guó)水利水電出版社 2000</p><p>  [7]廖疆星 MySql數(shù)據(jù)庫(kù)開(kāi)發(fā)指南 北京:冶金工業(yè)出版社 2001</p><p>  [8]李存珠 李宣東 軟件工程概論.南京大學(xué)計(jì)算機(jī)系出版 2001年</p>&

114、lt;p>  [9] 張桂元、賈燕楓.Struts開(kāi)發(fā)入門與項(xiàng)目實(shí)踐.北京:人民郵電出版社,2005.12 </p><p>  [10] 吳其慶.Java模塊設(shè)計(jì)實(shí)例經(jīng)典.北京:冶金工業(yè)出版社,2004.6 </p><p>  [11]丁貴廣,閆允一,孟繁杰 java編程基礎(chǔ)與實(shí)例 第2版 北京:機(jī)械工業(yè)出版社 2004</p><p>  [12]毛璟

115、駿編著 Macromedia中國(guó)授權(quán)認(rèn)證培訓(xùn)(ATC)專用教程——Macromedia Dreamweaver MX動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)標(biāo)準(zhǔn)教程 科學(xué)出版社 2001</p><p>  [13]李海兵,楊曉亮  Dreamweaver Ultra Dev動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì) 第2版 人民郵電出版社 2003</p><p>  [14]龍馬工作室編著 Dreamweaver MX網(wǎng)頁(yè)編程入門

溫馨提示

  • 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ù)僅提供信息存儲(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)論