jsp論壇畢業(yè)論文_第1頁
已閱讀1頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  目錄1</b></p><p><b>  摘要2</b></p><p>  Abstract3</p><p><b>  第一章 引言4</b></p>&

2、lt;p>  第二章 JSP技術(shù)4</p><p>  2.1什么是JSP4</p><p>  2.3 JSP的工作原理4</p><p>  2.4 JSP的組成元素5</p><p>  2.5 JSP開發(fā)WEB應(yīng)用的兩種模型5</p><p>  第三章JSP中對(duì)數(shù)據(jù)庫的操作6</p&g

3、t;<p>  3.1JavaBean:firm文件7</p><p>  3.2:注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)程序7</p><p>  3.3.建立數(shù)據(jù)庫連接8</p><p>  3.4 數(shù)據(jù)操作8</p><p><b>  3.5關(guān)閉8</b></p><p>  第四章 使用

4、jsp開發(fā)論壇8</p><p><b>  4.1環(huán)境準(zhǔn)備8</b></p><p>  4.2后臺(tái)數(shù)據(jù)庫的建立9</p><p>  4.3模塊功能的實(shí)現(xiàn)11</p><p>  4.3.1注冊(cè)用戶論壇模塊11</p><p>  4.3.2管理員模塊16</p>&

5、lt;p>  第五章系統(tǒng)存在問題及前景展望22</p><p>  5.1系統(tǒng)存在問題22</p><p>  5.2前景展望23</p><p><b>  參考文獻(xiàn):24</b></p><p><b>  摘要</b></p><p>  隨著現(xiàn)代計(jì)算機(jī)科

6、學(xué)的發(fā)展,計(jì)算機(jī)信息系統(tǒng)越來越受到重視,網(wǎng)絡(luò)已經(jīng)成為人們交流信息的重要方式,所以基于網(wǎng)絡(luò)平臺(tái)的各種系統(tǒng)不斷出現(xiàn),網(wǎng)上論壇已經(jīng)成為人們交流的一種重要工具。本文首先介紹開發(fā)工具JSP,接著介紹了JSP的數(shù)據(jù)訪問技術(shù),最后詳細(xì)講解了用JSP開發(fā)的論壇,這一部分主要包括數(shù)據(jù)庫的建立和系統(tǒng)模塊功能的實(shí)現(xiàn),最后說明了系統(tǒng)存在問題和前景展望。</p><p>  關(guān)鍵詞:論壇,數(shù)據(jù)庫,JSP技術(shù)</p><

7、p><b>  Abstract</b></p><p>  Along with the modern computer science development, the computer information system is more and more important, the network already became the people to exchange t

8、he information important way, therefore appeared systems that based on network platform, on the net the forum already became one kind of important tool which the people exchanged. The first presentation development tool

9、JSP, and then introduced the JSP data access technologies, finally in detail explained development the online shop sy</p><p>  Keywords: BBS, The Data Base, JSP Technology</p><p><b>  第一章

10、引言</b></p><p>  隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet/Intranet應(yīng)用在全球范圍內(nèi)日益普及,在眾多的網(wǎng)絡(luò)服務(wù)中,Web給人耳目一新的感覺,而在這其中,網(wǎng)絡(luò)已經(jīng)日漸普及,任何人可以在網(wǎng)絡(luò)所提供的平臺(tái)上進(jìn)行自由的交流,網(wǎng)上論壇為人們提供了一種很好的交流方式。而在眾多網(wǎng)絡(luò)開發(fā)技術(shù)中,JSP技術(shù)是當(dāng)前相當(dāng)較為流行的,它可以進(jìn)行復(fù)雜的數(shù)據(jù)庫操作、很強(qiáng)的交互性以及方便用戶控制管理

11、,使它成為開發(fā)論壇的主要技術(shù)之一。</p><p>  這套論壇系統(tǒng)正是當(dāng)今技術(shù)發(fā)展的產(chǎn)物,它是一套用JSP開發(fā)的能在網(wǎng)上方便注冊(cè)用戶進(jìn)行的交流的系統(tǒng),有完善的功能,為用戶提供了一個(gè)良好的交流平臺(tái),本文主要闡述的就是使用JSP技術(shù)開發(fā)論壇系統(tǒng)。</p><p><b>  第二章 JSP技術(shù)</b></p><p><b>  2.1

12、什么是JSP</b></p><p>  JSP是指Java Server Pages,它是由Sun微系統(tǒng)公司于1999年6月推出的一項(xiàng)技術(shù),是基于JavaServlet以及整個(gè)java體系的Web開發(fā)技術(shù),利用這一技術(shù)可以建立先進(jìn)、安全和跨平臺(tái)的動(dòng)態(tài)網(wǎng)站。</p><p>  JSP技術(shù)是J2EE的一個(gè)關(guān)鍵技術(shù),它在更高一級(jí)的層次上抽象Servlet。它可以讓常規(guī)靜態(tài)HTML

13、與動(dòng)態(tài)產(chǎn)生的內(nèi)容相結(jié)合,看起來像一個(gè)HTML網(wǎng)頁,卻作為Servlet來運(yùn)行?,F(xiàn)在有許多商業(yè)應(yīng)用服務(wù)器支持JSP技術(shù),比如BEA WebLogic、IBM WebSphere、 JRun等等。使用JSP比用Servlet更簡單。如果你有一個(gè)支持JSP的Web服務(wù)器,并且有一個(gè)JSP文件,你可以把它放倒任何靜態(tài)HTML文件可以放置的位置,不用編譯,不用打包,也不用進(jìn)行ClassPath的設(shè)置,就可以像訪問普通網(wǎng)頁那樣訪問它,服務(wù)器會(huì)自動(dòng)幫

