陽光菲亞斯bbs論壇系統(tǒng)【畢業(yè)論文】_第1頁
已閱讀1頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)論文(設(shè)計(jì))</p><p> 題 目:陽光菲亞斯BBS論壇系統(tǒng)</p><p> 學(xué) 院:</p><p> 學(xué)生姓名:</p><p> 專 業(yè):電子信息工程</p><p> 班 級(jí):</p><p> 指導(dǎo)教師:</p>

2、<p> 起止日期:</p><p>  陽光菲亞斯BBS論壇系統(tǒng)</p><p><b>  摘 要</b></p><p>  隨著Internet技術(shù)的快速發(fā)展,人與人之間交流方式逐漸增多。網(wǎng)絡(luò)視頻、網(wǎng)絡(luò)聊天、博客已成為人們彼此溝通、交流信息的主要方式。為了方便信息的交流,在結(jié)合JAVA和S.S.H 技術(shù)之下開發(fā)了這個(gè)快捷、

3、界面友好的交流系統(tǒng),實(shí)現(xiàn)了一個(gè)功能相對(duì)齊全的論壇系統(tǒng),網(wǎng)友可以自由地提出問題以及幫助他人解決問題,或者交流經(jīng)驗(yàn)。開發(fā)BBS論壇系統(tǒng)的目的是提供一個(gè)供用戶交流的平臺(tái),為廣大用戶提供交流經(jīng)驗(yàn)、探討問題的網(wǎng)上社區(qū)。因此,BBS論壇系統(tǒng)最基本的功能首先是發(fā)表主題,其次是其他人員根據(jù)主題發(fā)表自己的看法。此外,為了記錄主題的發(fā)表者和主題的回復(fù)者信息,系統(tǒng)還需要提供用戶注冊(cè)和登錄的功能。只有注冊(cè)的用戶登錄后才能夠發(fā)表和回復(fù)主題,瀏覽者(游客)只能瀏覽

4、主題信息。</p><p>  論壇在Struts+Hibernate+Spring擴(kuò)展Struts框架的基礎(chǔ)上,用當(dāng)今主流的網(wǎng)站開發(fā)技術(shù)jsp語言進(jìn)行開發(fā)。論壇將采用B/S體系結(jié)構(gòu),人們通過瀏覽器就可以訪問教學(xué)網(wǎng)站的主頁,保證的服務(wù)器的安全。數(shù)據(jù)庫采用免費(fèi),小巧,易用的mysql數(shù)據(jù)庫。該論壇功能較齊全,在這里可以自由地發(fā)表自己的觀點(diǎn)和對(duì)論壇的主題發(fā)表意見,我們還可以對(duì)網(wǎng)友的問題及時(shí)地解決,獲取對(duì)自己有用的知識(shí)

5、。該論壇還有一些特殊的功能,如在線人員顯示、強(qiáng)大的搜索功能。本網(wǎng)站嚴(yán)格按照軟件項(xiàng)目開發(fā)的流程進(jìn)行開發(fā),對(duì)于網(wǎng)站開發(fā)的可行性分析、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及對(duì)網(wǎng)站的測(cè)試與維護(hù)都有詳細(xì)的論述和實(shí)現(xiàn)過程。它具有使用方便、操作靈活、運(yùn)行穩(wěn)定、安全可靠等特點(diǎn)。</p><p>  本套論壇的優(yōu)點(diǎn)在于它具有強(qiáng)大的可擴(kuò)展性和可維護(hù)性,非常適合網(wǎng)民創(chuàng)建自己的中小型BBS論壇!</p><p>  關(guān)

6、鍵詞: 在線論壇; BBS; 網(wǎng)上社區(qū); Struts; Hibernate; Spring </p><p><b>  Abstract</b></p><p>  With the rapid development of Internet technology, means of communication between people is gradu

7、ally increasing. Video, web chat, blog have become the main forms of exchanging information with each other. In addition, in order to allow people in a professional field to probe into questions and make comments, Intern

8、et on-line forums have emerged. At the forum, people can put forward their own particular problems encountered in the field, a subject that is issued, then the rest of the forum ,maki</p><p>  BBS forum syst

9、em aims to provide a communication platform for the user, for the majority of users to exchange experiences and explore issues of community. Therefore, BBS forum system is the most basic function of the first keynote, fo

10、llowed by other officers to express their views on the theme. In addition, in order to record the release of the theme and the theme of the respondents information systems also need to provide users registration and logi

11、n function. Only registered users can log on a</p><p>  This forum system is based on a Struts1.2+SQL Server 2000 implementation, it is convenient, flexible operation, stable, safe and reliable.</p>&

12、lt;p>  Key Words Online Forum;BBS; Online Community; Struts Hibernate Spring;</p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p>

13、<p><b>  目 錄III</b></p><p><b>  前言1</b></p><p>  1.系統(tǒng)分析- 2 -</p><p>  1.1 需求分析- 2 -</p><p>  1.1.1功能性需求- 2 -</p><p>  1.

14、2.基本流程- 2 -</p><p>  1.3模塊分析- 2 -</p><p>  1.4可行性分析- 3 -</p><p>  1.4.1技術(shù)可行性- 3 -</p><p>  1.4.2經(jīng)濟(jì)可行性- 3 -</p><p>  1.4.3社會(huì)可行性- 4 -</p><p&

15、gt;  2.系統(tǒng)總體設(shè)計(jì)- 5 -</p><p>  2.1 系統(tǒng)目標(biāo)- 5 -</p><p>  2.2 系統(tǒng)功能結(jié)構(gòu)- 5 -</p><p>  2.3前臺(tái)功能結(jié)構(gòu)- 5 -</p><p>  2.4 后臺(tái)功能結(jié)構(gòu)- 6 -</p><p>  2.5 系統(tǒng)流程圖- 6 -</p>

