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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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中對數(shù)據(jù)庫的操作6</p&g

3、t;<p>  3.1JavaBean:firm文件7</p><p>  3.2:注冊數(shù)據(jù)庫驅(qū)動程序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)境準備8</b></p><p>  4.2后臺數(shù)據(jù)庫的建立9</p><p>  4.3模塊功能的實現(xiàn)11</p><p>  4.3.1注冊用戶論壇模塊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>  參考文獻:24</b></p><p><b>  摘要</b></p><p>  隨著現(xiàn)代計算機科

6、學(xué)的發(fā)展,計算機信息系統(tǒng)越來越受到重視,網(wǎng)絡(luò)已經(jīng)成為人們交流信息的重要方式,所以基于網(wǎng)絡(luò)平臺的各種系統(tǒng)不斷出現(xiàn),網(wǎng)上論壇已經(jīng)成為人們交流的一種重要工具。本文首先介紹開發(fā)工具JSP,接著介紹了JSP的數(shù)據(jù)訪問技術(shù),最后詳細講解了用JSP開發(fā)的論壇,這一部分主要包括數(shù)據(jù)庫的建立和系統(tǒng)模塊功能的實現(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>  隨著計算機及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet/Intranet應(yīng)用在全球范圍內(nèi)日益普及,在眾多的網(wǎng)絡(luò)服務(wù)中,Web給人耳目一新的感覺,而在這其中,網(wǎng)絡(luò)已經(jīng)日漸普及,任何人可以在網(wǎng)絡(luò)所提供的平臺上進行自由的交流,網(wǎng)上論壇為人們提供了一種很好的交流方式。而在眾多網(wǎng)絡(luò)開發(fā)技術(shù)中,JSP技術(shù)是當前相當較為流行的,它可以進行復(fù)雜的數(shù)據(jù)庫操作、很強的交互性以及方便用戶控制管理

11、,使它成為開發(fā)論壇的主要技術(shù)之一。</p><p>  這套論壇系統(tǒng)正是當今技術(shù)發(fā)展的產(chǎn)物,它是一套用JSP開發(fā)的能在網(wǎng)上方便注冊用戶進行的交流的系統(tǒng),有完善的功能,為用戶提供了一個良好的交流平臺,本文主要闡述的就是使用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月推出的一項技術(shù),是基于JavaServlet以及整個java體系的Web開發(fā)技術(shù),利用這一技術(shù)可以建立先進、安全和跨平臺的動態(tài)網(wǎng)站。</p><p>  JSP技術(shù)是J2EE的一個關(guān)鍵技術(shù),它在更高一級的層次上抽象Servlet。它可以讓常規(guī)靜態(tài)HTML

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

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

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

16、VBScript 代碼被 ASP 引擎解釋執(zhí)行;在 JSP 下,代碼被編譯成 Servlet 并由 Java 虛擬機執(zhí)行,這種編譯操作僅在對 JSP 頁面的第一次請求時發(fā)生。</p><p>  2.3 JSP的工作原理</p><p>  JSP可以通過應(yīng)用服務(wù)器使其內(nèi)容(如HTML標記,JSP標記和script)轉(zhuǎn)變成servlet。這個過程就是把JSP文件聲明的動態(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)建臨時的serlvet源代碼,產(chǎn)生的servlet除了創(chuàng)建頁面的動態(tài)元

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

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

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

21、流中的。另一種是不會在輸出流中出現(xiàn)。</p><p>  表達式:它是Scriptlet的片斷,它的結(jié)果能夠轉(zhuǎn)化成字符串對象而且作為輸出流在瀏覽器中顯示。</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頁面獨自響應(yīng)請求并將處理結(jié)果返回給客戶,所有的數(shù)據(jù)通過JavaBean來處理,JSP實現(xiàn)頁面的表現(xiàn)。</p><p><b>  圖: JSP模型一</b></p><p>  從上圖可以看出,模型一也實現(xiàn)了頁面表現(xiàn)和業(yè)務(wù)邏輯相分離。然而使用這種方式就要在JSP頁面使用大量的Jav

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

39、STMT對象。STMT對象提供了許動方法來執(zhí)行不同的數(shù)據(jù)庫操作??梢?通過以下方式創(chuàng)建STMT對象:</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ù)庫建立了連接后,接著就要進行數(shù)據(jù)操作了。數(shù)據(jù)操作包括查詢,插入,更新和刪除等操作。要對數(shù)據(jù)庫精心操作可以使用STMT對象的executeQuery()方法。executeQuery()方法接受一個SQL指令字符串作為參數(shù),返回結(jié)果信息是R

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

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