14、你做好其他的工作。</p><p>  2.2 JSP 與 ASP 的簡單比較    JSP 與 Microsoft 的 ASP 技術(shù)非常相似。兩者都提供在 HTML 代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。在 ASP 或 JSP 環(huán)境下, HTML 代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的 HTML 頁面只依賴于 Web 服務(wù)器,而 ASP 和 JSP 頁面需要附

15、加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到 HTML 代碼中,然后一起發(fā)送給瀏覽器。 ASP 和 JSP 都是面向 Web 服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。    ASP 的編程語言是 VBScript 之類的腳本語言, JSP 使用的是 Java ,這是兩者最明顯的區(qū)別。此外, ASP 與 JSP 還有一個(gè)更為本質(zhì)的區(qū)別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在 ASP 下,

16、VBScript 代碼被 ASP 引擎解釋執(zhí)行;在 JSP 下,代碼被編譯成 Servlet 并由 Java 虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì) JSP 頁面的第一次請(qǐng)求時(shí)發(fā)生。</p><p>  2.3 JSP的工作原理</p><p>  JSP可以通過應(yīng)用服務(wù)器使其內(nèi)容(如HTML標(biāo)記,JSP標(biāo)記和script)轉(zhuǎn)變成servlet。這個(gè)過程就是把JSP文件聲明的動(dòng)態(tài)元素和靜態(tài)元素轉(zhuǎn)變

17、成JAVA servlet,使其內(nèi)容從WEB服務(wù)器的輸出流送到瀏覽器上。</p><p>  工作過程如下:(如下圖)</p><p>  WEB 瀏覽器查詢JSP頁面。</p><p>  JSP引擎解釋JSP文件內(nèi)容。</p><p>  JSP引擎在JSP文件內(nèi)容上創(chuàng)建臨時(shí)的serlvet源代碼,產(chǎn)生的servlet除了創(chuàng)建頁面的動(dòng)態(tài)元

18、素,還負(fù)責(zé)顯示在設(shè)計(jì)階段說明的JSP靜態(tài)元素。</p><p>  JAVA編譯器把Servlet源代碼編譯成servlet類文件。</p><p>  Servlet實(shí)例化。</p><p>  靜態(tài)的HTML頁面和圖像與在JSP頁面中聲明的動(dòng)態(tài)元素相結(jié)合,通過servlet返回對(duì)象的輸出流送到web瀏覽器。</p><p>  2.4 J

19、SP的組成元素</p><p>  JSP由標(biāo)準(zhǔn)的HTML標(biāo)記和JSP標(biāo)記組成。</p><p>  JSP標(biāo)記可以分成以下幾類:</p><p>  指令:SP指令是發(fā)往JSP引擎的全局定義,使得任何對(duì)JSP頁面的特定請(qǐng)求都保持有效。指令總是出現(xiàn)在JSP文件的頂部,在任何其它JSP標(biāo)記之前。</p><p>  聲明:一個(gè)聲明塊包含從JSP

20、文件中的expression塊調(diào)用的JAVA變量和方法。聲明塊中的代碼通常使用JAVA編寫,也可以是其它腳本語言。</p><p>  Scriptlet:JSP可以利用Scriptlet塊在JSP中嵌入JAVA代碼段。Scriptlet用于在JSP頁面中嵌入一段小的代碼塊,而不是像聲明塊那樣聲明整個(gè)方法。</p><p>  注釋:有2中類型的注釋。一種是輸出注釋,能夠出現(xiàn)在瀏覽器的輸出

21、流中的。另一種是不會(huì)在輸出流中出現(xiàn)。</p><p>  表達(dá)式:它是Scriptlet的片斷,它的結(jié)果能夠轉(zhuǎn)化成字符串對(duì)象而且作為輸出流在瀏覽器中顯示。</p><p>  2.5 JSP開發(fā)WEB應(yīng)用的兩種模型</p><p>  JSP技術(shù)規(guī)范種給出了兩種使用JSP開發(fā)Web應(yīng)用的方式,這兩種方式可以歸納為模型一和模型二,這兩種模型的主要差別在于它們處理業(yè)務(wù)的

22、流程不同。模型一,如下圖所示,稱之為JSP+JavaBeans模型。在這一模型中,JSP頁面獨(dú)自響應(yīng)請(qǐng)求并將處理結(jié)果返回給客戶,所有的數(shù)據(jù)通過JavaBean來處理,JSP實(shí)現(xiàn)頁面的表現(xiàn)。</p><p><b>  圖: JSP模型一</b></p><p>  從上圖可以看出,模型一也實(shí)現(xiàn)了頁面表現(xiàn)和業(yè)務(wù)邏輯相分離。然而使用這種方式就要在JSP頁面使用大量的Jav

23、a代碼,當(dāng)需要處理的業(yè)務(wù)邏輯很復(fù)雜時(shí),這種情況會(huì)變得非常糟糕。大量嵌入式代碼使整個(gè)頁面程序變得異常復(fù)雜。對(duì)于前端界面設(shè)計(jì)的網(wǎng)頁開發(fā)人員來說,這簡直是一場噩夢(mèng)。所以,模型一不能滿足大型應(yīng)用的需要,但是對(duì)于小型應(yīng)用,因?yàn)樵撃P秃唵?,不用涉及諸多要素,從而可以很好地滿足小型應(yīng)用的需要,所以在簡單應(yīng)用中,可以考慮模型一。</p><p>  模型二,如下圖所示,稱之為JSP+Servlet+JavaBeans模型。這一模

