jsp論壇畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩23頁(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>  目錄</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開(kāi)發(fā)WEB應(yīng)用的兩種模型5</p><p>  第三章JSP中對(duì)數(shù)據(jù)庫(kù)的操作6</p&g

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

4、jsp開(kāi)發(fā)論壇8</p><p><b>  4.1環(huán)境準(zhǔn)備8</b></p><p>  4.2后臺(tái)數(shù)據(jù)庫(kù)的建立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)存在問(wèn)題及前景展望22</p><p>  5.1系統(tǒng)存在問(wèn)題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)越來(lái)越受到重視,網(wǎng)絡(luò)已經(jīng)成為人們交流信息的重要方式,所以基于網(wǎng)絡(luò)平臺(tái)的各種系統(tǒng)不斷出現(xiàn),網(wǎng)上論壇已經(jīng)成為人們交流的一種重要工具。本文首先介紹開(kāi)發(fā)工具JSP,接著介紹了JSP的數(shù)據(jù)訪問(wèn)技術(shù),最后詳細(xì)講解了用JSP開(kāi)發(fā)的論壇,這一部分主要包括數(shù)據(jù)庫(kù)的建立和系統(tǒng)模塊功能的實(shí)現(xiàn),最后說(shuō)明了系統(tǒng)存在問(wèn)題和前景展望。</p><p>  關(guān)鍵詞:論壇,數(shù)據(jù)庫(kù),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給人耳目一新的感覺(jué),而在這其中,網(wǎng)絡(luò)已經(jīng)日漸普及,任何人可以在網(wǎng)絡(luò)所提供的平臺(tái)上進(jìn)行自由的交流,網(wǎng)上論壇為人們提供了一種很好的交流方式。而在眾多網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)中,JSP技術(shù)是當(dāng)前相當(dāng)較為流行的,它可以進(jìn)行復(fù)雜的數(shù)據(jù)庫(kù)操作、很強(qiáng)的交互性以及方便用戶控制管理

11、,使它成為開(kāi)發(fā)論壇的主要技術(shù)之一。</p><p>  這套論壇系統(tǒng)正是當(dāng)今技術(shù)發(fā)展的產(chǎn)物,它是一套用JSP開(kāi)發(fā)的能在網(wǎng)上方便注冊(cè)用戶進(jìn)行的交流的系統(tǒng),有完善的功能,為用戶提供了一個(gè)良好的交流平臺(tái),本文主要闡述的就是使用JSP技術(shù)開(kāi)發(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開(kāi)發(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é)合,看起來(lái)像一個(gè)HTML網(wǎng)頁(yè),卻作為Servlet來(lái)運(yùn)行?,F(xiàn)在有許多商業(yè)應(yīng)用服務(wù)器支持JSP技術(shù),比如BEA WebLogic、IBM WebSphere、 JRun等等。使用JSP比用Servlet更簡(jiǎn)單。如果你有一個(gè)支持JSP的Web服務(wù)器,并且有一個(gè)JSP文件,你可以把它放倒任何靜態(tài)HTML文件可以放置的位置,不用編譯,不用打包,也不用進(jìn)行ClassPath的設(shè)置,就可以像訪問(wèn)普通網(wǎng)頁(yè)那樣訪問(wèn)它,服務(wù)器會(huì)自動(dòng)幫

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

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

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

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

18、素,還負(fù)責(zé)顯示在設(shè)計(jì)階段說(shuō)明的JSP靜態(tài)元素。</p><p>  JAVA編譯器把Servlet源代碼編譯成servlet類(lèi)文件。</p><p>  Servlet實(shí)例化。</p><p>  靜態(tài)的HTML頁(yè)面和圖像與在JSP頁(yè)面中聲明的動(dòng)態(tài)元素相結(jié)合,通過(guò)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)記可以分成以下幾類(lèi):</p><p>  指令:SP指令是發(fā)往JSP引擎的全局定義,使得任何對(duì)JSP頁(yè)面的特定請(qǐng)求都保持有效。指令總是出現(xiàn)在JSP文件的頂部,在任何其它JSP標(biāo)記之前。</p><p>  聲明:一個(gè)聲明塊包含從JSP

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

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

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

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

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

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

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

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

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

29、設(shè)計(jì)規(guī)范而編寫(xiě)的Java類(lèi)。Bean并不需要繼承特別的基類(lèi)(base class)或事項(xiàng)特定的接口(Interface)。JavaBeans1.01-A規(guī)范定義了該組件的5種重要的機(jī)制:</p><p>  1:內(nèi)?。↖ntrospection):組件可發(fā)表其支持的操作和屬性,同時(shí)也支持在其他組件中發(fā)現(xiàn)重復(fù)利用的對(duì)象庫(kù),例如用戶權(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):開(kāi)發(fā)者可控制組件所需的改變機(jī)制。</p><p>

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

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