43、om/jdk/處下載JDK(Java2SDK、StandardEdition、v1.2.2)。JDK的安裝是首先運行下載得到的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>  啟動則在\jswdk-1

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

46、實驗。要關(guān)閉Web服務(wù)器則運行stopserver.bat。</p><p>  4.2后臺數(shù)據(jù)庫的建立</p><p>  利用數(shù)據(jù)庫原理相關(guān)知識,對數(shù)據(jù)庫設(shè)計和每個模塊、每個界面的具體設(shè)計。此系統(tǒng)采用的數(shù)據(jù)庫軟件是Microsoft Access。</p><p>  進行分析設(shè)計后,應(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模塊功能的實現(xiàn)</p><p>  4.3.1注冊用戶論壇模塊</p><p>  進入主頁可以看到,該主頁展現(xiàn)了該論壇的主要功能,論壇內(nèi)容以板塊類別進行顯示,但用戶需要登陸后才能進行發(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 公告標題,公告內(nèi)容,公告時間 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("公告時間");</p><p>  Time=Time.substring(5,16);</p><p>  Notice="<B>"+rs.getString("公告標題")+"

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ā)表時間");</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>  論壇必須要注冊用戶登陸才能使用其完整功能,未注冊用戶可以點擊注冊進行用戶注冊,如下圖:</p><p>  判斷注冊資料是否合法的代碼如下:</p><p><b>  <!-- </b></p><p

61、>  function CheckValue()//檢查標題內(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("手機號碼有非法字符,請輸入數(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有非法字符,請輸入數(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>  注冊用戶可以進行查看帖子,回復(fù)帖子,發(fā)新帖子。其中回復(fù)和發(fā)帖必須注冊用戶才能使用。發(fā)新帖只需要填寫發(fā)表新帖的文章標題及相關(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)站管理者專用的,必須登陸后才能使用,登陸后點擊管理進入論壇管理模塊,</p><p><b>  如下圖</b></p><p>  對論壇的管理主要分3部分,分別是

85、公告管理,論壇管理,用戶管理。</p><p>  默認進入公告管理,如下圖</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("公告標題")%> </a> <br /></p><p><b>  </td></b></p><p>  <td align="center"

96、; height="26" width="172"><%=rs.getString("公告時間")%></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('確定刪除選定的紀錄嗎?')){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("公告標題");</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>  點擊論壇管理,進入論壇管理頁面,如下圖</p><p>  對論壇板塊進行修改的部分代碼如下:</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>  對論壇所有用戶可以進行個人信息查詢,修改及刪除。如下圖:</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個多月的學(xué)習(xí)和實踐,基本上完成了JSP論壇系統(tǒng)的整體設(shè)計和開發(fā),并具備一定的

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

128、;/p><p>  2)功能不夠完善:規(guī)劃時出現(xiàn)的功能現(xiàn)在由于時間,技術(shù)等原因不能實現(xiàn)。 </p><p>  4)代碼中沒有寫注釋。良好的寫代碼習(xí)慣是應(yīng)該在代碼中加入注釋,以便以后維護更新系統(tǒng)的時候容易讓人讀懂,這個缺陷的產(chǎn)生是因為開發(fā)時偏重速度導(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ò)強大的功能正在吸引著人們更進一步的探索。</p><p>  計算機技術(shù)和Internet技術(shù)的迅猛發(fā)展和廣泛普及,使得基于Web的應(yīng)用開發(fā)勢在必行,數(shù)據(jù)庫技術(shù)更是需要和Web技術(shù)相結(jié)合,才能有更為廣闊的前景。具有簡單易懂

130、、開發(fā)效率高等特點的JSP技術(shù)則正適應(yīng)了這種潮流,在Web開發(fā)中發(fā)揮了十分重要的作用,成為流行的開發(fā)工具之一。可以預(yù)見,JSP將成為網(wǎng)上不可或缺的卓越技術(shù),利用JSP技術(shù)開發(fā)的各種網(wǎng)絡(luò)系統(tǒng)必將大行其道。</p><p><b>  參考文獻:</b></p><p>  《JSP編程實踐——動態(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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論