16、<p>  2.6系統(tǒng)開發(fā)環(huán)境- 7 -</p><p>  2.7安裝JDK及環(huán)境變量配置- 7 -</p><p>  2.8安裝配置Tomcat- 7 -</p><p>  2.9安裝配置Eclipse及MyEclipse- 7 -</p><p>  2.10Struts配置- 8 -</p>

17、<p>  2.11Hibernate配置- 8 -</p><p>  3 .系統(tǒng)平臺(tái)體系結(jié)構(gòu)- 9 -</p><p>  3.1 JSP語言- 9 -</p><p>  3.2 MySQL- 9 -</p><p>  3..3 JDBC技術(shù)- 9 -</p><p>  4.數(shù)據(jù)庫設(shè)計(jì)-

18、 10 -</p><p>  4.1 數(shù)據(jù)庫分析- 10 -</p><p>  4.2 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)- 10 -</p><p>  4.3 數(shù)據(jù)庫邏輯設(shè)計(jì)- 12 -</p><p>  5. 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)- 16 -</p><p>  5.1用戶登陸注冊(cè)模塊- 16 -</p>

19、<p>  5.2論壇賬戶信息模塊- 23 -</p><p>  5.3論壇文章發(fā)布模塊- 25 -</p><p>  5.4論壇文章管理模塊- 33 -</p><p>  5.5用戶管理模塊- 34 -</p><p>  5.6版面設(shè)置模塊- 36 -</p><p>  5.7版主管理

20、模塊- 38 -</p><p>  6.性能測(cè)試與分析- 41 -</p><p>  6.1軟件測(cè)試的目的- 41 -</p><p>  6.2軟件測(cè)試的任務(wù)- 41 -</p><p>  6.3測(cè)試環(huán)境- 41 -</p><p>  6.4 單元測(cè)試- 41 -</p><p

21、>  6.4.1白盒測(cè)試- 41 -</p><p>  6.5 集成測(cè)試- 43 -</p><p>  6.6確認(rèn)測(cè)試標(biāo)準(zhǔn)- 43 -</p><p>  結(jié) 論- 44 -</p><p>  致 謝- 45 -</p><p>  參考文獻(xiàn)- 46 -</p><p&g

22、t;<b>  前言</b></p><p>  現(xiàn)今的社會(huì)是一個(gè)信息飛速發(fā)達(dá)的社會(huì),在信息的交流和傳遞當(dāng)中,互聯(lián)網(wǎng)占據(jù)著一個(gè)非常重要的位置。人們可以通過互聯(lián)網(wǎng)查看最新的消息,也可以通過互聯(lián)網(wǎng)進(jìn)行信息的交流。而論壇就是大家進(jìn)行信息交流的其中一個(gè)渠道。它具有信息傳遞及時(shí),信息交流方便,利于互動(dòng)的優(yōu)點(diǎn)!論壇的概念:論壇(BBS)是Bulletin-Board-System的縮寫,即電子公告欄。它

23、是一種在Internet網(wǎng)上開放的信息服務(wù)系統(tǒng),通過論壇用戶在論壇中可以發(fā)布信息,進(jìn)行討論,聊天,共享文件等等。BBS多用于大型公司或中小型企業(yè),開放給客戶交流的平臺(tái)。對(duì)于初識(shí)網(wǎng)絡(luò)的新人來講,BBS - 就是用于在網(wǎng)絡(luò)上交流的地方,可以發(fā)表一個(gè)主題,讓大家一起來探討,也可以提出一個(gè)問題,大家一起來解決,可以上傳資源供大家分享等。在論壇里,人們之間的交流打破了空間,時(shí)間的限制。在與別人進(jìn)行交往時(shí),無須考慮自身的年齡,學(xué)歷,知識(shí),社會(huì)地位,

24、財(cái)富,外貌,健康狀況,也無從知道交談的對(duì)方的真實(shí)社會(huì)身份。這樣,參與討論的人可以處于一個(gè)平等的位置與其他人進(jìn)行任何問題的探討。論壇往往是由一些有志于此道的愛好者建立,對(duì)所有人都免費(fèi)開放。而且,由于BBS的參與人眾多,</p><p><b>  1.系統(tǒng)分析</b></p><p><b>  1.1 需求分析</b></p>&l

25、t;p>  1.1.1功能性需求</p><p>  開發(fā)BBS論壇系統(tǒng)的目的是提供一個(gè)供用戶交流的平臺(tái),為廣大用戶提供交流經(jīng)驗(yàn)、探討問題的社區(qū)。因此,BBS論壇系統(tǒng)最基本的功能首先是發(fā)表主題,其次是其他人員根據(jù)主題發(fā)表自己的看法。此外,為了記錄主題的發(fā)表者和主題的加復(fù)者信息民,系統(tǒng)還需要提供用戶注冊(cè)和登錄的功能。只有注冊(cè)的用戶登錄后才能夠發(fā)表和回復(fù)主題,瀏覽者(游客)只能瀏覽主題信息。根據(jù)用戶的需求及以上

26、的分析,BBS論壇需要具備前臺(tái)功能和后臺(tái)功能。</p><p>  (1)系統(tǒng)前臺(tái)功能:顯示各論壇類別及版面、查看版面下所有根帖、查看精華帖子、查看自己發(fā)表的帖子、搜索帖子、查看根帖內(nèi)容、用戶注冊(cè)、用戶登錄、發(fā)表帖子、回復(fù)帖子</p><p>  (2)系統(tǒng)后臺(tái)功能:進(jìn)入后臺(tái)、論壇類別管理、版面管理、用戶管理、用戶注冊(cè)。</p><p><b>  2.非