24、型結(jié)合了JSP和Servlet技術(shù),充分利用了JSP和Servlet兩種技術(shù)原有的優(yōu)勢。這個(gè)模型使用JSP技術(shù)來表現(xiàn)頁面,使用Servlet技術(shù)完成大量的事務(wù)處理,使用Bean來存儲(chǔ)數(shù)據(jù)。Servlet用來處理請(qǐng)求的事務(wù),充當(dāng)一個(gè)控制者的角色,并負(fù)責(zé)向客戶發(fā)送請(qǐng)求。它創(chuàng)建JSP需要的Bean和對(duì)象,然后根據(jù)用戶請(qǐng)求的行為,決定將哪個(gè)JSP頁面發(fā)送給客戶。</p><p><b>  圖: JSP模型二&

25、lt;/b></p><p>  從開發(fā)的觀點(diǎn)看,模型二具有更清晰的頁面表現(xiàn),清楚的開發(fā)角色的劃分,可以充分利用開發(fā)團(tuán)隊(duì)中的網(wǎng)頁設(shè)計(jì)人員和Java開發(fā)人員。這些優(yōu)勢在大型項(xiàng)目中表現(xiàn)得尤為突出,網(wǎng)頁設(shè)計(jì)人員可以充分發(fā)揮自己的美術(shù)和設(shè)計(jì)才能來充分表現(xiàn)頁面,程序編寫人員可以充分發(fā)揮自己的業(yè)務(wù)邏輯處理思維,實(shí)現(xiàn)項(xiàng)目中的業(yè)務(wù)處理。</p><p>  第三章JSP中對(duì)數(shù)據(jù)庫的操作</p&

26、gt;<p>  數(shù)據(jù)庫連接數(shù)據(jù)庫連接對(duì)動(dòng)態(tài)網(wǎng)站來說是最為重要的部分,從JSP中訪問數(shù)據(jù)通常是通過Java Bean來實(shí)現(xiàn)的。Java中連接數(shù)據(jù)庫的技術(shù)是JDBC(Java Database Connectivity)。很多數(shù)據(jù)庫系統(tǒng)帶有JDBC驅(qū)動(dòng)程序,Java程序就通過JDBC驅(qū)動(dòng)程序與數(shù)據(jù)庫相連,執(zhí)行查詢、提取數(shù)據(jù)等等操作。Sun公司還開發(fā)了JDBC-ODBC bridge,用此技術(shù)Java程序就可以訪問帶有ODBC

27、驅(qū)動(dòng)程序的數(shù)據(jù)庫,目前大多數(shù)數(shù)據(jù)庫系統(tǒng)都帶有ODBC驅(qū)動(dòng)程序,所以Java程序能訪問諸如Oracle、Sybase、MSSQL Server和MS Access等數(shù)據(jù)庫。</p><p>  3.1JavaBean:firm文件</p><p>  JavaBeans 是基于java的組件模型,由屬性,方法和事件3個(gè)部分組成。在該模型中,Javabeans可以被修改或與其他組件結(jié)合生成新組

28、件或完成的程序。它是一種Java類,通過封裝成為具有某種功能或者處理某個(gè)業(yè)務(wù)的對(duì)象。因此,也可以通過嵌在 JSP頁面內(nèi)的Java代碼訪問Bean及其方法。Bean的含義是可重復(fù)使用的Java組件。所謂組件就是一個(gè)由可以自行進(jìn)行內(nèi)部管理的一個(gè)或幾個(gè)類所組成,外界了解其內(nèi)部信息和運(yùn)行方式的群體。使用它的對(duì)象只能通過接口來操作。</p><p>  Bean實(shí)際上是根據(jù)JavaBeans技術(shù)標(biāo)準(zhǔn)所指定的Bean的命名和

29、設(shè)計(jì)規(guī)范而編寫的Java類。Bean并不需要繼承特別的基類(base class)或事項(xiàng)特定的接口(Interface)。JavaBeans1.01-A規(guī)范定義了該組件的5種重要的機(jī)制:</p><p>  1:內(nèi)省(Introspection):組件可發(fā)表其支持的操作和屬性,同時(shí)也支持在其他組件中發(fā)現(xiàn)重復(fù)利用的對(duì)象庫,例如用戶權(quán)限和電子自動(dòng)回復(fù)等。</p><p>  2:通信(Comm

30、unication):生成和收集組件的消息事件</p><p>  3:持續(xù)(Persistence):存放組件的狀態(tài)。</p><p>  4:屬性(Properties):支持組件布局的控制,包括組件占用的空間和組件的相對(duì)位置。</p><p>  5:定制(Customization):開發(fā)者可控制組件所需的改變機(jī)制。</p><p>

31、  Javabeans可實(shí)現(xiàn)在設(shè)計(jì)平臺(tái)被規(guī)定的操作,一般可表示為簡單的圖形界面,如按鈕,光標(biāo)和菜單等,也可以是不可見的接受并處理事件的操作,如數(shù)據(jù)庫連接Bean。JSP吸引人之處很大程度上在于它使用了Javabeans組件技術(shù),但JSP中只支持不可見的Javabeans。</p><p>  創(chuàng)建一個(gè)簡單的數(shù)據(jù)庫連接Bean需要5個(gè)步驟:導(dǎo)入JDBC標(biāo)準(zhǔn)類庫,注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)程序,建立數(shù)據(jù)庫連接,數(shù)據(jù)庫操作和關(guān)閉。