33、t;<p>  Import java.sql.*;</p><p>  3.2:注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序</p><p>  在一個(gè)JDBC的驅(qū)動(dòng)程序被用來(lái)建立數(shù)據(jù)庫(kù)連接之前,必須向數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序管理器注冊(cè)該驅(qū)動(dòng)程序。管理器的主要職責(zé)是保證所有的驅(qū)動(dòng)程序?qū)ο罂杀籎DBC的用戶程序訪問(wèn)。當(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類(lèi)的靜態(tài)方法,它使Java虛擬機(jī)動(dòng)態(tài)的尋找,載入并連接指定的類(lèi)。</p><p>  一個(gè)JDBC的驅(qū)動(dòng)程序就是一個(gè)可以通過(guò)classpath找到一個(gè)Java類(lèi)。這里載入的JDBC_ODBC橋驅(qū)動(dòng)程序就在sun.jdbc.odbc包中</p><p>  3.3.建立數(shù)據(jù)庫(kù)連接</p><p>  載入一個(gè)正確的驅(qū)動(dòng)程序后,就可以用它來(lái)建立與數(shù)據(jù)庫(kù)

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

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

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

39、STMT對(duì)象。STMT對(duì)象提供了許動(dòng)方法來(lái)執(zhí)行不同的數(shù)據(jù)庫(kù)操作??梢?通過(guò)以下方式創(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ù)庫(kù)建立了連接后,接著就要進(jìn)行數(shù)據(jù)操作了。數(shù)據(jù)操作包括查詢,插入,更新和刪除等操作。要對(duì)數(shù)據(jù)庫(kù)精心操作可以使用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ù)庫(kù)連接是寶貴和有限的資源,因此必須在數(shù)據(jù)庫(kù)操作完畢后即使釋放數(shù)據(jù)庫(kù)連接。Connection 對(duì)象提供了一個(gè)簡(jiǎn)單的關(guān)閉數(shù)據(jù)庫(kù)連接的方法 close()。例如:co

42、nn.close();</p><p>  stmt.close。</p><p>  第四章 使用jsp開(kāi)發(fā)論壇</p><p><b>  4.1環(huán)境準(zhǔn)備</b></p><p>  為了利用JSP技術(shù),首先需要建立環(huán)境,這個(gè)過(guò)程如下:</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的硬盤(pán)符(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帶目錄釋放到硬盤(pán)根目錄下(c:\、d:\等),然后就可以在硬盤(pán)上找到\jswdk-1.0.1\目錄。</p><p>  啟動(dòng)則在\jswdk-1

45、.0.1\目錄下執(zhí)行startserver.bat,就可啟動(dòng)JSWDK中一個(gè)支持JSP網(wǎng)頁(yè)技術(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的歡迎頁(yè)就說(shuō)明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ù)庫(kù)的建立</p><p>  利用數(shù)據(jù)庫(kù)原理相關(guān)知識(shí),對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)和每個(gè)模塊、每個(gè)界面的具體設(shè)計(jì)。此系統(tǒng)采用的數(shù)據(jù)庫(kù)軟件是Microsoft Access。</p><p>  進(jìn)行分析設(shè)計(jì)后,應(yīng)該用Access建立5張表。下面例舉了5張表的結(jié)構(gòu)信息,具體見(jiàn)如下表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)入主頁(yè)可以看到,該主頁(yè)展現(xiàn)了該論壇的主要功能,論壇內(nèi)容以板塊類(lè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="無(wú)";</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ā)新帖只需要填寫(xiě)發(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 貼子名稱(chēng) from 貼子 Where 貼子id="+Return_id;<

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

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

85、公告管理,論壇管理,用戶管理。</p><p>  默認(rèn)進(jìn)入公告管理,如下圖</p><p>  從數(shù)據(jù)庫(kù)中取出公告數(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> 頁(yè) 轉(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+"頁(yè)</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)入論壇管理頁(yè)面,如下圖</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("論壇名稱(chēng)");</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)存在問(wèn)題及前景展望</p><p><b>  5.1系統(tǒng)存在問(wèn)題</b></p><p>  經(jīng)過(guò)1個(gè)多月的學(xué)習(xí)和實(shí)踐,基本上完成了JSP論壇系統(tǒng)的整體設(shè)計(jì)和開(kāi)發(fā),并具備一定的

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

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

129、  “學(xué)海無(wú)涯”,學(xué)習(xí)和教育是無(wú)止境的,正是由于這種無(wú)限的需求,使得各種各樣的基于網(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)用開(kāi)發(fā)勢(shì)在必行,數(shù)據(jù)庫(kù)技術(shù)更是需要和Web技術(shù)相結(jié)合,才能有更為廣闊的前景。具有簡(jiǎn)單易懂

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

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

溫馨提示

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