27、功能性需求</b></p><p>  (1)平臺(tái)限制:基于 Windows XP,不需要安裝其他軟件。</p><p>  (2)操作方式:全部操作都可以基于瀏覽器進(jìn)行。</p><p><b>  1.2.基本流程</b></p><p>  要想使用論壇提供的各項(xiàng)功能服務(wù),首先必須注冊(cè)?;玖鞒淌鞘紫?,

28、注冊(cè)人須閱讀互聯(lián)網(wǎng)有關(guān)法規(guī)及論壇服務(wù)條款款,并提交同意申請(qǐng);論壇管理系統(tǒng)將設(shè)定一個(gè)賬號(hào)名和密碼并詢問注冊(cè)人一些情況,如姓名、性別、年齡、身份證號(hào)碼、職業(yè)等等。注冊(cè)人必須如實(shí)填寫,系統(tǒng)能夠進(jìn)行驗(yàn)證碼,通過后整個(gè)注冊(cè)過程就基本完成。一旦注冊(cè)成功,便成為論壇的合法會(huì)員。會(huì)員擁有唯一的帳號(hào),這個(gè)帳號(hào)就是他在論壇中的通行證,是眾多會(huì)員中相互辨別的唯一標(biāo)志。在使用論壇的過程中所有會(huì)員必須遵守論壇的各項(xiàng)規(guī)章制度和行為準(zhǔn)則,否則將被管理員開除或者被封P

29、ost權(quán)! </p><p><b>  1.3模塊分析</b></p><p>  根據(jù)以上流程大致分為以下幾個(gè)模塊:</p><p> ?。ㄒ唬┯脩舻顷懽?cè)模塊</p><p>  登陸將使用帳號(hào)+密碼+驗(yàn)證碼的方式,成功后登陸信息將存儲(chǔ)在Session中,關(guān)閉瀏覽器后失效,注冊(cè)時(shí)用戶必須先閱讀論壇服務(wù)條款,之后填

30、寫論壇注冊(cè)的各項(xiàng)信息,驗(yàn)證成功后即可使用論壇的各項(xiàng)功能。</p><p>  (二)論壇賬戶信息模塊</p><p>  用戶可查看和修改自己的信息,同時(shí)也可以通過名片功能查看其他用戶信息,用戶的信息分為基本信息,詳細(xì)信息,積分信息,狀態(tài)信息等。基本信息包括登陸名,密碼,Email,用戶類型,用戶特性……等;用戶的類型分為系統(tǒng)管理員,版主和普通會(huì)員,系統(tǒng)管理員可管理所有用戶,可設(shè)置論壇的

31、版面和版主,版主可管理普通用戶的帖子,發(fā)布公告等等。用戶特性分為,專家和普特會(huì)員兩中,詳細(xì)信息包括真實(shí)姓名,通信地址,聯(lián)系電話……等;積分可通過發(fā)帖、回帖獲得,也可以在帖子被版主置頂或推薦時(shí)可獲得獎(jiǎng)勵(lì)積分;狀態(tài)信息由管理員設(shè)定,可修改或刪除用戶。</p><p>  (三)論壇文章發(fā)布模塊</p><p>  用戶登陸后可使用文章發(fā)布功能(即發(fā)帖、回復(fù)),文章內(nèi)容支持使用HTML在線編輯

32、功能,用戶可通過設(shè)定提問分?jǐn)?shù)來吸引其他用戶的參與,并可想專家體溫。</p><p> ?。ㄋ模┱搲恼鹿芾砟K</p><p>  管理功能只限版主使用,主要功能包括發(fā)布公告,文章設(shè)置置定、推薦或取消置定、取消推薦,刪除文章,刪除回復(fù)等。</p><p>  (五)用戶管理模塊</p><p>  系統(tǒng)管理員可管理各個(gè)用戶的狀態(tài),也可直接

33、刪除用戶。</p><p> ?。┌婷婀芾砟K</p><p>  系統(tǒng)管理員可設(shè)置版面信息。有添加、修改、刪除功能。</p><p>  (七)版主管理模塊</p><p>  系統(tǒng)管理員可設(shè)置各個(gè)版塊的版主,也可以取消設(shè)置。</p><p><b>  1.4可行性分析</b><

34、/p><p>  可行性分析是在系統(tǒng)調(diào)查的基礎(chǔ)上,針對(duì)新系統(tǒng)的開發(fā)是否具備必要性和可能性,對(duì)新系統(tǒng)的開發(fā)從技術(shù)、經(jīng)濟(jì)、社會(huì)的方面進(jìn)行分析和研究,以避免投資失誤,保證新系統(tǒng)的開發(fā)成功。可行性研究的目的就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。</p><p>  1.4.1技術(shù)可行性</p><p>  技術(shù)上的可行性分析主要分析技術(shù)條件能否順利完成開發(fā)工作

35、,硬、軟件能否滿足開發(fā)者的需要等。該BBS論壇管理系統(tǒng)采用了流行的JSP語言和當(dāng)前新興的Browser/Server(瀏覽器/服務(wù)器)模式進(jìn)行開發(fā)。三層的B/S體系結(jié)構(gòu)具有許多傳統(tǒng)Client/Server(客戶機(jī)/服務(wù)器)體系結(jié)構(gòu)不具備的優(yōu)點(diǎn),而且又緊密的結(jié)合了Internet/Intranet(國際互聯(lián)網(wǎng)/企業(yè)內(nèi)部互聯(lián)網(wǎng))技術(shù),是技術(shù)發(fā)展的大勢(shì)所趨,它把應(yīng)用系統(tǒng)帶入了一個(gè)嶄新的發(fā)展時(shí)代。數(shù)據(jù)庫服務(wù)器選用SQL Server 2000