32、</p><p>  導(dǎo)入JDBC標(biāo)準(zhǔn)類庫</p><p>  JDBC(Java DataBase Connectivity, Java數(shù)據(jù)庫連接)是一種可用于執(zhí)行SQL(Structured Query Language ,結(jié)構(gòu)化查詢語言)語句的應(yīng)用程序接口,為了將服務(wù)器從客戶端接受信息存入數(shù)據(jù)庫,需要使用JDBC標(biāo)準(zhǔn)類庫,所以需要在程序的開始加入以下import語句:</p&g

33、t;<p>  Import java.sql.*;</p><p>  3.2:注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)程序</p><p>  在一個(gè)JDBC的驅(qū)動(dòng)程序被用來建立數(shù)據(jù)庫連接之前,必須向數(shù)據(jù)庫驅(qū)動(dòng)程序管理器注冊(cè)該驅(qū)動(dòng)程序。管理器的主要職責(zé)是保證所有的驅(qū)動(dòng)程序?qū)ο罂杀籎DBC的用戶程序訪問。當(dāng)一個(gè)JDBC驅(qū)動(dòng)程序被載入時(shí),它將自動(dòng)地在驅(qū)動(dòng)程序管理器上注冊(cè)。</p>&l

34、t;p>  可以調(diào)用Class.forName()方法載入一個(gè)JDBC驅(qū)動(dòng)程序:</p><p>  String strDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";</p><p>  Class.forName(“strDBDriver ”); </p><p>  Class.forName()是J

35、ava的Class類的靜態(tài)方法,它使Java虛擬機(jī)動(dòng)態(tài)的尋找,載入并連接指定的類。</p><p>  一個(gè)JDBC的驅(qū)動(dòng)程序就是一個(gè)可以通過classpath找到一個(gè)Java類。這里載入的JDBC_ODBC橋驅(qū)動(dòng)程序就在sun.jdbc.odbc包中</p><p>  3.3.建立數(shù)據(jù)庫連接</p><p>  載入一個(gè)正確的驅(qū)動(dòng)程序后,就可以用它來建立與數(shù)據(jù)庫

36、的連接了。一個(gè)JDBC的數(shù)據(jù)庫連接是用數(shù)據(jù)庫URL來標(biāo)記的。連接標(biāo)記將告訴驅(qū)動(dòng)程序管理器使用哪個(gè)驅(qū)動(dòng)程序和連接哪個(gè)數(shù)據(jù)庫。數(shù)據(jù)庫URL的基本形式:</p><p>  jdbc:<JDBC驅(qū)動(dòng)程序名>:<數(shù)據(jù)源標(biāo)記></p><p>  URL的第一部分表示使用JDBC建立數(shù)據(jù)庫連接。第2部分表示所使用的JDBC驅(qū)動(dòng)程序名或網(wǎng)絡(luò)協(xié)議名。第3部分是數(shù)據(jù)源標(biāo)記,它映射所

37、需連接的數(shù)據(jù)庫。例如數(shù)據(jù)庫的數(shù)據(jù)源標(biāo)記是firm則同JDBC-ODBC橋連接該數(shù)據(jù)庫所用的數(shù)據(jù)庫URL為jdbc:odbc:firm.</p><p>  可以通過DriverManager類的靜態(tài)方法getConnection()來建立一個(gè)數(shù)據(jù)庫連接:</p><p>  String strDBUrl="jdbc:odbc:firm";</p><

38、;p>  conn=DriverManager.getConnection(strDBUrl,"sa","");</p><p>  一旦建立數(shù)據(jù)庫連接,就可以打開該目標(biāo)數(shù)據(jù)庫,并通過該連接向目標(biāo)數(shù)據(jù)庫SQL指令。SQL指令通常會(huì)執(zhí)行查詢,插入,更新和刪除等數(shù)據(jù)庫操作。要執(zhí)行SQL指令,必須通過Connection對(duì)象的createStatement()方法來創(chuàng)建一個(gè)

39、STMT對(duì)象。STMT對(duì)象提供了許動(dòng)方法來執(zhí)行不同的數(shù)據(jù)庫操作??梢?通過以下方式創(chuàng)建STMT對(duì)象:</p><p>  private Connection conn=null;</p><p>  private Statement stmt=null;</p><p>  ResultSet rs=null;</p><p>  stm

40、t=conn.createStatement();</p><p><b>  3.4 數(shù)據(jù)操作</b></p><p>  與數(shù)據(jù)庫建立了連接后,接著就要進(jìn)行數(shù)據(jù)操作了。數(shù)據(jù)操作包括查詢,插入,更新和刪除等操作。要對(duì)數(shù)據(jù)庫精心操作可以使用STMT對(duì)象的executeQuery()方法。executeQuery()方法接受一個(gè)SQL指令字符串作為參數(shù),返回結(jié)果信息是R

41、esultSet對(duì)象。具體如下:</p><p>  rs=stmt.executeQuery(sql);</p><p><b>  3.5關(guān)閉</b></p><p>  因?yàn)閿?shù)據(jù)庫連接是寶貴和有限的資源,因此必須在數(shù)據(jù)庫操作完畢后即使釋放數(shù)據(jù)庫連接。Connection 對(duì)象提供了一個(gè)簡單的關(guān)閉數(shù)據(jù)庫連接的方法 close()。例如:co

42、nn.close();</p><p>  stmt.close。</p><p>  第四章 使用jsp開發(fā)論壇</p><p><b>  4.1環(huán)境準(zhǔn)備</b></p><p>  為了利用JSP技術(shù),首先需要建立環(huán)境,這個(gè)過程如下:</p><p>  在http://java.sun.c

