版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 討論區(qū)BBS論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 摘 要</b></p><p> 隨著網(wǎng)絡(luò)的發(fā)展,大家的生活得節(jié)奏變得越來(lái)越快了,大家使用電腦的時(shí)間越來(lái)越多了,人們之間面對(duì)面的的交流時(shí)間越來(lái)越少了,使得人與人的關(guān)系變得疏遠(yuǎn),這種精神上的聚餐越來(lái)越少了。</p><p> 為了解決由于網(wǎng)路發(fā)展而疏遠(yuǎn)了人與
2、人之間的距離,有種新的交流工具發(fā)展起來(lái)了,就是bbs論壇。而在論壇里面,討論區(qū)BBS論壇,是bbs論壇的核心的部分,也是論壇的重要功能,讓我們能夠互相交流和討論,談?wù)搮^(qū)是為了論壇的注冊(cè)用戶(hù)能夠互相交流,用戶(hù)可以發(fā)帖子,也可以對(duì)帖子回復(fù),也可以對(duì)回復(fù)帖子的進(jìn)行回復(fù)。</p><p> 也就是你可以隨心所欲的向眾人發(fā)表你的言論,宣傳你的觀點(diǎn),立場(chǎng),而且也可以方便的贊成或者是反對(duì)別人的觀點(diǎn)和言論,同時(shí),你也可以知道,
3、有多少人對(duì)你的貼子做出了反應(yīng),乃至別人對(duì)你網(wǎng)上人格的評(píng)價(jià),有些論壇的功能更為完善,上面附帶的社區(qū)功能可以讓你象在真實(shí)世界里一樣購(gòu)買(mǎi)從衣物到日常用品等各種物品。</p><p> 關(guān)鍵詞:BBS管理系統(tǒng);Jsp;Servlet;MyEclipse;MySQL</p><p> BBS Forum Discussion Design and Implementation</p>
4、<p><b> Abstract</b></p><p> With the development of network ,Everyone's life become more and more fast-paced,We use the computer more and more, People face-to-face exchanges between
5、 the time to become less and less,Makes the relationship between people become alienated, This spiritual gatherings are becoming fewer and fewer.</p><p> In order to address the development of alienation as
6、 a result of the network distance between the people, Endemic to the new communication tools developed, and is the forum bbs. Inside in the forum to discuss the district BBS forums, bbs forum is part of the core, The For
7、um is also an important function, so that we can exchange and discussion forum to talk about the district's registered users to exchange, the user can post messages, you can reply to posts may also be carried out on
8、the back of </p><p> That is, you may want to express your people freedom of speech, Promotional point of view of your position, but also in favor of convenience or are opposed to other people's views a
9、nd freedom of speech, At the same time, you can know how many people you made a response to the post, and even others on your online personality assessment Some of the functions of a more perfect forum for the top side o
10、f the community feature allows you, as in the real world, like the purchase of daily necessities fr</p><p> Keywords: BBS Management system; JSP; MyEclipse; MySQL</p><p><b> 目 錄</b
11、></p><p><b> 引言1</b></p><p> 1.1BBS管理系統(tǒng)的發(fā)展1</p><p> 1.2BBS管理系統(tǒng)的現(xiàn)狀1</p><p> 1.3該系統(tǒng)的主要研究?jī)?nèi)容2</p><p> 2.1Jsp與JavaBeans技術(shù)3</p>
12、;<p> 2.2JavaScript技術(shù)4</p><p> 2.3JDBC技術(shù)5</p><p> 2.3.1 JDBC數(shù)據(jù)訪問(wèn)接口5</p><p> 2.5.2JDBC的體系結(jié)構(gòu)5</p><p> 2.5.3 JDBC訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù)的技術(shù)實(shí)現(xiàn)方法6</p><p>
13、 2.4開(kāi)發(fā)工具選擇6</p><p> 3 BBS管理系統(tǒng)需求分析9</p><p> 3.1系統(tǒng)需求分析9</p><p> 3.2系統(tǒng)性能指標(biāo)9</p><p> 4 BBS管理系統(tǒng)分析設(shè)計(jì)與實(shí)現(xiàn)10</p><p> 4.1BBS管理系統(tǒng)設(shè)計(jì)總體要求10</p>&
14、lt;p> 4.2數(shù)據(jù)庫(kù)設(shè)計(jì)10</p><p> 4.3系統(tǒng)下面是建立用戶(hù)功能設(shè)計(jì)14</p><p> 4.3.1主要功能設(shè)計(jì)14</p><p> 4.3.2 用戶(hù)功能設(shè)計(jì)14</p><p> 4.3.3 系統(tǒng)管理員功能設(shè)計(jì)14</p><p> 4.3.4BBS管理功能設(shè)計(jì)
15、16</p><p> 4.4 關(guān)鍵技術(shù)的實(shí)現(xiàn)16</p><p> 4.4.1 漢字顯示的實(shí)現(xiàn)16</p><p> 4.4.2 分頁(yè)功能的實(shí)現(xiàn)19</p><p> 4.4.3 頁(yè)面間參數(shù)傳遞的實(shí)現(xiàn)21</p><p> 4.4.4 數(shù)據(jù)庫(kù)連接技術(shù)22</p>
16、<p> 5.1系統(tǒng)環(huán)境配置27</p><p> 5.1.1系統(tǒng)對(duì)硬件環(huán)境的要求27</p><p> 5.1.2系統(tǒng)對(duì)軟件環(huán)境的要求27</p><p> 5.2主要功能模塊的實(shí)現(xiàn)28</p><p> 5.2.1 發(fā)表帖子功能28</p><p> 5.2.2留言回復(fù)功
17、能29</p><p> 5.2.3模糊查詢(xún)功能30</p><p> 5.2.4與留言者交流功能實(shí)現(xiàn)31</p><p> 5.2.5用戶(hù)鑒定功能31</p><p> 5.2.6 論壇管理模塊33</p><p><b> 結(jié) 論34</b></p>
18、<p><b> 致 謝35</b></p><p><b> 參考文獻(xiàn)36</b></p><p> 附錄1 外文參考文獻(xiàn)(譯文)37</p><p> 附錄2 外文參考文獻(xiàn)(原文)40</p><p><b> 1 概 述</b>
19、</p><p> 1.1 BBS管理系統(tǒng)的發(fā)展</p><p> 大約是從1991年開(kāi)始,中國(guó)開(kāi)始了第一個(gè)BBS站。經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,直到1995年,隨著計(jì)算機(jī)及其外設(shè)的大幅降價(jià),BBS才逐漸被人們所認(rèn)識(shí)。1996年更是以驚人的速度發(fā)展起來(lái)。中國(guó)的BBS站,按其性質(zhì)劃分,可以分為2種:一種是商業(yè)BBS站,如新華龍訊網(wǎng);另一種是業(yè)余BBS站,如天堂咨詢(xún)站。由于使用商業(yè)BBS站要交
20、納一筆費(fèi)用,而商業(yè)站所能提供的服務(wù)與業(yè)余站相比,并沒(méi)有什么優(yōu)勢(shì),所以其用戶(hù)數(shù)量不多。</p><p> 多數(shù)業(yè)余BBS站的站長(zhǎng),基于個(gè)人關(guān)系,每天都互相交換電子郵件,漸漸地形成了一個(gè)全國(guó)性的電子郵件網(wǎng)絡(luò)China FidoNet(中國(guó)慧多網(wǎng))。于是,各地的用戶(hù)都可以通過(guò)本地的業(yè)余BBS站與遠(yuǎn)在異地的網(wǎng)友互通信息。這種跨地域電子郵件交流正是商業(yè)站無(wú)法與業(yè)余站相抗衡的根本因素。</p><p&g
21、t; BBS管理系統(tǒng)的現(xiàn)狀</p><p> 中國(guó)的BBS站,單線站還占大多數(shù)。隨著計(jì)算機(jī)的普及,特別是調(diào)制解調(diào)器的大量使用,BBS的活動(dòng)將會(huì)進(jìn)一步高漲。但是,隨之而來(lái)的撥號(hào)難和搶線難的問(wèn)題將會(huì)加劇。盡管BBS站臺(tái)的數(shù)量在不斷增長(zhǎng),但這種增長(zhǎng)的幅度總也趕不上用戶(hù)群的增長(zhǎng)。</p><p> 許多人同時(shí)撥號(hào)一個(gè)站臺(tái),不可避免地發(fā)生沖突。每回要撥上幾十次乃至上百次才能成功連上一個(gè)BBS站
22、的狀況已經(jīng)成為困擾今日中國(guó)BBS用戶(hù)的一個(gè)難題。隨著B(niǎo)BS活動(dòng)的深入,中國(guó)已經(jīng)出現(xiàn)了一些多線站,一次可以允許2人以上同時(shí)訪問(wèn)。 (BBS的發(fā)展過(guò)程中,也出現(xiàn)了一些問(wèn)題。</p><p> 由于中國(guó)使用的BBS架站軟件,都是從國(guó)外引進(jìn)的,因此沒(méi)有必要的中文說(shuō)明。雖然一些熱心的站長(zhǎng)翻譯了一些資料,但是僅靠這些是遠(yuǎn)遠(yuǎn)不夠的。另外,有些站臺(tái)的設(shè)立是相互抄襲,所以在結(jié)構(gòu)上難免有雷同之處。</p><p
23、> 1999年是中國(guó)網(wǎng)絡(luò)的發(fā)展年。但是,應(yīng)該清醒地認(rèn)識(shí)到,一些BBS站并沒(méi)有走上“簡(jiǎn)單、易用”這一層次。包括一些廠商架設(shè)的BBS站,實(shí)用性還需要加強(qiáng)。中國(guó)的BBS站將向著個(gè)性化和專(zhuān)業(yè)化的方向發(fā)展。</p><p> 該系統(tǒng)的主要研究?jī)?nèi)容</p><p> 分析了目前普遍的bbs網(wǎng)站,研究了Java分布式框架J2EE,Web容器,組件生命周期。研究JSP技術(shù),包括如何進(jìn)行基于JS
24、P應(yīng)用開(kāi)發(fā)以及在JSP服務(wù)器上的發(fā)布運(yùn)行。深入研究了基于multipart/form-data的form傳送協(xié)議,以及如何在該協(xié)議下進(jìn)行通信。研究了如何基于JavaScript開(kāi)發(fā)更豐富的人機(jī)交互界面。研究了J2EE框架中數(shù)據(jù)源的2種配置方式,使用容器管理連接池,直接使用JDBC。</p><p> 2 系統(tǒng)開(kāi)發(fā)的關(guān)鍵技術(shù)</p><p> 2.1 Jsp與JavaBean
25、s技術(shù)</p><p> Java語(yǔ)言誕生于20世紀(jì)90年代的初期,最初是以智能家電的芯片語(yǔ)言出現(xiàn)的。但是很快,人們發(fā)現(xiàn)了它有更廣闊的用武之地,由于它適用于Internet環(huán)境,引起計(jì)算機(jī)界的廣泛關(guān)注,迅速發(fā)展成計(jì)算機(jī)網(wǎng)絡(luò)編程語(yǔ)言。</p><p> Java語(yǔ)言備受推崇,因其確實(shí)可稱(chēng)得上是新一代編程語(yǔ)言,具有眾多優(yōu)點(diǎn),它簡(jiǎn)單、面向?qū)ο蟆⒖梢浦?、與硬件無(wú)關(guān)、系統(tǒng)強(qiáng)健安全、具有很高的性能
26、,并提供了分布性、多線程、動(dòng)態(tài)性的支持。</p><p> JSP ( Java Server Pages)是由Sun公司在java語(yǔ)言上開(kāi)發(fā)出來(lái)的一種動(dòng)態(tài)網(wǎng)頁(yè)制作技術(shù),JSP規(guī)范是Web服務(wù)器、應(yīng)用服務(wù)器、交易系統(tǒng)、以及開(kāi)發(fā)工具供應(yīng)商間廣泛合作的結(jié)果,使您可以將網(wǎng)頁(yè)中的動(dòng)態(tài)部分和靜態(tài)的HTML相分離。</p><p> ?、?將內(nèi)容的生成和顯示進(jìn)行分離</p><p
27、> 使用JSP技術(shù),Web頁(yè)面開(kāi)發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。</p><p> ?、?強(qiáng)調(diào)可重用的組件</p><p> 絕大多數(shù)JSP頁(yè)面信賴(lài)于可重用的、跨平臺(tái)的組件(JavaBeans或者Enter
28、priseJavaBeansTM組件)來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開(kāi)發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,井使得這些組件為更多的使用者或者客戶(hù)團(tuán)體所使用[6]。</p><p> ⑶ 采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開(kāi)發(fā)</p><p> Web頁(yè)面開(kāi)發(fā)人員不會(huì)都是熟悉腳本語(yǔ)言的編程人員。JSP技術(shù)封裝了許多功能,這些功能是在生成與JSP相關(guān)的XML標(biāo)識(shí)的動(dòng)態(tài)內(nèi)容時(shí)所需要的。標(biāo)準(zhǔn)的JSP標(biāo)
29、識(shí)能夠訪問(wèn)和實(shí)例化JavaBeans組件、設(shè)置或者檢索組件屬性、下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時(shí)的功能。</p><p><b> ⑷ 健壯性與安全性</b></p><p> 由于JSP頁(yè)面的內(nèi)置腳本語(yǔ)言是基于Java編程語(yǔ)言的,且都被編譯為JavaServlet,它就具有Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性[7]。</p
30、><p><b> ?、?良好的移植性</b></p><p> 作為Java平臺(tái)的一部分,JSP擁有Java編程語(yǔ)言“一次編寫(xiě),各處運(yùn)行”的特點(diǎn)。隨著越來(lái)越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,可以使用自己所選擇的服務(wù)器和工具,而且更改工具或服務(wù)器并不影響當(dāng)前的使用。</p><p> ?、?企業(yè)級(jí)的擴(kuò)展性和性能</p>&l
31、t;p> 當(dāng)與Java2平臺(tái),企業(yè)版(J2EE)和EnterpriseJavaBeans技術(shù)整合時(shí),JSP頁(yè)面將提供企業(yè)級(jí)的擴(kuò)展性和性能,這對(duì)于虛擬企業(yè)中部署基于Web的應(yīng)用是必需的。</p><p> Javabean是可復(fù)用的平臺(tái)中立的軟件組件,可以在軟件開(kāi)發(fā)工具中被直觀地操作?;菊f(shuō)來(lái),Javabean可以看成一個(gè)黑盒子,即只需知道其功能而不管其內(nèi)部結(jié)構(gòu)的軟件設(shè)備。用戶(hù)可以使用JavaBeans將
32、功能、處理、值、數(shù)據(jù)庫(kù)訪問(wèn)和其他任何可以用java代碼創(chuàng)造的對(duì)象進(jìn)行打包,并且其他的開(kāi)發(fā)者可以通過(guò)內(nèi)部的JSP頁(yè)面、Servlet、其他JavaBeans、applet程序或者應(yīng)用來(lái)使用這些對(duì)象。用戶(hù)可以認(rèn)為JavaBeans提供了一種隨時(shí)隨地的復(fù)制和粘貼的功能,而不用關(guān)心任何改變。</p><p> JavaBeans將Java語(yǔ)言本身所具有的“一次編寫(xiě),到處運(yùn)行”特性沿用到代碼組件Bean上,使Bean也具
33、有平臺(tái)無(wú)關(guān)性。JavaBeans通過(guò)封裝屬性和方法成為具有某種功能的軟件模型,運(yùn)營(yíng)這種模型,能夠使軟件開(kāi)發(fā)人員快捷地利用子組件來(lái)創(chuàng)建模板應(yīng)用程序,然后整合一些附件功能便可使用。</p><p> JavaBeans組件可以訪問(wèn)數(shù)據(jù)庫(kù),用一個(gè)Bean把常用的數(shù)據(jù)庫(kù)功能都封裝起來(lái)。JSP對(duì)于在Web應(yīng)用中集成JavaBeans組件提供了完善的支持。這種支持不僅能縮短開(kāi)發(fā)時(shí)間(可以直接利用經(jīng)測(cè)試和可信任的已有組件,避
34、免了重復(fù)開(kāi)發(fā)),也為JSP應(yīng)用帶來(lái)了更多的可伸縮性。JavaBeans組件可以用來(lái)執(zhí)行復(fù)雜的計(jì)算任務(wù),或者負(fù)責(zé)與數(shù)據(jù)庫(kù)交互以單擊及數(shù)據(jù)提取等。</p><p> 2.2 JavaScript技術(shù)</p><p> JavaScript是一種基于對(duì)象(Object)和事件驅(qū)動(dòng)(Event Driven)并具有安全性能的腳本設(shè)計(jì)語(yǔ)言,它可以鑲嵌在HTML代碼中的特殊類(lèi)型代碼,這些代碼
35、可以由瀏覽器解釋執(zhí)行,它使網(wǎng)頁(yè)開(kāi)發(fā)者可以更有效地控制頁(yè)面。而且JavaScript是一種面向?qū)ο蟮恼Z(yǔ)言,可以操控瀏覽器腳本對(duì)象模型所支持的各種標(biāo)準(zhǔn)對(duì)象,如當(dāng)前窗口、瀏覽器本身信息、URL、HTML文檔等等,并能對(duì)用戶(hù)觸發(fā)事件做出即時(shí)響應(yīng),諸如鼠標(biāo)、表單操作等,而且這些都不需要客戶(hù)機(jī)與服務(wù)器的交互通信,既為用戶(hù)提供了更快速的操作,又減小了服務(wù)器端的負(fù)擔(dān),十分適合于編制交互網(wǎng)頁(yè)和較小的編程任務(wù)。</p><p>
36、JavaScript是一種解釋性語(yǔ)言,它不需要對(duì)JavaScript程序進(jìn)行預(yù)先編譯而產(chǎn)生可執(zhí)行的機(jī)器代碼,只是在程序執(zhí)行時(shí)才由一個(gè)內(nèi)置于瀏覽器中的JavaScript解釋器將源代碼動(dòng)態(tài)地處理成可執(zhí)行代碼。目前流行的瀏覽器都具有這種解釋器。從Web發(fā)布角度來(lái)看,它的這種特性使它比編譯性語(yǔ)言更加易于編程和使用。</p><p> 由于JavaScript是由Java繼承而來(lái)的,因此它是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)(OO
37、P)語(yǔ)言。JavaScript中的對(duì)象有兩個(gè)組成部分——狀態(tài)和行為,或者說(shuō)變量(屬性)和函數(shù)(方法)。可以用JavaScript的對(duì)象來(lái)模擬現(xiàn)實(shí)生活中的各種實(shí)例,從而大大方便了程序的設(shè)計(jì)。利用對(duì)象的繼承性,可以使很多精心設(shè)計(jì)的代碼能夠重新使用,從而減少了程序設(shè)計(jì)人員的重復(fù)工作量而節(jié)省了時(shí)間。</p><p> JavaScript不需要依賴(lài)特定的機(jī)器和操作系統(tǒng),獨(dú)立于操作平臺(tái),這點(diǎn)與JSP語(yǔ)言一樣,都具有跨平臺(tái)
38、性,它們可以在不同的平臺(tái)上緊密結(jié)合,協(xié)同工作。JavaScript還具有占有系統(tǒng)和網(wǎng)絡(luò)資源小的優(yōu)點(diǎn)。所以,在JSP頁(yè)面內(nèi)鑲嵌JavaScript實(shí)現(xiàn)一些檢驗(yàn)功能,會(huì)使Web頁(yè)面更富于交互性、響應(yīng)速度更快、效率更高。</p><p><b> JDBC技術(shù)</b></p><p> JDBC數(shù)據(jù)訪問(wèn)接口</p><p> JDBC(Java
39、 Database Connectivity)是用于執(zhí)行SQL語(yǔ)句的Java API[15]。它由一組用Java編程語(yǔ)言編寫(xiě)的類(lèi)和接口組成,為Java應(yīng)用程序與各種不同數(shù)據(jù)庫(kù)之間對(duì)話提供了一種便捷的方法,使得開(kāi)發(fā)人員能夠用純Java API來(lái)編寫(xiě)具有平臺(tái)無(wú)關(guān)性的數(shù)據(jù)庫(kù)應(yīng)用程序。JDBC的出現(xiàn)使Java程序?qū)Ω鞣N數(shù)據(jù)庫(kù)的訪問(wèn)能力大大增強(qiáng)。通過(guò)使用JDBC,開(kāi)發(fā)人員可以很方便地將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)。</p>&
40、lt;p> 2.3.2 JDBC的體系結(jié)構(gòu)</p><p> 目前,應(yīng)用程序與數(shù)據(jù)庫(kù)信息交換己經(jīng)非常普遍。因此,一個(gè)程序設(shè)計(jì)語(yǔ)言對(duì)數(shù)據(jù)庫(kù)開(kāi)發(fā)能力的大小,決定著該語(yǔ)言的流行程度。在JDK1.1版本之前,Java語(yǔ)言提供的對(duì)數(shù)據(jù)庫(kù)訪問(wèn)支持的能力是很弱的,編程人員不得不在Java程序中加入C語(yǔ)言的ODBC (Open Database Connectivity)函數(shù)調(diào)用,這使得Java程序的跨平臺(tái)發(fā)布能
41、力受到很大的限制。JDBC的出現(xiàn)使Java程序?qū)Ω鞣N數(shù)據(jù)庫(kù)的訪問(wèn)能力大大增強(qiáng)。它為Java定義了一個(gè)“調(diào)用級(jí)”(cal-level)的SQL接口。這意味開(kāi)發(fā)人員可以很方便地將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)[16]。JDBC的體系結(jié)構(gòu)如圖2.1所示:</p><p> 圖2.1 JDBC體系結(jié)構(gòu)</p><p> 從圖中可以看出,JDBC API的作用就是屏蔽不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序之間
42、的差別,使得程序設(shè)計(jì)人員有一個(gè)標(biāo)準(zhǔn)的、純Java的數(shù)據(jù)庫(kù)程序設(shè)計(jì)接口,為在Java中訪問(wèn)任意類(lèi)型的數(shù)據(jù)庫(kù)提供技術(shù)支持。驅(qū)動(dòng)程序管理器(Driver Manager)為應(yīng)用程序裝載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序是與具體的數(shù)據(jù)庫(kù)相關(guān)的,用于向數(shù)據(jù)庫(kù)提交SQL請(qǐng)求。</p><p> 2.3.3 JDBC訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù)的技術(shù)實(shí)現(xiàn)方法</p><p> JDBC (Java Database
43、 Connectivity)是Java語(yǔ)言訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù)的API。JDBC繼承了Java語(yǔ)言的所有特點(diǎn)。并且,很多數(shù)據(jù)庫(kù)系統(tǒng)自帶JDBC驅(qū)動(dòng)程序,Java程序就可通過(guò)這些程序與數(shù)據(jù)庫(kù)相連。但是,JSP&Servlet并不直接使用JDBC技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng),而是把參數(shù)傳遞給事先編好的JavaBean EJB組件,由它們對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。JDBC本身主要完成以下三件事件:與數(shù)據(jù)庫(kù)建立連接;發(fā)送SQL語(yǔ)句;處理結(jié)果。JDBC的結(jié)構(gòu)可分
44、為兩層:第一層是JDBC API,JDBC API是一系列的抽象接口,應(yīng)用程序是首先通過(guò)它實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接,執(zhí)行SQL聲明、獲得返回結(jié)果;第二層JDBC Driver API主要負(fù)責(zé)與第三方驅(qū)動(dòng)程序通訊,這些驅(qū)動(dòng)程序才真正連接到數(shù)據(jù)庫(kù)。</p><p><b> 開(kāi)發(fā)工具選擇</b></p><p> 本系統(tǒng)使用的開(kāi)發(fā)工具主要有tomcat、MyEclipse和m
45、ysql數(shù)據(jù)庫(kù)。</p><p><b> Tomcat服務(wù)器</b></p><p> 本系統(tǒng)在Windows XP操作系統(tǒng)下整合Apache和Tomcat,整合后的服務(wù)器的處理能力更強(qiáng)大。Apache是最流行的Web服務(wù)器端軟件之一。快速、可靠、可通過(guò)簡(jiǎn)單的API擴(kuò)展,Perl/Python解釋器可被編譯到服務(wù)器中,完全免費(fèi),完全源代碼開(kāi)放。</p>
46、;<p> Apache還擁有以下的特性:</p><p> 幾乎可以運(yùn)行在所有的計(jì)算機(jī)操作系統(tǒng)上。</p><p> 簡(jiǎn)單而且強(qiáng)有力的基于文件的配置(HTTPD.CONF)。</p><p> 支持通用網(wǎng)關(guān)接口(CGI)和虛擬主機(jī)。</p><p> 可以通過(guò)WEB瀏覽器監(jiān)視服務(wù)器的狀態(tài),可以自定義日志。</p
47、><p> 具有用戶(hù)會(huì)話過(guò)程的跟蹤能力。</p><p> Tomcat本身就是一個(gè)Web服務(wù)器,其支持JSP和Servlet,但由于Tomcat主要用來(lái)開(kāi)發(fā)和調(diào)試,而作為商業(yè)應(yīng)用則其功能還略顯單薄,因此我們將其作為功能強(qiáng)大的商業(yè)應(yīng)用Web服務(wù)器Apache HTTP Server的一個(gè)附加軟件,將兩者的功能整合起來(lái),以建立具有完美功能的JSP網(wǎng)站。</p><p>
48、; MyEclipse開(kāi)發(fā)工具</p><p> Eclipse平臺(tái)由數(shù)種組件組成:平臺(tái)核心(platform kernel)、工作臺(tái)(workbench)、工作區(qū)(workspace)、團(tuán)隊(duì)組件(tram component)以及說(shuō)明組件(help)。</p><p> Eclipse平臺(tái)的目的,是提供多種軟件開(kāi)發(fā)工具的整合機(jī)制,這些工具會(huì)實(shí)變成Eclipse外掛程序,平臺(tái)必須用外
49、掛程序加以擴(kuò)充才有用處。Eclipse設(shè)計(jì)美妙之處,在于所有東西都是外掛,除了底層的核心以外。這種外掛設(shè)計(jì)讓Eclipse具備強(qiáng)大擴(kuò)充性,但更重要的是,此平臺(tái)提供一個(gè)定義明確的機(jī)制,讓各種外掛程序共通合作(透過(guò)延伸點(diǎn)extension points)與貢獻(xiàn)(contributions)),因此新功能可以輕易且無(wú)縫地加入平臺(tái)。功能上的便捷是我首選的一個(gè)原因,切不用考慮太多版本的因素。</p><p><b&g
50、t; Mysql數(shù)據(jù)庫(kù)</b></p><p> MySQL是一個(gè)真正的多用戶(hù)、多線程SQL數(shù)據(jù)庫(kù)服務(wù)器。SQL(結(jié)構(gòu)化查詢(xún)語(yǔ)言)是世界上最流行的和標(biāo)準(zhǔn)</p><p> 化的數(shù)據(jù)庫(kù)語(yǔ)言。MySQL是以一個(gè)客戶(hù)機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序mysqld和很多不同的</p><p><b> 客戶(hù)程序和庫(kù)組成。</b&
51、gt;</p><p> mySQL是一種標(biāo)準(zhǔn)化的語(yǔ)言,它使得存儲(chǔ)、更新和存取信息更容易。例如,你能用SQL語(yǔ)言為一個(gè)網(wǎng)站檢索</p><p> 產(chǎn)品信息及存儲(chǔ)顧客信息,同時(shí)MySQL也足夠快和靈活以允許你存儲(chǔ)記錄文件和圖像。</p><p> MySQL 主要目標(biāo)是快速、健壯和易用。最初是因?yàn)槲覀冃枰@樣一個(gè)SQL服務(wù)器,它能處理與任何可不昂</p&g
52、t;<p> 貴硬件平臺(tái)上提供數(shù)據(jù)庫(kù)的廠家在一個(gè)數(shù)量級(jí)上的大型數(shù)據(jù)庫(kù),但速度更快,MySQL就開(kāi)發(fā)出來(lái)。自1996年以</p><p> 來(lái),我們一直都在使用MySQL,其環(huán)境有超過(guò) 40 個(gè)數(shù)據(jù)庫(kù),包含 10,000個(gè)表,其中500多個(gè)表超過(guò)7百萬(wàn)行</p><p> ,這大約有100 個(gè)吉字節(jié)(GB)的關(guān)鍵應(yīng)用數(shù)據(jù)。</p><p><
53、b> HTML</b></p><p> HTML的英文全稱(chēng)是"Hypertext Markup Language",中文譯為“超文本標(biāo)記語(yǔ)言”。“超文本”就是指頁(yè)面內(nèi)可以包含圖片,聯(lián)接,甚至音樂(lè),程序等非文字的元素。在幾年前作為SGML的一個(gè)子集開(kāi)發(fā)的。</p><p> 一個(gè)HTML文件中包含了所有將顯示在網(wǎng)頁(yè)上的文字信息,其中也包括對(duì)瀏覽器
54、的一些指示,如哪些文字應(yīng)放置在何處,顯示模式是什么樣的等。如果你還有一些圖片、動(dòng)畫(huà)、聲音或是任何其它形式的資源,HTML文件也會(huì)告訴瀏覽器到哪里去查找這些資源,以及這些資源將放置在網(wǎng)頁(yè)的什么位置。瀏覽的網(wǎng)頁(yè)就是由HTML語(yǔ)言編寫(xiě)出來(lái)的。雖然HTML是一種語(yǔ)言,但HTML不是程序語(yǔ)言,如 C++ 和 Java 之類(lèi),它只是標(biāo)示語(yǔ)言,你只要明白了各種標(biāo)記的用法便算學(xué)會(huì)了HTML.HTML 的格式非常簡(jiǎn)單,只是由文字及標(biāo)記組合而成,因此任何文
55、本編輯器都可以制作HTML頁(yè)面。在編輯器中輸入html代碼即可完成對(duì)網(wǎng)頁(yè)的設(shè)計(jì),如果在其中加入VB,JAVA等腳本文件以及數(shù)據(jù)庫(kù)連接有關(guān)的語(yǔ)句指令,便可對(duì)已知數(shù)據(jù)進(jìn)行查詢(xún),從而生成動(dòng)態(tài)網(wǎng)頁(yè)的一部分。</p><p> 3 BBS管理系統(tǒng)需求分析</p><p> 3.1 系統(tǒng)需求分析</p><p> BBS 系統(tǒng)的作用在于提供用戶(hù)相互交流的空間,
56、這種交流的方式即瀏覽文章和發(fā)表文章以及對(duì)文章的評(píng)價(jià)。因此,對(duì)于文章的管理是BBS系統(tǒng)的一個(gè)核心功能。發(fā)表文章的權(quán)利只能給予特定的人群。否則容易失去次序,基于同樣的考慮,刪除文章的權(quán)力也只能提供特定的人群。</p><p> 因此,用戶(hù)的劃分應(yīng)該成為BBS系統(tǒng)的一個(gè)核心的思想,系統(tǒng)將用戶(hù)劃分為游客,用戶(hù),管理員三類(lèi),他們的權(quán)限不同,各司其職,其中管理員擁有最高的權(quán)利,可以對(duì)用戶(hù),論壇,文章三大對(duì)象進(jìn)行增加,刪除及
57、修改的操作</p><p> BBS系統(tǒng)將用戶(hù)劃分為游客,用戶(hù),管理員3類(lèi),他們的權(quán)限不同,能夠使用的功能葉不同。對(duì)于系統(tǒng)來(lái)說(shuō),需要實(shí)現(xiàn)的功能總體來(lái)說(shuō)分為以下兩大模塊。</p><p> 前臺(tái)模塊提供給所有用戶(hù)使用。不論是論壇的注冊(cè)用戶(hù),還是普通的瀏覽者,都可以進(jìn)入其中。區(qū)別在于用戶(hù)的權(quán)限不同。所允許使用的功能也有所不同。</p><p> 后臺(tái)模塊提供給管
58、理人員(包括管理員很版主)使用,以對(duì)用戶(hù),論壇及文章進(jìn)行管理維護(hù)。普通用戶(hù)如果試圖使用這一模塊將被系統(tǒng)拒絕。</p><p> 該系統(tǒng)的使用圖,如下圖所示:</p><p> 圖3.1系統(tǒng)功能模塊圖</p><p> 3.2 系統(tǒng)性能指標(biāo)</p><p> 為實(shí)現(xiàn)上述需求,本系統(tǒng)采用JSP技術(shù)及web數(shù)據(jù)庫(kù)技術(shù)構(gòu)成基于web的B
59、BS管理系統(tǒng)。</p><p><b> (1)實(shí)用性 </b></p><p> BBS管理系統(tǒng)的開(kāi)發(fā)應(yīng)將系統(tǒng)的實(shí)用性和實(shí)時(shí)性放在首要位置。系統(tǒng)的設(shè)計(jì)應(yīng)最大限度發(fā)揮計(jì)算機(jī)的高速處理、海量存儲(chǔ)能力。在軟件設(shè)計(jì)中,以方便用戶(hù)使用為標(biāo)準(zhǔn),做到統(tǒng)一編碼規(guī)則、統(tǒng)一界面風(fēng)格。</p><p><b> (2)可靠性 </b>
60、</p><p> 本系統(tǒng)的可靠性要求很高。系統(tǒng)在運(yùn)行中要不發(fā)生或極少發(fā)生故障,在偶然事故及操作失誤時(shí),系統(tǒng)應(yīng)具有較強(qiáng)的處理能力,而不應(yīng)造成信息的丟失和破壞。</p><p> (3)安全性 通過(guò)BBS管理系統(tǒng)可以修改及刪除帖子和帖子回復(fù)。</p><p> 4 BBS管理系統(tǒng)分析設(shè)計(jì)與實(shí)現(xiàn)</p><p> 4.1 BB
61、S管理系統(tǒng)設(shè)計(jì)總體要求</p><p> 系統(tǒng)設(shè)計(jì)是BBS管理系統(tǒng)開(kāi)發(fā)過(guò)程的一個(gè)重要階段,包括兩個(gè)方面,首先是總體結(jié)構(gòu)的設(shè)計(jì),其次是具體功能模塊的設(shè)計(jì)。其主要目的是為系統(tǒng)實(shí)現(xiàn)(如編程、調(diào)試、試運(yùn)行等)制定藍(lán)圖。在系統(tǒng)設(shè)計(jì)階段,主要任務(wù)就是在各種技術(shù)和實(shí)施方法中權(quán)衡利弊,精心設(shè)計(jì),合理地使用各種資源,最終勾畫(huà)出新系統(tǒng)的詳細(xì)設(shè)計(jì)方案。系統(tǒng)設(shè)計(jì)的原則為:</p><p> ?、?系統(tǒng)性。系統(tǒng)是
62、作為統(tǒng)一整體而存在的,因此,在系統(tǒng)設(shè)計(jì)中,要從整個(gè)系統(tǒng)的角度進(jìn)行考慮,系統(tǒng)的代碼要統(tǒng)一,設(shè)計(jì)規(guī)范要標(biāo)準(zhǔn),傳遞語(yǔ)言要盡可能一致,對(duì)系統(tǒng)的數(shù)據(jù)采集要做到數(shù)出一處、全局共享,使一次輸入得到多次利用。</p><p> ?、?靈活性。為保持系統(tǒng)的長(zhǎng)久生命力,要求系統(tǒng)具有很強(qiáng)的環(huán)境適應(yīng)性。為此,系統(tǒng)應(yīng)具有較好的開(kāi)放性和結(jié)構(gòu)的可變性。在系統(tǒng)設(shè)計(jì)中,應(yīng)盡量采用模塊化結(jié)構(gòu),提高各模塊的獨(dú)立性,盡可能減少模塊間的數(shù)據(jù)藕合,使各子系
63、統(tǒng)間的數(shù)據(jù)依賴(lài)減至最低限度。這樣,既便于模塊的修改,又便于增加新的內(nèi)容,提高系統(tǒng)適應(yīng)環(huán)境變化的能力。</p><p> ?、?可靠性。可靠性是指系統(tǒng)抵御外界干擾時(shí)的恢復(fù)能力。一個(gè)成功的管理系統(tǒng)必須具有較高的可靠性,如安全保密性、檢錯(cuò)及糾錯(cuò)能力、抗病毒能力等。</p><p> ⑷ 經(jīng)濟(jì)性。經(jīng)濟(jì)性是指在滿足系統(tǒng)需求的前提下,盡可能減少系統(tǒng)的開(kāi)銷(xiāo)。一方面,在硬件投資上不能盲目追求技術(shù)上的先進(jìn)
64、,而應(yīng)以滿足應(yīng)用需要為前提;另一方面,系統(tǒng)設(shè)計(jì)應(yīng)盡量避免不必要的復(fù)雜化,各模塊應(yīng)盡量簡(jiǎn)潔,以便縮短處理流程。</p><p> ⑸ 美觀性。簡(jiǎn)潔的界面設(shè)計(jì),在設(shè)計(jì)過(guò)程中,以人為本,用易于理解的圖標(biāo),用有意義的標(biāo)題,簡(jiǎn)明、一致、快捷并可靠的界面。</p><p> 4.2 數(shù)據(jù)庫(kù)設(shè)計(jì)</p><p> 對(duì)應(yīng)于數(shù)據(jù)模型,設(shè)計(jì)出的數(shù)據(jù)庫(kù)一共分為4個(gè)表,即用戶(hù)
65、(User),論壇表(Forum),主題標(biāo)(Topic),及回復(fù)表(Response)。數(shù)據(jù)庫(kù)名為bbs,其建立的SQL語(yǔ)句如下。</p><p> Create database if not exists 'bbs'</p><p><b> 接下來(lái)創(chuàng)建數(shù)據(jù)表。</b></p><p><b> 1,用戶(hù)信息
66、表</b></p><p> 用戶(hù)信息表(User) 擁有如下字段:用戶(hù)ID(id),用戶(hù)名(username),密碼(password),性別(sex)</p><p> 電子郵箱(email),簽名檔(signature),用戶(hù)級(jí)別(grade),其定義如表4.1所示。</p><p> 表4.1 用戶(hù)信息表</p><p&
67、gt; 下面是建立用戶(hù)信息的SQL的語(yǔ)句。</p><p> Create table 'user' (</p><p> 'id' int(8) not null,</p><p> 'username' varchar(20) not null ,</p><p> '
68、password' varchar(20) not null,</p><p> 'sex' varchar(2) not null,</p><p> 'email' varcahr(50), not null,</p><p> 'signature' varcahr(300) default nul
69、l,</p><p> 'grade' varchar(20) defalut null,</p><p> Primary key('id')</p><p><b> )</b></p><p><b> 2,論壇信息表</b></p>&l
70、t;p> 論壇信息表(forum) 擁有如下字段:論壇ID(id),論壇名(forumname),及版主(manager)</p><p> 其定義如表4.2所示。</p><p> 表 4.2 論壇信息表</p><p> 下面是建立用戶(hù)信息的SQL的語(yǔ)句。</p><p> Create table 'forum
71、' (</p><p> 'id' int(4) not null,</p><p> 'forumname' '' varchar(20) not null ,</p><p> 'manager' varchar(20) not null,</p><p>
72、 Primary key('id'))</p><p><b> 3,主題信息表</b></p><p> 主題信息表(Topic) 擁有如下字段:主題ID(id),標(biāo)題(title),內(nèi)容(content),作者(author)提交時(shí)間(submittime),及論壇ID(forumid)其定義如表5.3所示。</p><p
73、> 表 5.3 主題信息表</p><p> 信息的SQL的語(yǔ)句。</p><p> Create table 'user' (</p><p> 'id' int(8) not null,</p><p> 'title' varchar(20) not null ,<
74、;/p><p> 'content' text not null,</p><p> 'author' varchar(20) not null,</p><p> 'submittime' date, not null,</p><p> 'forumid' int(4)
75、 default null,</p><p> Primary key('id')</p><p><b> )</b></p><p><b> 4,回復(fù)信息表</b></p><p> 回復(fù)信息表(Response) 擁有如下字段:回復(fù)ID(id),標(biāo)題(title),內(nèi)
76、容(content),作者(author)</p><p> 提交時(shí)間(submittime),及主題ID(forumid)其定義如表5.4所示。</p><p> 表 5.4回復(fù)信息表</p><p> 下面是建立用戶(hù)信息的SQL的語(yǔ)句。</p><p> Create table 'user' (</p>
77、;<p> 'id' int(8) not null,</p><p> 'title' varchar(20) not null ,</p><p> 'content' text not null,</p><p> 'author' varchar(20) not nu
78、ll,</p><p> 'submittime' date, not null,</p><p> 'forumid' int(4) default null,</p><p> Primary key('id')</p><p><b> )</b></p
79、><p> 4.3 系統(tǒng)下面是建立用戶(hù)功能設(shè)計(jì)</p><p> 4.3.1 主要功能設(shè)計(jì)</p><p> BBS系統(tǒng)分為前臺(tái)和后臺(tái)兩個(gè)模塊。前臺(tái)模塊的使用對(duì)象包括了所用的用戶(hù)(管理員,用戶(hù),游客),提供的空能包括注冊(cè)賬戶(hù),瀏覽文章,發(fā)表話題,回復(fù)主題,回復(fù)留言。后臺(tái)模塊的使用對(duì)象為管理人員(管理員,版主),提供的功能包括管理用戶(hù),管理論壇,管理文章
80、。</p><p> 因此,整個(gè)BBS系統(tǒng)擁有兩個(gè)入口。</p><p> 前臺(tái)入口 http://localhost:8080/bbs/</p><p> 后臺(tái)入口 http://localhost:8080/bbs/admin_login.jsp</p><p> 4.3.2 用戶(hù)功能設(shè)計(jì)</p><p&
81、gt; 用戶(hù)在瀏覽器中輸入http://localhost:8080/bbs/,即進(jìn)入用戶(hù)登錄界面,此頁(yè)面提供用于填寫(xiě)用戶(hù)名與密碼的表單,如圖4.1所示。頁(yè)面有一個(gè)【登錄】按鈕,及“游客”,</p><p> 圖4.1 用戶(hù)登錄模塊圖</p><p> “注冊(cè)” 兩個(gè)連接,分別提供三種身份的用戶(hù)使用。</p><p> 4.3.3 系統(tǒng)管理員功能設(shè)計(jì)&l
82、t;/p><p> 管理員登錄行BBS系統(tǒng)管理操作。以帖子模塊為例,管理員登陸后,帖子管理模塊可以看到左邊有一個(gè)管理的標(biāo)簽,進(jìn)入后可以進(jìn)行這個(gè)模塊的管理。管理員可以在這里進(jìn)行對(duì)已有的帖子修改和刪除操作,也可以通過(guò)左邊的增加按扭進(jìn)行對(duì)帖子增加。其他模塊的維護(hù)方式與票務(wù)交通模塊類(lèi)似。通過(guò)后臺(tái)維護(hù)模塊,管理員能更直觀的進(jìn)行操作,在對(duì)后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行任何操作后,都可以立即觀察到效果,從而減少了錯(cuò)誤發(fā)生的機(jī)率。管理員跟普通用戶(hù)
83、的區(qū)別就在于權(quán)限不同,即是基于該網(wǎng)站的身份驗(yàn)證和權(quán)限分配上。身份驗(yàn)證和權(quán)限分配實(shí)現(xiàn)的代碼如下:</p><p> public class AdminLoginHandle extends HttpServlet {</p><p> PublicvoiddoGet(HttpServletRequestrequest,HttpServletResponse response)throw
84、s ServletException, IOException {</p><p><b> // 設(shè)計(jì)字符集</b></p><p> request.setCharacterEncoding("GB18030");</p><p> Login login = new Login();</p><
85、;p> String backNews = "";</p><p><b> // 獲得用戶(hù)名</b></p><p> String username = request.getParameter("username");</p><p> HttpSession session = re
86、quest.getSession();</p><p> String show_info = "歡迎管理員" + username;</p><p> session.setAttribute("username", username);</p><p> session.setAttribute("info
87、", show_info);</p><p><b> // 獲得用戶(hù)密碼</b></p><p> String password = request.getParameter("password");</p><p> String url = "admin_login.jsp";&l
88、t;/p><p> UserDAO ud = new UserDAO();</p><p> // 判斷用戶(hù)是否存在,并驗(yàn)證用戶(hù)的身份 管理員的級(jí)別是1,</p><p> if (ud.findBy(username, password)) {</p><p> if(ud.findGrade(username, password).e
89、quals("1")){</p><p> url = "admin_center.jsp";</p><p><b> }</b></p><p><b> else{</b></p><p> backNews = "你沒(méi)有管理員的權(quán)限!
90、";</p><p> login.setBackNews(backNews);</p><p> url = "admin_login.jsp";</p><p><b> }</b></p><p> int id = ud.findID(username, password);
91、</p><p> session.setAttribute("gid", String.valueOf(id));</p><p> System.out.println(id);</p><p><b> } else {</b></p><p> backNews = "用戶(hù)名
92、或密碼錯(cuò)誤!";</p><p> login.setBackNews(backNews);</p><p> url = "admin_login.jsp";</p><p><b> }</b></p><p> request.setAttribute("lg&quo
93、t;, login);</p><p> RequestDispatcherdispatcher=request.getRequestDispatcher(url);</p><p> dispatcher.forward(request, response);</p><p><b> }</b></p><p>
94、; public void doPost(HttpServletRequest request, HttpServletResponse response)</p><p> throws ServletException, IOException {</p><p> doGet(request, response);</p><p><b>
95、}</b></p><p><b> }</b></p><p> 管理員登陸界面如下所示:</p><p> 圖4.2 管理員登錄模塊</p><p> 各個(gè)模塊的管理功能主要是對(duì)數(shù)據(jù)庫(kù)的操作,在此就不再贅述。</p><p> 4.3.4 BBS管理功能設(shè)計(jì)</
96、p><p> 后臺(tái)模塊提供給管理人員(包括管理員和版主)使用,以對(duì)用戶(hù),論壇及文章進(jìn)行管理維護(hù)。普通用戶(hù)如果試圖使用這一模塊將被系統(tǒng)拒絕。</p><p> 4.4 關(guān)鍵技術(shù)的實(shí)現(xiàn)</p><p> 4.4.1 漢字顯示的實(shí)現(xiàn)</p><p> 在JSP的開(kāi)發(fā)過(guò)程中,英文字符的表示一般不會(huì)出現(xiàn)問(wèn)題,可能出現(xiàn)的中文問(wèn)題如下:<
97、/p><p> JSP頁(yè)面無(wú)法正確顯示中文,比如出現(xiàn)“?”或者亂碼;</p><p> JSP頁(yè)面無(wú)法正確接收來(lái)自上一個(gè)頁(yè)面提交的中文表單;</p><p> JSP從數(shù)據(jù)庫(kù)或者文件中讀出來(lái)的中文都是亂碼,寫(xiě)進(jìn)去的中文也是亂碼。</p><p> 這是跟Java中對(duì)字符的處理方式有關(guān)系的。英文字符一般都是以一個(gè)字符來(lái)表示,編碼方式主要有:
98、</p><p> ASCII碼,美國(guó)國(guó)家信息交換標(biāo)準(zhǔn)碼,是7位編碼。</p><p> ISO-8859-1碼,是8位編碼,它包含了ASCII碼,在西歐比較通用,它是Linux系統(tǒng)的字符集,同時(shí)也是HTML的基礎(chǔ)字符集。</p><p> 中文字符成千上萬(wàn),必須使用2個(gè)以上的字節(jié)來(lái)表示,不同的地區(qū)和系統(tǒng)都制定了各自的編碼方式,這樣就產(chǎn)生了很多種不同的編碼方式
99、。常用的漢字編碼方式(字符集)有如下幾種:</p><p> GB2312碼,中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)漢字信息交換用編碼,是16位編碼,簡(jiǎn)稱(chēng)國(guó)標(biāo)碼。</p><p> GBK是對(duì)GB2312的擴(kuò)展,包含GB2312的字符集。</p><p> BIG5碼,是臺(tái)灣地區(qū)采用的編碼方式。</p><p> UNICODE碼,是16位編碼,它是
100、一個(gè)標(biāo)準(zhǔn),它的目標(biāo)是明白的表現(xiàn)每種人類(lèi)語(yǔ)言中的每種已知字符。</p><p> UTF-8碼,是UNICODE的轉(zhuǎn)換格式,是一種不等長(zhǎng)的編碼。</p><p> 多種編碼方式共存造成了漢字表示方式的不統(tǒng)一,也帶來(lái)了很多麻煩。Java對(duì)于多語(yǔ)言的支持并不是很好,任何涉及Java的需要顯示漢字的軟件都會(huì)遇到漢字問(wèn)題。既然如此,在使用Java處理中文字符時(shí)就必須注意編碼問(wèn)題。有以下幾點(diǎn)要特別
101、注意:</p><p> 當(dāng)一個(gè)Java程序在運(yùn)行時(shí),所有的內(nèi)存中的字符串都是以UNICODE方式來(lái)表示的。</p><p> Java程序接受一個(gè)字符串時(shí),程序?qū)⒃撟址畯脑淳幋a方式轉(zhuǎn)換為UNICODE編碼。</p><p> Java程序輸出一個(gè)字符串時(shí),程序要將該字符串從UNICODE編碼轉(zhuǎn)換為目標(biāo)編碼方式。</p><p>
102、Java程序輸出一個(gè)字符串時(shí),程序要將該字符串從UNICODE編碼轉(zhuǎn)換為目標(biāo)編碼方式。</p><p> 在任何一個(gè)傳遞字符串的地方都可能出現(xiàn)編碼轉(zhuǎn)換。</p><p> 在編寫(xiě)涉及到中文的JSP頁(yè)面時(shí),要注意對(duì)編碼方式的考慮。主要的解決辦法是在JSP中進(jìn)行編碼轉(zhuǎn)換。由于涉及到編碼的環(huán)節(jié)很多,因此中文問(wèn)題沒(méi)有一個(gè)統(tǒng)一的解決方案,只能在出現(xiàn)問(wèn)題的地方進(jìn)行具體分析,采取適當(dāng)措施。漢字亂碼主
103、要分為兩種情況。</p><p> ?、?中文表單提交字符串</p><p> 當(dāng)頁(yè)面中的表單提交字符串時(shí),首先把字符串按照當(dāng)前頁(yè)面的編碼,轉(zhuǎn)化成字節(jié)串。然后再將每個(gè)字節(jié)轉(zhuǎn)化成“%XX”的格式提交到 Web 服務(wù)器。比如,一個(gè)編碼為GB2312的頁(yè)面,提交“中”這個(gè)字符串時(shí),提交給服務(wù)器的內(nèi)容為“%D6%D0”字節(jié)串的格式。在服務(wù)器端,Web 服務(wù)器把收到的“%D6%D0”字節(jié)串轉(zhuǎn)化成[
104、0xD6, 0xD0]UNICODE字符串,然后再根據(jù) GB2312 編碼規(guī)則得到“中”字。</p><p> 然而實(shí)際上,在將“字節(jié)串”轉(zhuǎn)化成“UNICODE 字符串”時(shí),容易將“字節(jié)串”簡(jiǎn)單地作為單字節(jié)字符串,采用每“一個(gè)字節(jié)”就是“一個(gè)字符”的方法進(jìn)行轉(zhuǎn)化。而在非英文的環(huán)境中,應(yīng)該將“字節(jié)串”作為ANSI字符串,采用適當(dāng)?shù)木幋a來(lái)得到UNICODE字符串,有可能“多個(gè)字節(jié)”才能得到“一個(gè)字符”。</p
105、><p> 在Tomcat服務(wù)器中,request.getParameter( )得到亂碼時(shí),常常是由于上述原因造成的。默認(rèn)情況下,當(dāng)提交“%D6%D0”給Tomcat服務(wù)器時(shí),request.getParameter( )將返回[0x00D6, 0x00D0]兩個(gè)UNICODE字符,而不是一個(gè)“中”字符。因此,我們需要使用bytes = string.getBytes ("iso-8859-1"
106、;) 進(jìn)行逆向操作,得到原始的字節(jié)串“%D6%D0”,再用string = new String(bytes, "GB2312") 重新得到正確的字符串“中”。</p><p> 在本系統(tǒng)中,輸出頁(yè)面按照GB2312進(jìn)行編碼,通過(guò)<%@ page contentType ="text/html; charset=gb2312"%>實(shí)現(xiàn)該設(shè)置。在實(shí)現(xiàn)添加用戶(hù)功能
107、時(shí),從表單中獲取用戶(hù)姓名等漢字信息后,要先用上述方法進(jìn)行編碼的轉(zhuǎn)換,以得到正確的字符形式。</p><p> ?、?從數(shù)據(jù)庫(kù)讀取字符串</p><p> 通過(guò)數(shù)據(jù)庫(kù)客戶(hù)端(JDBC)從數(shù)據(jù)庫(kù)服務(wù)器中讀取字符串時(shí),客戶(hù)端需要從服務(wù)器獲知所使用的 ANSI 編碼。當(dāng)數(shù)據(jù)庫(kù)服務(wù)器發(fā)送字節(jié)流給客戶(hù)端時(shí),客戶(hù)端負(fù)責(zé)將字節(jié)流按照正確的編碼轉(zhuǎn)化成 UNICODE 字符串。</p><
108、;p> 本系統(tǒng)中,數(shù)據(jù)庫(kù)中的所有表均采用MyISAM類(lèi)型、gb2312字符集、Conlation:gb2312_chinese_ci。這樣保證了數(shù)據(jù)庫(kù)中字符編碼和網(wǎng)頁(yè)中字符編碼的統(tǒng)一,數(shù)據(jù)庫(kù)中的漢字可以直接在網(wǎng)頁(yè)中顯示出來(lái),網(wǎng)頁(yè)中具有相同編碼的漢字在數(shù)據(jù)庫(kù)中也可以顯示為漢字。</p><p> 4.4.2 分頁(yè)功能的實(shí)現(xiàn)</p><p> 在各個(gè)頁(yè)面由于信息記錄比較多,必須
109、用分頁(yè)來(lái)實(shí)現(xiàn),把信息分頁(yè)顯示,</p><p> //每頁(yè)顯示多少條記錄</p><p> final int PAGE_SIZE = 4;</p><p> int pageNo = 1;</p><p> String infom = "";</p><p> int id = 0;&
110、lt;/p><p><b> // 獲取用戶(hù)信息</b></p><p> String info = (String) session.getAttribute("info");</p><p> if (info != null && !info.trim().equals(""))
111、 {</p><p> infom = info;</p><p><b> }</b></p><p><b> // 獲取id</b></p><p> String gid = (String) session.getAttribute("gid");</p&
112、gt;<p> if (gid != null && !gid.equals("")) {</p><p> id = Integer.parseInt(gid);</p><p><b> }</b></p><p><b> // 獲取頁(yè)號(hào)</b></p&
113、gt;<p> String strPageNo = request.getParameter("pageNo");</p><p> if (strPageNo != null && !strPageNo.trim().equals("")) {</p><p><b> try {</b>
114、</p><p> pageNo = Integer.parseInt(strPageNo);</p><p> } catch (NumberFormatException e) {</p><p> e.printStackTrace();</p><p><b> }</b></p><
115、p><b> }</b></p><p> if (pageNo <= 0)</p><p> pageNo = 1;</p><p><b> //總計(jì)數(shù)</b></p><p> int totalPages = 0;</p><p> Strin
116、g countsql = "select count(*) from forum ";</p><p> Connection con = ResponseDAO.getConn();</p><p> Statement stCount = ResponseDAO.createStmt(con);</p><p> ResultSet r
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- bbs論壇系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---bbs論壇系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)
- 畢業(yè)設(shè)計(jì)---網(wǎng)絡(luò)bbs論壇系統(tǒng)
- bbs論壇系統(tǒng)畢業(yè)設(shè)計(jì)2
- bbs網(wǎng)站論壇設(shè)計(jì)及實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文
- bbs論壇畢業(yè)設(shè)計(jì)論文
- bbs論壇畢業(yè)設(shè)計(jì)論文
- bbs論壇畢業(yè)設(shè)計(jì)論文
- bbs論壇畢業(yè)設(shè)計(jì)論文
- bbs論壇畢業(yè)設(shè)計(jì)論文
- bbs論壇系統(tǒng)論文-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于struts2技術(shù)bbs論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)論文_基于JavaEE技術(shù)的BBS論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).doc
- 畢業(yè)設(shè)計(jì)bbs論壇設(shè)計(jì)開(kāi)題報(bào)告
- 畢業(yè)設(shè)計(jì)開(kāi)題報(bào)告_基于JavaEE技術(shù)的BBS論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).docx
- 開(kāi)題報(bào)告--- bbs論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的論壇bbs的實(shí)現(xiàn)(doc畢業(yè)設(shè)計(jì)論文)
- 畢業(yè)設(shè)計(jì)---論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)——論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- bbs論壇畢業(yè)設(shè)計(jì)---基于jsp的計(jì)算機(jī)技術(shù)交流論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論