36、數(shù)據(jù)庫,它能夠處理大量數(shù)據(jù),同時(shí)保持?jǐn)?shù)據(jù)的完整性并提供許多高級(jí)管理功能。它的靈活性、安全性和易用性為數(shù)據(jù)庫編程提供了良好的條件。因此,系統(tǒng)的軟件開發(fā)平臺(tái)已成熟可行。硬件方面,科技飛速發(fā)展的今天,硬件更新的速度越來越快,容量越來越大,可靠性越來越高,價(jià)格越來越低,其硬件平臺(tái)能滿足此系統(tǒng)的需要。</p><p>  1.4.2經(jīng)濟(jì)可行性</p><p>  主要是對(duì)項(xiàng)目的經(jīng)濟(jì)效益進(jìn)行評(píng)估,本系

37、統(tǒng)模擬的是提供一個(gè)供用戶交流的平臺(tái),為廣大用戶提供交流經(jīng)驗(yàn)、探討問題的社區(qū)。但實(shí)際只是用于個(gè)人的畢業(yè)設(shè)計(jì),只是模擬,也不存在資金的流動(dòng),故在經(jīng)濟(jì)上是可行的。</p><p>  1.4.3社會(huì)可行性</p><p>  隨著Internet技術(shù)的快速發(fā)展,BBS論壇已成為人們彼此溝通、交流信息的主要方式。在論壇上,人們可以對(duì)某一領(lǐng)域提出自己遇到的問題,隨后,論壇上的其他人會(huì)根據(jù)自己的學(xué)識(shí)、

38、經(jīng)驗(yàn)發(fā)表意見或提出問題的方法。BBS論壇接近了人們之間的距離,它早已成為人們網(wǎng)上生活的必備工具。所以說BBS論壇對(duì)當(dāng)今社會(huì)是相當(dāng)重要的。</p><p><b>  2.系統(tǒng)總體設(shè)計(jì)</b></p><p><b>  2.1 系統(tǒng)目標(biāo)</b></p><p>  對(duì)于典型的數(shù)據(jù)庫管理系統(tǒng),尤其是對(duì)像論壇這樣的數(shù)據(jù)流量特別

39、大的網(wǎng)絡(luò)管理系統(tǒng),必須要滿足使用方便、操作靈活等設(shè)計(jì)需求。本系統(tǒng)在設(shè)計(jì)時(shí)應(yīng)滿足以下幾個(gè)目標(biāo): </p><p>  1.采用人機(jī)對(duì)話的操作方式,界面設(shè)計(jì)美觀友好,信息查看靈活、方便、快捷、準(zhǔn)確,數(shù)據(jù)存儲(chǔ)安全可靠。</p><p>  2.全面展示系統(tǒng)內(nèi)所有分類的帖子,并進(jìn)行分頁顯示。</p><p>  3.為用戶提供一個(gè)方便、快捷的主題信息查看功能。</p&

40、gt;<p>  4.實(shí)現(xiàn)在線發(fā)表帖子。</p><p>  5.提供登錄模塊,主要用開管理員登錄系統(tǒng)和發(fā)表帖子時(shí)留下發(fā)表者的信息。</p><p>  6.用戶隨時(shí)都可以查看自己發(fā)表的帖子。</p><p>  7.對(duì)用戶輸入的數(shù)據(jù),系統(tǒng)進(jìn)行嚴(yán)格的數(shù)據(jù)檢驗(yàn),盡可能排除人為的錯(cuò)誤。</p><p>  8.系統(tǒng)最大限度地實(shí)現(xiàn)了易

41、維護(hù)性和易操作性。</p><p>  9.系統(tǒng)運(yùn)行穩(wěn)定安全可靠。</p><p>  2.2 系統(tǒng)功能結(jié)構(gòu)</p><p>  對(duì)上述各項(xiàng)功能進(jìn)行集中、分塊,按照結(jié)構(gòu)化程序設(shè)計(jì)的要求,得到系統(tǒng)功能模塊圖2-1如下:</p><p>  圖.2.1 系統(tǒng)功能模塊圖</p><p><b>  2.3前臺(tái)功能結(jié)

42、構(gòu)</b></p><p>  用戶訪問論壇首頁面后,可進(jìn)行查看版面下根貼信息、查看自己發(fā)表的帖子、查看精華帖子、搜索帖子、查看根貼信息、用戶注冊(cè)等功能。用戶在此BBS論壇中通過注冊(cè)成為該網(wǎng)站的真正用戶并成功登錄系統(tǒng)后,可進(jìn)行發(fā)表帖子、回復(fù)帖子、查看自己發(fā)表的帖子等操作。前臺(tái)功能結(jié)構(gòu)圖如圖2-2所示。</p><p>  圖2.2 BBS前臺(tái)功能結(jié)構(gòu)圖</p>&

43、lt;p>  2.4 后臺(tái)功能結(jié)構(gòu)</p><p>  若用戶的權(quán)限為管理員,則可進(jìn)入后臺(tái),可進(jìn)行論壇類別的管理、版面管理和用戶管理的操作。后臺(tái)功能結(jié)構(gòu)圖如圖2-3所示。</p><p>  圖2.3 BBS后臺(tái)功能結(jié)構(gòu)圖</p><p><b>  2.5 系統(tǒng)流程圖</b></p><p>  BBS論壇的系統(tǒng)