43、om/jdk/處下載JDK(Java2SDK、StandardEdition、v1.2.2)。JDK的安裝是首先運(yùn)行下載得到的jdk1_2_2-win.exe,然后修改系統(tǒng)環(huán)境參數(shù),在PATH參數(shù)中加入[x:]\jdk1.2.2\bin以及增加新的環(huán)境參數(shù)CLASSPATH=[x:]\jdk1.2.2\lib\tools.jar,其中[x:]是安裝JDK的硬盤符(c:、d:等)。</p><p>  在http:

44、//www.page8.cn/處下載JSWDK(JavaServerWebDevelopmentKit1.0.1)。Linux用戶可以在ttp://jakarta.apache.org/處下載Tomcat3.0。JSWDK的安裝僅需將jswdk1_0_1-win.zip帶目錄釋放到硬盤根目錄下(c:\、d:\等),然后就可以在硬盤上找到\jswdk-1.0.1\目錄。</p><p>  啟動(dòng)則在\jswdk-1

45、.0.1\目錄下執(zhí)行startserver.bat,就可啟動(dòng)JSWDK中一個(gè)支持JSP網(wǎng)頁技術(shù)的Web服務(wù)器。為了不與現(xiàn)有的Web服務(wù)器(例如IIS、PWS等)沖突,JSWDK的Web服務(wù)器使用了8080端口。</p><p>  在瀏覽器的地址欄中鍵入http://localhost:8080或者h(yuǎn)ttp://127.0.0.1:8080后,如果能看到JSWDK的歡迎頁就說明JSP實(shí)驗(yàn)環(huán)境已經(jīng)建成,可進(jìn)入下一步

46、實(shí)驗(yàn)。要關(guān)閉Web服務(wù)器則運(yùn)行stopserver.bat。</p><p>  4.2后臺(tái)數(shù)據(jù)庫的建立</p><p>  利用數(shù)據(jù)庫原理相關(guān)知識(shí),對(duì)數(shù)據(jù)庫設(shè)計(jì)和每個(gè)模塊、每個(gè)界面的具體設(shè)計(jì)。此系統(tǒng)采用的數(shù)據(jù)庫軟件是Microsoft Access。</p><p>  進(jìn)行分析設(shè)計(jì)后,應(yīng)該用Access建立5張表。下面例舉了5張表的結(jié)構(gòu)信息,具體見如下表1——表

47、5。</p><p><b>  表1 公告表</b></p><p><b>  表2 公告欄目表</b></p><p><b>  表3 帖子表</b></p><p><b>  表4在線表</b></p><p><

48、b>  表5用戶表</b></p><p>  4.3模塊功能的實(shí)現(xiàn)</p><p>  4.3.1注冊(cè)用戶論壇模塊</p><p>  進(jìn)入主頁可以看到,該主頁展現(xiàn)了該論壇的主要功能,論壇內(nèi)容以板塊類別進(jìn)行顯示,但用戶需要登陸后才能進(jìn)行發(fā)帖功能。如下圖 </p><p><b>  顯示公告的代碼:</b&

49、gt;</p><p><b>  <%</b></p><p>  Connection con=yy.getConn();</p><p>  Statement stmt=con.createStatement();</p><p>  ResultSet rs=null;</p><

50、p>  String sql="select 公告標(biāo)題,公告內(nèi)容,公告時(shí)間 from 公告 order by 公告id desc";</p><p>  String Notice="";</p><p><b>  int i=0;</b></p><p>  rs=stmt.executeQue

51、ry(sql);</p><p>  //rs.last();</p><p>  //if (rs.getRow()>0)</p><p><b>  //{</b></p><p>  while ((rs.next())&&(i<5))</p><p><b

52、>  {</b></p><p>  String Time=rs.getString("公告時(shí)間");</p><p>  Time=Time.substring(5,16);</p><p>  Notice="<B>"+rs.getString("公告標(biāo)題")+"

53、;:</B><font color=black>"+rs.getString("公告內(nèi)容")+"</font><font color=gray>&nbsp;"+Time+"</font>&nbsp;&nbsp;&nbsp;"+Notice;;</p><p&

54、gt;<b>  i++;</b></p><p><b>  }</b></p><p>  out.println(Notice);</p><p><b>  %></b></p><p>  顯示論壇列表的代碼如下:</p><p><

55、;b>  <%</b></p><p>  sql="SELECT * FROM 論壇欄目";</p><p>  rs=stmt.executeQuery(sql);</p><p>  while (rs.next())</p><p><b>  {</b></p

56、><p>  String Time_Str=rs.getString("最后發(fā)表時(shí)間");</p><p>  String Man_Str=rs.getString("最后發(fā)表人");</p><p>  String Forum_id=rs.getString("論壇id");</p>&l

57、t;p>  String Forum_Mastor=rs.getString("版主姓名");</p><p>  if (Man_Str==null)</p><p>  Man_Str="無";</p><p><b>  else</b></p><p>  Man_S

58、tr="<a href='member.jsp?member="+Man_Str+"'>"+Man_Str+"</a>";</p><p>  if ((Forum_Mastor==null)||(Forum_Mastor.equals("")))</p><p>  F

59、orum_Mastor="招騁中...";</p><p><b>  else</b></p><p>  Forum_Mastor="<a href=member.jsp?member="+Forum_Mastor+">"+Forum_Mastor+"</a>"

60、;</p><p><b>  %></b></p><p>  論壇必須要注冊(cè)用戶登陸才能使用其完整功能,未注冊(cè)用戶可以點(diǎn)擊注冊(cè)進(jìn)行用戶注冊(cè),如下圖:</p><p>  判斷注冊(cè)資料是否合法的代碼如下:</p><p><b>  <!-- </b></p><p

61、>  function CheckValue()//檢查標(biāo)題內(nèi)容是否為空值</p><p><b>  {</b></p><p>  var name=document.all.name.value;</p><p>  var re=/( )/gi</p><p>  name=name.replace(re,

62、"")</p><p><b>  re=/\</gi</b></p><p>  name=name.replace(re,"&lt;")</p><p>  if(name==""||name.length<1)</p><p><