44、后臺(tái)流程圖如圖2-4所示。</p><p>  圖2.4 BBS論壇系統(tǒng)后臺(tái)流程圖</p><p><b>  2.6系統(tǒng)開發(fā)環(huán)境</b></p><p>  在開發(fā)此論壇的時(shí)候,需要具備下面的軟件環(huán)境</p><p><b>  服務(wù)器端:</b></p><p>  1)

45、操作系統(tǒng):Windows XP。</p><p>  2)Web服務(wù)器:Tomcat 6.0。</p><p>  3)Java開發(fā)包:JDK 1.6。</p><p>  4)數(shù)據(jù)庫:SQL Server 2000。</p><p>  5)瀏覽器:IE6.0。</p><p>  6)分辨率:最佳效果為1024&#

46、215;768像素。</p><p><b>  7)客戶端:</b></p><p>  瀏覽器:IE6.0。</p><p>  分辨率:最佳效果為1024×768像素。</p><p>  本輪系系統(tǒng)將使用JDK1.6 + Eclipse.3.3+MyEclipse6.0+Tomcat6.0進(jìn)行開發(fā),數(shù)據(jù)

47、庫為MySql。使用了SVN進(jìn)行版本控制。</p><p>  2.7安裝JDK及環(huán)境變量配置</p><p>  首先下載并安裝JDK1.6,完成后右擊"我的電腦"——>"屬性",在彈出的"系統(tǒng)屬性"選項(xiàng)面板中選擇"高級(jí)"選項(xiàng)卡,點(diǎn)擊"環(huán)境變量"按鈕,彈出"環(huán)境變量&quo

48、t;面板。</p><p>  新建系統(tǒng)變量JAVA_HOME,在變量值中輸入JDK的安裝路徑,例C:\Program Files\Java\jdk1.6.0,</p><p>  新建系統(tǒng)變量CLASSPATH,在變量值中輸入:.;%JAVA_HOME%\lib</p><p>  找到系統(tǒng)變量PATH,在變量值中追加:; %JAVA_HOME%\bin</

49、p><p>  配置完畢后,點(diǎn)擊”開始”——>”運(yùn)行”,輸入”cmd”,將打開命令提示框,在其中輸入”javac”,如果顯示為JAVA的命令信息,則安裝成功。</p><p>  2.8安裝配置Tomcat</p><p>  下載安裝Tomcat6.0,進(jìn)如Tomcat的安裝目錄下” conf”,找到server.xml并打開,在” Host”標(biāo)簽之間加<

50、Context path="" reloadable="true" docBase="E:\項(xiàng)目\WorkSpace\ChinaEn\WebRoot" />,docBase為程序文件的存放路徑,最后保存即可。</p><p>  2.9安裝配置Eclipse及MyEclipse</p><p>  由于使用MyEclipse

51、,所以只需下載MyEclipse安裝到任意目錄即可,安裝完畢后運(yùn)行MyEclipse,點(diǎn)擊菜單欄”window” ”preferences”打開系統(tǒng)配置界面,在左邊樹型菜單中點(diǎn)擊”Installed JREs”打開配置已安裝的JDK1.6,然后再點(diǎn)擊左邊樹型菜單”MyEclipse””Application Servers” ”Tomcat”” Tomcat6.x中配置Tomcat的安裝路徑以及JDK,最后點(diǎn)擊”Apply”完成。<

52、;/p><p>  2.10Struts配置</p><p>  運(yùn)行MyEclipse,點(diǎn)擊菜單欄”MyEclipse””Capabilties””Add Struts Capabilties”,按。系統(tǒng)將自動(dòng)添加Struts的配置文件以及JAR包。之后點(diǎn)擊菜單欄”File””New””O(jiān)ther”,在彈出的顯示框中選擇” MyEclipse””Web-Struts”下的文件類型(Actio

53、n、Form……等等)。</p><p>  2.11Hibernate配置</p><p>  運(yùn)行MyEclipse,點(diǎn)擊菜單欄”MyEclipse””Capabilties””Add Hibernate Capabilties”,將自動(dòng)生成hibernate.cfg.xml配置文件、HibernateSessionFactory工廠類和所需要的JAR包。之后點(diǎn)擊右上更多進(jìn)入” MyE

54、clipse Hibernate”,在”DB Browser”配置并連接到數(shù)據(jù)庫,右鍵點(diǎn)擊表名”Hibernate Reverse Engineering”按提示對(duì)表進(jìn)行映射。將自動(dòng)生成Hibernate的實(shí)體Bean和對(duì)應(yīng)的.hbm.xml文件。</p><p>  3 .系統(tǒng)平臺(tái)體系結(jié)構(gòu)</p><p>  在應(yīng)用開發(fā)領(lǐng)域中,目前系統(tǒng)平臺(tái)的體系結(jié)構(gòu)主要有兩種,即C/S(Client/S

55、erver)結(jié)構(gòu)和B/S(Brower/Server)結(jié)構(gòu)。</p><p>  C/S結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client端和Server端來實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。</p><p>  B/S結(jié)構(gòu),即瀏覽器和服務(wù)器結(jié)構(gòu)。它是一次性到位的開發(fā),能實(shí)現(xiàn)不同的人員,從不同的地點(diǎn),以不同的接入方式(比

56、如LAN,WAN等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護(hù)數(shù)據(jù)平臺(tái)和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全。特別是在JAVA這樣的跨平臺(tái)語言出現(xiàn)之后,B/S架構(gòu)管理軟件更是方便、快捷、高效。</p><p>  傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級(jí)的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶</p><p> 

57、 真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對(duì)不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺(tái)電腦以上局域網(wǎng)用戶同時(shí)使用,而且代價(jià)高,效率低。</p><p>  B/S結(jié)構(gòu),是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),用通用瀏覽器就實(shí)現(xiàn)了原來需要復(fù)

58、雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。因此本系統(tǒng)采用了B/S結(jié)構(gòu)。</p><p><b>  3.1 JSP語言</b></p><p>  JSP(JavaServer Pages)是由Sun公司倡導(dǎo),許多別的公司參與一起創(chuàng)建的一種新動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),類似其他技術(shù)標(biāo)準(zhǔn)。在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加

59、入Java程序片斷(Scriptlet)和JSP標(biāo)簽,構(gòu)成了JSP網(wǎng)頁(*.jsp)Servlet/JSP Container收到客戶端發(fā)出的請(qǐng)求時(shí),首先執(zhí)行其中的程序片斷,軟后將執(zhí)行結(jié)果以HTML格式響應(yīng)給客戶端,其中程序片斷可以是:操作數(shù)據(jù)庫,重新定向網(wǎng)頁以及發(fā)送E-Mail等等,這些都是建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端運(yùn)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,與客戶端的瀏覽器無關(guān),因此,JSP稱為Server-s

60、ide Language。所以被許多人認(rèn)為是未來最有發(fā)展前途的動(dòng)態(tài)網(wǎng)站技術(shù)之一。</p><p><b>  3.2 MySQL</b></p><p>  論壇使用的數(shù)據(jù)庫為MySql,它是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由于其體積小、速度快、總體擁有成本低、開放源碼等特點(diǎn),被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。</p><p>  

61、3.3 JDBC技術(shù)</p><p>  數(shù)據(jù)庫通信接口采用JDBC(Java Database Connectivity,Java數(shù)據(jù)庫連接)。JDBC是一組API,定義了用來訪問數(shù)據(jù)庫源的標(biāo)準(zhǔn)JAVA類庫,使用這種類庫可以使用一種標(biāo)準(zhǔn)的方法、方便地訪問數(shù)據(jù)庫資源。JDBC是用于執(zhí)行SQL語句的Java應(yīng)用程序接口,由一組用Java語言編寫的類與接口組成,在JSP中將使用JDBC來訪問數(shù)據(jù)庫。JDBC是一種規(guī)范

62、,它讓各數(shù)據(jù)庫廠商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫訪問類和接口,這樣就使得獨(dú)立于DBMS的Java應(yīng)用程序的開發(fā)工具和產(chǎn)品成為可能。</p><p>  JDBC的目標(biāo)是使應(yīng)用程序開發(fā)人員使用JDBC可以連接任何提供了JDBC驅(qū)動(dòng)程序的數(shù)據(jù)庫系統(tǒng),這樣就使得程序員無須對(duì)特定的數(shù)據(jù)庫的特點(diǎn)有過多的了解,從而大大簡化了和加快了開發(fā)過程。</p><p><b>  4.數(shù)據(jù)庫設(shè)計(jì)&l

63、t;/b></p><p><b>  4.1 數(shù)據(jù)庫分析</b></p><p>  數(shù)據(jù)庫設(shè)計(jì)是一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)數(shù)據(jù),滿足各種用戶的應(yīng)用需求(信息要求和處理要求)。在系統(tǒng)的總體模塊確定之后,接下來的工作就是數(shù)據(jù)庫的設(shè)計(jì)了,而數(shù)據(jù)庫的設(shè)計(jì)在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,因?yàn)橐粋€(gè)系統(tǒng)中數(shù)

64、據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞,直接對(duì)應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致。同時(shí),合理的數(shù)據(jù)庫結(jié)構(gòu)也將有利于程序的實(shí)現(xiàn)。</p><p>  論壇需求具體體現(xiàn)在各種信息的保存、更新和查詢,這就要求數(shù)據(jù)庫結(jié)構(gòu)能充分滿足各種信息的輸出和輸入。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程,組成一份詳盡的數(shù)據(jù)字典,為后面的具體設(shè)計(jì)打下基礎(chǔ)。</p><

65、p>  4.2 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)</p><p>  得到上面的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計(jì)出難免滿足用戶需求的各種實(shí)體,以及它們之間的關(guān)系,</p><p>  圖4.2.1 用戶(基本信息)實(shí)體</p><p>  圖4.2.2 用戶(詳細(xì)信息)實(shí)體</p><p>  圖4.2.3 論壇版面實(shí)體</p>&l

66、t;p>  圖4.2.4 版主實(shí)體</p><p>  圖4.2.5 文章帖子實(shí)體 </p><p>  圖4.2.6 文章回復(fù)實(shí)體</p><p>  4.3 數(shù)據(jù)庫邏輯設(shè)計(jì)</p><p>  在上面的實(shí)體以及實(shí)體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的表以及各個(gè)表之間的關(guān)系。</p><p>  論壇系統(tǒng)數(shù)據(jù)

67、庫中的各個(gè)表的設(shè)計(jì)結(jié)果如下所示:</p><p>  表3.1 用戶信息表(user)</p><p>  板塊表如表3-2所示:</p><p>  表3.2 板塊信息表(plate)</p><p>  帖子信息表如表3-3所示:</p><p>  表3.3 帖子信息表(posts)</p><

68、;p>  回復(fù)信息表如表3.4所示:</p><p>  表3.4 回復(fù)信息表(reply)</p><p>  版主表如表3.5所示:</p><p>  表3.5 版主表(master)</p><p>  公告信息表如表3.6所示:</p><p>  表3.6 公告信息表(notice)</p>

69、;<p>  管理員信息表如表3.7所示:</p><p>  表3.7 管理員信息表(admin)</p><p>  留言信息表如表3.8所示:</p><p>  表3.8 留言信息表(message)</p><p>  5. 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  5.1用戶登陸注冊(cè)模塊<