63、b>  {</b></p><p>  alert("用戶名不能為空");</p><p>  document.all.name.focus();</p><p>  return false;</p><p><b>  }</b></p><p>  d

64、ocument.all.name.value=name;</p><p>  TheText=document.all.email.value;</p><p>  var re=/( )/gi</p><p>  TheText=TheText.replace(re,"")</p><p>  if(TheText==&

65、quot;")</p><p><b>  {</b></p><p>  alert("E_Mail地址不能為空");</p><p>  document.all.email.focus();</p><p>  return false;</p><p><

66、;b>  }</b></p><p>  if (form1.mobile.value!="")</p><p><b>  {</b></p><p>  if(checkNumber1(form1.mobile.value)==false)</p><p>  return fa

67、lse;</p><p><b>  } </b></p><p>  if (form1.oicq.value!="")</p><p><b>  {</b></p><p>  if(checkNumber2(form1.oicq.value)==false)</p&

68、gt;<p>  return false;</p><p><b>  } </b></p><p>  return true;</p><p><b>  }</b></p><p>  function checkNumber1(TempS)</p><p&

69、gt;<b>  {</b></p><p>  for(Count=0;Count<TempS.length;Count++)</p><p><b>  {</b></p><p>  TempChar=TempS.substring(Count,Count+1);</p><p>  R

70、efString="0123456789";</p><p>  if (RefString.indexOf(TempChar,0)==-1)</p><p><b>  {</b></p><p>  alert("手機(jī)號(hào)碼有非法字符,請(qǐng)輸入數(shù)字");</p><p>  for

71、m1.mobile.focus();</p><p>  return false;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  function check

72、Number2(TempS)</p><p><b>  {</b></p><p>  for(Count=0;Count<TempS.length;Count++)</p><p><b>  {</b></p><p>  TempChar=TempS.substring(Count,C

73、ount+1);</p><p>  RefString="0123456789";</p><p>  if (RefString.indexOf(TempChar,0)==-1)</p><p><b>  {</b></p><p>  alert("OICQ有非法字符,請(qǐng)輸入數(shù)字&q

74、uot;);</p><p>  form1.oicq.focus();</p><p>  return false;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&

75、gt;<p>  注冊(cè)用戶可以進(jìn)行查看帖子,回復(fù)帖子,發(fā)新帖子。其中回復(fù)和發(fā)帖必須注冊(cè)用戶才能使用。發(fā)新帖只需要填寫發(fā)表新帖的文章標(biāo)題及相關(guān)內(nèi)容后就可以發(fā)表,如下圖:</p><p><b>  相關(guān)代碼如下:</b></p><p><b>  <%</b></p><p>  if (session

76、.getValue("UserName")==null)</p><p><b>  {</b></p><p>  response.sendRedirect("err.jsp?id=5");</p><p><b>  }</b></p><p><

77、b>  %></b></p><p>  <%!String Note_Title,Note_Content,Board_Name,sql;%></p><p><b>  <%</b></p><p>  String Board_id=request.getParameter("fid&q

78、uot;);</p><p>  String Note_id=request.getParameter("noteid");</p><p>  String Return_id=request.getParameter("Returnid");</p><p>  Connection con=yy.getConn();&

79、lt;/p><p>  Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);</p><p>  ResultSet rs=null;</p><p>  if (Note_id!=null)</p><p

80、><b>  {</b></p><p>  sql="Select 貼子內(nèi)容 from 貼子 Where 貼子id="+Note_id;</p><p>  rs=stmt.executeQuery(sql);</p><p>  while (rs.next())</p><p>  Not

81、e_Content=rs.getString("貼子內(nèi)容");</p><p><b>  }else</b></p><p>  Note_Content="";</p><p>  if (Note_id!=null)</p><p>  Note_Content="

82、[quote]"+Note_Content +"[/quote]";</p><p>  if (Return_id!=null)</p><p><b>  {</b></p><p>  sql="Select 貼子名稱 from 貼子 Where 貼子id="+Return_id;<

83、/p><p>  rs=stmt.executeQuery(sql);</p><p>  while (rs.next())</p><p>  Note_Title="回復(fù):"+rs.getString("貼子名稱");</p><p><b>  }else</b></p&

84、gt;<p>  Note_Title="";</p><p>  4.3.2管理員模塊</p><p>  管理模塊是網(wǎng)站管理者專用的,必須登陸后才能使用,登陸后點(diǎn)擊管理進(jìn)入論壇管理模塊,</p><p><b>  如下圖</b></p><p>  對(duì)論壇的管理主要分3部分,分別是

85、公告管理,論壇管理,用戶管理。</p><p>  默認(rèn)進(jìn)入公告管理,如下圖</p><p>  從數(shù)據(jù)庫中取出公告數(shù)據(jù)的代碼:</p><p>  <%! String Notice_Id,sql,Not_Title,Not_Content,Submit_Button;%></p><p><b>  <%<

86、;/b></p><p>  int PageSize=10;</p><p>  int RecordCount=0;</p><p>  int PageCount=0;</p><p>  int ShowPage=1;</p><p>  Connection con=yy.getConn();</

87、p><p>  Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);</p><p>  ResultSet rs=null;</p><p>  sql="Select * from 公告 order by 公告id

88、 desc";</p><p>  // Statement stmt=con.createStatement();</p><p>  rs=stmt.executeQuery(sql);</p><p>  rs.last();</p><p>  RecordCount=rs.getRow();</p><

89、;p>  PageCount=(RecordCount % PageSize==0)?(RecordCount/PageSize):(RecordCount/PageSize+1);</p><p>  String Page=request.getParameter("page");</p><p>  if (Page!=null)</p>&l

90、t;p><b>  {</b></p><p>  ShowPage=Integer.parseInt(Page);</p><p>  if (ShowPage>PageCount)</p><p>  ShowPage=PageCount;</p><p>  else if(ShowPage<0)

91、</p><p>  ShowPage=1;</p><p><b>  }else</b></p><p>  ShowPage=1;</p><p>  if (RecordCount>0)</p><p><b>  {</b></p><p&

92、gt;  rs.absolute((ShowPage-1)*PageSize+1);</p><p>  for (int i=1;i<PageSize;i++)</p><p><b>  {</b></p><p>  Notice_Id=rs.getString("公告id");</p><p

93、><b>  %></b></p><p>  <tr bgcolor="#F7FBFF"> </p><p>  <td align="center" height="26" width="17"><img src="image/fo

94、lder.gif" width="13" height="16"></td></p><p>  <td height="26" width="302" bgcolor="#F7FBFF"><a href="manager.jsp?modifyid=<%

95、=Notice_Id%>"> </p><p>  <%=rs.getString("公告標(biāo)題")%> </a> <br /></p><p><b>  </td></b></p><p>  <td align="center"

96、; height="26" width="172"><%=rs.getString("公告時(shí)間")%></td></p><p>  <td align="center" height="26" width="116"><a href='m

97、anager.jsp?modifyid=<%=Notice_Id%>'>修改</a></td></p><p>  <td align="center" height="26" width="91"><a href='querymanager.jsp?deleteid=<%

98、=Notice_Id%>' onclick="{if(confirm('確定刪除選定的紀(jì)錄嗎?')){return true;}return false;}">刪除</a></td></p><p><b>  </tr></b></p><p><b>  <

99、%</b></p><p>  if (!rs.next())</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  %>

100、</b></p><p>  <tr bgcolor="#F7FBFF"> </p><p>  <form method="POST" action="manager.jsp"></p><p>  <td align="center" hei

101、ght="10" width="17">&nbsp;</td></p><p>  <td colspan="6" height="10" align="right"> </p><p>  現(xiàn)在是第 <font color=black >&

102、lt;%=ShowPage%></font> 頁 轉(zhuǎn)到 </p><p>  <select size="1" name="page"></p><p><b>  <%</b></p><p>  for (int i=1;i<=PageCount;i++)&l

103、t;/p><p><b>  {</b></p><p>  out.println(" <option value="+i+">"+i+"頁</option>");</p><p><b>  }</b></p><p&g

104、t;<b>  %></b></p><p>  新增公告的代碼如下:</p><p><b>  <%</b></p><p>  String Modify_Id=request.getParameter("modifyid");</p><p>  if (Mo

105、dify_Id!=null)</p><p><b>  {</b></p><p>  sql="select * from 公告 where 公告id="+Modify_Id;</p><p>  rs=stmt.executeQuery(sql);</p><p>  while(rs.next

106、())</p><p><b>  {</b></p><p>  Not_Title=rs.getString("公告標(biāo)題");</p><p>  Not_Content=rs.getString("公告內(nèi)容");</p><p>  Submit_Button="修

107、改";</p><p><b>  }</b></p><p><b>  }else</b></p><p><b>  {</b></p><p>  Modify_Id="0";</p><p>  Not_Title

108、="";</p><p>  Not_Content="";</p><p>  Submit_Button="新增";</p><p><b>  }</b></p><p><b>  %></b></p><

109、p>  點(diǎn)擊論壇管理,進(jìn)入論壇管理頁面,如下圖</p><p>  對(duì)論壇板塊進(jìn)行修改的部分代碼如下:</p><p><b>  <%</b></p><p>  String Modify_Id=request.getParameter("modifyid");</p><p>  i

110、f (Modify_Id!=null)</p><p><b>  {</b></p><p>  sql="select * from 論壇欄目 where 論壇id="+Modify_Id;</p><p>  rs=stmt.executeQuery(sql);</p><p>  while(

111、rs.next())</p><p><b>  {</b></p><p>  Not_Title=rs.getString("論壇名稱");</p><p>  Not_Content=rs.getString("版主姓名");</p><p>  Submit_Button=

112、"修改";</p><p><b>  }</b></p><p><b>  }else</b></p><p><b>  {</b></p><p>  Modify_Id="0";</p><p>  No

113、t_Title="";</p><p>  Not_Content="";</p><p>  Submit_Button="新增";</p><p><b>  }</b></p><p><b>  %></b></p>

114、;<p>  對(duì)論壇所有用戶可以進(jìn)行個(gè)人信息查詢,修改及刪除。如下圖:</p><p>  搜索刪除用戶的代碼如下:</p><p>  <%! String User_Name,User_Id,sql,Not_Title,Not_Content,Submit_Button;%></p><p><b>  <%</b

115、></p><p>  Submit_Button=request.getParameter("Submit");</p><p>  User_Name=request.getParameter("username");</p><p>  int PageSize=10;</p><p>  

116、int RecordCount=0;</p><p>  int PageCount=0;</p><p>  int ShowPage=1;</p><p>  Connection con=yy.getConn();</p><p>  Statement stmt=con.createStatement(ResultSet.TYPE_

117、SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);</p><p>  ResultSet rs=null;</p><p>  sql="Select * from 用戶表 order by 用戶id desc";</p><p>  if (Submit_Button!=null)</p>

118、;<p><b>  {</b></p><p>  if (Submit_Button.equals("刪除該用戶的所有貼子"))</p><p><b>  {</b></p><p>  sql="delete from 貼子 where 貼子作者='"+

119、User_Name+"'";</p><p>  stmt.executeUpdate(sql);</p><p>  sql="Select * from 用戶表 order by 用戶id desc";</p><p><b>  }</b></p><p>  els

120、e if (Submit_Button.equals("搜索"))</p><p><b>  {</b></p><p>  sql="Select * from 用戶表 where 用戶名='"+User_Name+"'";</p><p><b>  }

121、</b></p><p><b>  }</b></p><p>  rs=stmt.executeQuery(sql);</p><p>  rs.last();</p><p>  RecordCount=rs.getRow();</p><p>  PageCount=(Reco

122、rdCount % PageSize==0)?(RecordCount/PageSize):(RecordCount/PageSize+1);</p><p>  String Page=request.getParameter("page");</p><p>  if (Page!=null)</p><p><b>  {<

123、/b></p><p>  ShowPage=Integer.parseInt(Page);</p><p>  if (ShowPage>PageCount)</p><p>  ShowPage=PageCount;</p><p>  else if(ShowPage<0)</p><p>  

124、ShowPage=1;</p><p><b>  }else</b></p><p>  ShowPage=1;</p><p>  if (RecordCount>0)</p><p><b>  {</b></p><p>  rs.absolute((ShowP

125、age-1)*PageSize+1);</p><p>  for (int i=1;i<PageSize;i++)</p><p><b>  {</b></p><p>  User_Id=rs.getString("用戶id");</p><p>  User_Name=rs.getStr

126、ing("用戶名");</p><p><b>  %></b></p><p>  第五章系統(tǒng)存在問題及前景展望</p><p><b>  5.1系統(tǒng)存在問題</b></p><p>  經(jīng)過1個(gè)多月的學(xué)習(xí)和實(shí)踐,基本上完成了JSP論壇系統(tǒng)的整體設(shè)計(jì)和開發(fā),并具備一定的

127、使用價(jià)值。但是由于時(shí)間、技術(shù)等各方面因素,本系統(tǒng)仍不完善,有很多問題需要解決,結(jié)合在系統(tǒng)開發(fā)過程中的思考和各方面的意見,發(fā)現(xiàn)以下3點(diǎn)尚不成熟需要改進(jìn)和完善的地方:</p><p>  1)系統(tǒng)總體規(guī)劃欠缺:系統(tǒng)在開發(fā)過程中就感到總體規(guī)劃存在一定問題,如后臺(tái)數(shù)據(jù)庫表的冗余,導(dǎo)致對(duì)數(shù)據(jù)庫的操作復(fù)雜。這個(gè)問題是開發(fā)到中后期發(fā)現(xiàn)的,發(fā)現(xiàn)的時(shí)候以及為時(shí)過晚,若當(dāng)時(shí)改正,需要重新開發(fā),這時(shí)才認(rèn)識(shí)到軟件開發(fā)過程的重要性。<

128、;/p><p>  2)功能不夠完善:規(guī)劃時(shí)出現(xiàn)的功能現(xiàn)在由于時(shí)間,技術(shù)等原因不能實(shí)現(xiàn)。 </p><p>  4)代碼中沒有寫注釋。良好的寫代碼習(xí)慣是應(yīng)該在代碼中加入注釋,以便以后維護(hù)更新系統(tǒng)的時(shí)候容易讓人讀懂,這個(gè)缺陷的產(chǎn)生是因?yàn)殚_發(fā)時(shí)偏重速度導(dǎo)致的。</p><p><b>  5.2前景展望</b></p><p>

129、  “學(xué)海無涯”,學(xué)習(xí)和教育是無止境的,正是由于這種無限的需求,使得各種各樣的基于網(wǎng)絡(luò)形式的交流不斷出現(xiàn),諸如網(wǎng)上論壇、網(wǎng)上新聞組等等事物已不在是新鮮的事物了,它正在被人們廣泛地接受和使用,網(wǎng)絡(luò)強(qiáng)大的功能正在吸引著人們更進(jìn)一步的探索。</p><p>  計(jì)算機(jī)技術(shù)和Internet技術(shù)的迅猛發(fā)展和廣泛普及,使得基于Web的應(yīng)用開發(fā)勢在必行,數(shù)據(jù)庫技術(shù)更是需要和Web技術(shù)相結(jié)合,才能有更為廣闊的前景。具有簡單易懂

130、、開發(fā)效率高等特點(diǎn)的JSP技術(shù)則正適應(yīng)了這種潮流,在Web開發(fā)中發(fā)揮了十分重要的作用,成為流行的開發(fā)工具之一??梢灶A(yù)見,JSP將成為網(wǎng)上不可或缺的卓越技術(shù),利用JSP技術(shù)開發(fā)的各種網(wǎng)絡(luò)系統(tǒng)必將大行其道。</p><p><b>  參考文獻(xiàn):</b></p><p>  《JSP編程實(shí)踐——?jiǎng)討B(tài)網(wǎng)頁的引擎》 何川 方興 陳渝 齊暢 清

131、華大學(xué)出版社</p><p>  《深入 JSP 網(wǎng)絡(luò)編程》 雨陽隆春 等 清華大學(xué)出版社</p><p>  《JSP入門與提高》 楊學(xué)瑜 王志軍 劉同利 編著 清華大學(xué)出版社</p><p>  《JSP 技術(shù)大全 (1-1版) 》

溫馨提示

  • 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)論