70、/p><p>  系統(tǒng)啟動(dòng)之后,用戶想進(jìn)入論壇使用必須先通過用于驗(yàn)證用戶名和用戶密碼的過程。界面顯示如下圖:</p><p>  圖5.1 登錄界面</p><p>  點(diǎn)擊登錄時(shí)系統(tǒng)將彈出登錄框,用戶登錄表單中放置了兩個(gè)文本框和一個(gè)登陸按鈕,用來輸入用戶名和密碼以及提交表單信息,點(diǎn)擊登陸按鈕將提交到/users/checkusername.jsp,JS代碼如下:&l

71、t;/p><p>  var name=$("#namereg").val(); </p><p>  var pass=$("#pass_login").val(); </p><p>  var day=$("#days").val();</p><p>  var days_=0

72、;</p><p>  if(day.checked==true){</p><p>  days_=day.value;</p><p><b>  }else{</b></p><p><b>  days_=0;</b></p><p><b>  }<

73、/b></p><p>  //使用JQUERY中AJAX的調(diào)用方式</p><p>  $.post("/users/checkusername.jsp?name="+name+"&pass="+pass+"&days="+days_+"&time="+new Date(),{a

74、q:0},function(data){</p><p>  if(data.indexOf("ok")>-1){//登錄成功</p><p>  var link_parent=parent.window.location.href;</p><p>  if(link_parent.indexOf("login=false&q

75、uot;)>-1){</p><p>  parent.window.location.href=data;</p><p><b>  }</b></p><p><b>  try{</b></p><p>  loginSuess()</p><p>  }cat

76、ch(e){ </p><p>  parent.loginSuess();</p><p><b>  }</b></p><p>  }else{//登錄失敗</p><p>  alert("密碼錯(cuò)誤!");</p><p><b>  }</b>&

77、lt;/p><p><b>  });</b></p><p>  checkusername.jsp中代碼如下:</p><p>  int check = StringUtil.toInt(request.getParameter("check"),0);//是否記住密碼</p><p>  int

78、days = StringUtil.toInt(request.getParameter("days"), 0);</p><p>  //根據(jù)用戶名和密碼查找數(shù)據(jù)庫`t_userbase`表</p><p>  List list = DaoFactory.getUserbaseDAO().findByLongin(name, pass);</p>&l

79、t;p>  if (list.size() > 0) {//用戶名和密碼正確</p><p>  user_login = (UserManagerInfo) list.get(0); </p><p>  UserManager.getInstants().setSessionForBaseUser(request,response,user_login,days); <

80、;/p><p>  String return_path_old = StringUtil.dealNull(""+session.getAttribute("return_url"));</p><p>  if (return_path_old.length()>0) {///返回到登陸之前的網(wǎng)頁</p><p>  i

81、f (return_path_old.indexOf("?")>-1)</p><p>  return_path_old=return_path_old+"&";</p><p><b>  else</b></p><p>  return_path_old=return_path_ol

82、d+"?";</p><p>  out.println(return_path_old); </p><p><b>  }</b></p><p>  out.println("ok");</p><p>  } else {//用戶名和密碼不正確</p><

83、;p>  if (check > 0) {</p><p><b>  %></b></p><p><b>  <script></b></p><p>  var a_link_l="密碼錯(cuò)誤"; </p><p>  parent.docume

84、nt.getElementById("passresult").innerHTML=a_link_l;</p><p><b>  </script></b></p><p><b>  <%</b></p><p><b>  return;</b></p

85、><p><b>  }</b></p><p>  out.println("nots");</p><p><b>  }</b></p><p>  用戶名和密碼驗(yàn)證成功后,登錄界面自動(dòng)關(guān)閉,用戶信息將保存session中。</p><p>  如果沒有

86、帳號(hào),則點(diǎn)擊“注冊(cè)成為網(wǎng)站會(huì)員”,注冊(cè)頁面如下圖:</p><p>  圖5.2 注冊(cè)-基本信息界面</p><p>  圖5.3 注冊(cè)-詳細(xì)信息界面</p><p>  圖5.4 注冊(cè)-聯(lián)系方式界面</p><p>  注冊(cè)信息分為三部分:</p><p><b>  基本信息</b>&l

87、t;/p><p>  所有基本信息都為必填項(xiàng),并且登錄名不能重復(fù)。</p><p><b>  詳細(xì)信息</b></p><p><b>  非必填項(xiàng)</b></p><p><b>  聯(lián)系方式</b></p><p><b>  非必填項(xiàng)<

88、;/b></p><p>  點(diǎn)擊注冊(cè)按鈕表單提交到/users/m/info/userAction.do?method=reg實(shí)現(xiàn)的代碼如下:</p><p>  public ActionForward reg(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpS

89、ervletResponse response) throws Exception {</p><p>  TUserbase tb = new TUserbase();</p><p>  tb.setIType(0);</p><p>  String loginname = StringUtil.dealNull(request.getParameter(&q

90、uot;loginname"));</p><p>  if(loginname.trim().length() == 0){</p><p>  request.setAttribute("message", "登錄名不能為空!");</p><p>  return actionMapping.findForwa

91、rd("success");</p><p><b>  }</b></p><p>  TUserbase user = UserManager.getInstants().findByVLoginname(loginname);</p><p>  if(user != null){</p><p&g

92、t;  request.setAttribute("message", "登錄名已存在!");</p><p>  return actionMapping.findForward("success");</p><p><b>  }</b></p><p>  tb.setVLog

93、inname(loginname);</p><p>  String newpwd = StringUtil.dealNull(request.getParameter("newpwd"));</p><p>  if(newpwd.length() == 0){</p><p>  request.setAttribute("mes

94、sage", "密碼不能為空!");</p><p>  return actionMapping.findForward("success");</p><p><b>  }</b></p><p>  String retpwd = StringUtil.dealNull(request.

95、getParameter("retpwd"));</p><p>  if(!newpwd.equals(retpwd)){</p><p>  request.setAttribute("message", "密碼和確認(rèn)密碼不一致!");</p><p>  return actionMapping.fi

96、ndForward("success");</p><p><b>  }</b></p><p>  tb.setVPassword(newpwd);</p><p>  String nickname = StringUtil.dealNull(request.getParameter("nickname&qu

97、ot;));</p><p>  if(nickname.trim().length() == 0){</p><p>  request.setAttribute("message", "昵稱不能為空!");</p><p>  return actionMapping.findForward("success&q

98、uot;);</p><p><b>  }</b></p><p>  tb.setVNickname(nickname);</p><p>  String realname = StringUtil.dealNull(request.getParameter("realname"));</p><p

99、>  tb.setIRealname(realname);</p><p>  String email = StringUtil.dealNull(request.getParameter("email"));</p><p>  if(email.trim().length() == 0){</p><p>  request.setA

100、ttribute("message", "電子郵件不能為空!");</p><p>  return actionMapping.findForward("success");</p><p><b>  }</b></p><p>  if(!email.matches("

101、^(.+)@(.+)[.](.+)$")){</p><p>  request.setAttribute("message", "電子郵件不正確!");</p><p>  return actionMapping.findForward("success");</p><p><b>

102、;  }</b></p><p>  tb.setIEmail(email);</p><p>  int city = StringUtil.toInt(request.getParameter("province"));</p><p>  if(city == -1){</p><p>  request

103、.setAttribute("message", "請(qǐng)選擇所在城市!");</p><p>  return actionMapping.findForward("success");</p><p><b>  }</b></p><p>  tb.setICity(city);&l

104、t;/p><p>  int year = StringUtil.toInt(request.getParameter("year"));</p><p>  int month = StringUtil.toInt(request.getParameter("month"))-1;</p><p>  int day = Str

105、ingUtil.toInt(request.getParameter("day"));</p><p>  Calendar c = Calendar.getInstance();</p><p>  c.set(year, month, day);</p><p>  tb.setIBirthday(c.getTime());</p>

106、;<p>  String sex = StringUtil.dealNull(request.getParameter("sex"));</p><p>  if(sex.equals("M") || sex.equals("F")){</p><p>  tb.setVSex(sex);</p>&

107、lt;p><b>  }</b></p><p>  UserManager.getInstants().saveUser(tb, 0);//保存到`t_userbase`表</p><p>  TUserinfo tu = new TUserinfo();</p><p>  tu.setId(tb.getId());</p>

108、;<p>  int stage = StringUtil.toInt(request.getParameter("stage"));</p><p>  if(stage == 10 || stage == 20 || stage == 30){</p><p>  tu.setIStage(stage);</p><p>  S

109、tring school = StringUtil.dealNull(request.getParameter("school"));</p><p>  String company = StringUtil.dealNull(request.getParameter("company"));</p><p>  tu.setVSchool(sch

110、ool);</p><p>  tu.setVCompany(company);</p><p><b>  }</b></p><p>  String edu_level = StringUtil.dealNull(request.getParameter("edu_level"));</p><p&

111、gt;  tu.setVEduLevel(edu_level);</p><p>  String trade = request.getParameter("trade");</p><p>  tu.setVTrade(trade);</p><p>  String month_income = request.getParameter(&

112、quot;month_income");</p><p>  tu.setVMonthIncome(month_income);</p><p>  String features = request.getParameter("features");</p><p>  tu.setIFeatures(features);</p

113、><p>  String address = request.getParameter("address");</p><p>  tu.setVAddress(address);</p><p>  String postal_code = request.getParameter("postal_code");</p&

114、gt;<p>  if(postal_code.equals("") || postal_code.matches("[0-9]{6}")){</p><p>  tu.setIPostalCode(postal_code);</p><p><b>  }</b></p><p>  St

115、ring phonenum = request.getParameter("phonenum");</p><p>  if(phonenum.equals("") || phonenum.matches("([0-9]{3,4}-)?[0-9]{7,8}(-[0-9]{3,4})?")){</p><p>  tu.setIPh

116、onenum(phonenum);</p><p><b>  }</b></p><p>  String mobilenum = StringUtil.dealNull(request.getParameter("mobilenum"));</p><p>  if(mobilenum.equals("&quo

117、t;) || mobilenum.matches("[1]{1}[0-9]{10}")){</p><p>  tu.setIMobilenum(mobilenum);</p><p><b>  }</b></p><p>  String qq = request.getParameter("qq")

118、;</p><p>  tu.setIQq(qq);</p><p>  String msn = request.getParameter("msn");</p><p>  tu.setIMsn(msn);</p><p>  UserinfoManager.getInstants().saveUserinfo(tu,

119、 0);//保存到`t_userinfo`表</p><p>  request.setAttribute("message", "注冊(cè)成功!");</p><p>  UserManager.getInstants().UploadLoginUserInfo(request,response,tb.getId(),0);//將注冊(cè)信息放到Sessi

120、on中</p><p>  return actionMapping.findForward("success");</p><p><b>  }</b></p><p>  //UserManager和UserinfoManager中的方法</p><p>  public void saveUs

121、er(TUserbase user, int userid) {</p><p>  DaoFactory.getUserbaseDAO().save(user);</p><p>  DaoFactory.getSyslogDAO().log("添加新用戶名:" + user.getVLoginname() + ",編號(hào):" + user.getI

溫馨提示

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