版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘要</b></p><p> 本文主要介紹了基于JAVA技術(shù)的論壇系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),系統(tǒng)包含七個(gè)模塊:論壇用戶登陸注冊模塊,論壇賬戶信息模塊,論壇文章發(fā)布模塊,論壇文章管理模塊,用戶管理模塊,版面設(shè)置模塊,版主管理模塊。論文詳細(xì)描述了這些模塊的結(jié)構(gòu)、功能以及具體設(shè)計(jì)過程。為了達(dá)到運(yùn)行穩(wěn)定、高效的目的,系統(tǒng)基于J2EE平臺開發(fā),采用MVC模式,使用目前流行St
2、ruts + Hibernate框架,部分采用JSP + JavaBeans組件技術(shù),并且使用了Memcached緩存以及Hibernate數(shù)據(jù)緩存。界面設(shè)計(jì)人性化,操作簡單。頁面CSS以及JavaScript的編寫遵循最新W3C標(biāo)準(zhǔn),均支持在多種主流瀏覽器中使用。</p><p><b> Abstract</b></p><p> This article m
3、ainly introduced based on the JAVA technology forum system design and the realization, the system contains six modules: Forum user debarkation registration module, forum account information module, forum article issue mo
4、dule, forum article administration module, user administration module, moderator administration module.The paper described these module structure, the function as well as the concrete design process in detail.In order to
5、 achieve movement stable, highly effective goa</p><p><b> 關(guān)鍵字</b></p><p> JAVA, MVC, AJAX,Struts, Hibernate, JSP, BBS目 錄</p><p> 第一章、論壇應(yīng)用簡介6</p><p><
6、b> 一、論壇的分類6</b></p><p> 二、論壇開發(fā)的技術(shù)類型6</p><p><b> 三、設(shè)計(jì)目標(biāo)6</b></p><p> 第二章 論壇的需求分析7</p><p><b> 一、基本流程7</b></p><p>
7、<b> 二、模塊分析7</b></p><p> 第三章、論壇的系統(tǒng)分析8</p><p> 一、開發(fā)工具的選擇8</p><p> 二、運(yùn)行環(huán)境的選擇:8</p><p> 三、數(shù)據(jù)庫的選擇8</p><p> 第四章、論壇的系統(tǒng)設(shè)計(jì)8</p><p
8、><b> 一、數(shù)據(jù)庫設(shè)計(jì)9</b></p><p> 二、數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)9</p><p> 三、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)12</p><p> 第五章、開發(fā)環(huán)境配置14</p><p> 一、安裝JDK及環(huán)境變量配置15</p><p> 二、安裝配置Tomcat15&
9、lt;/p><p> 二、安裝配置Eclipse及MyEclipse15</p><p> 三、Struts配置15</p><p> 四、Hibernate配置15</p><p> 第六章、系統(tǒng)實(shí)現(xiàn)技術(shù)16</p><p> 一、用戶登陸注冊模塊16</p><p> 二、
10、論壇賬戶信息模塊23</p><p> 三、論壇文章發(fā)布模塊25</p><p> 四、論壇文章管理模塊32</p><p> 五、用戶管理模塊33</p><p> 六、版面設(shè)置模塊36</p><p> 七、版主管理模塊38</p><p> 第六章、性能測試與分析
11、41</p><p><b> 結(jié)束語42</b></p><p><b> 參考文獻(xiàn)42</b></p><p><b> 前 言</b></p><p> 現(xiàn)今的社會是一個(gè)信息飛速發(fā)達(dá)的社會,在信息的交流和傳遞當(dāng)中,互聯(lián)網(wǎng)占據(jù)著一個(gè)非常重要的位置。人們可以通過互
12、聯(lián)網(wǎng)查看最新的消息,也可以通過互聯(lián)網(wǎng)進(jìn)行信息的交流。而論壇就是大家進(jìn)行信息交流的其中一個(gè)渠道。它具有信息傳遞及時(shí),信息交流方便,利于互動(dòng)的優(yōu)點(diǎn)!論壇的概念:論壇(BBS)是Bulletin-Board-System的縮寫,即電子公告欄。它是一種在Internet網(wǎng)上開放的信息服務(wù)系統(tǒng),通過論壇用戶在論壇中可以發(fā)布信息,進(jìn)行討論,聊天,共享文件等等。BBS多用于大型公司或中小型企業(yè),開放給客戶交流的平臺。對于初識網(wǎng)絡(luò)的新人來講,BBS -
13、 就是用于在網(wǎng)絡(luò)上交流的地方,可以發(fā)表一個(gè)主題,讓大家一起來探討,也可以提出一個(gè)問題,大家一起來解決,可以上傳資源供大家分享等。在論壇里,人們之間的交流打破了空間,時(shí)間的限制。在與別人進(jìn)行交往時(shí),無須考慮自身的年齡,學(xué)歷,知識,社會地位,財(cái)富,外貌,健康狀況,也無從知道交談的對方的真實(shí)社會身份。這樣,參與討論的人可以處于一個(gè)平等的位置與其他人進(jìn)行任何問題的探討。論壇往往是由一些有志于此道的愛好者建立,對所有人都免費(fèi)開放。而且,由于BBS
14、的參與人眾多,</p><p> 第一章、論壇應(yīng)用簡介</p><p><b> 一、論壇的分類</b></p><p> 早期的BBS由教育機(jī)構(gòu)或研究機(jī)構(gòu)管理,現(xiàn)在多數(shù)網(wǎng)站上都建立了自己的BBS 系統(tǒng),供網(wǎng)民通過網(wǎng)絡(luò)來結(jié)交更多的朋友,表達(dá)更多的想法。 目前國內(nèi)的BBS已經(jīng)十分普遍,可以說是不計(jì)其數(shù),其中BBS大致可以分為5類: <
15、/p><p> ?。?)校園BBS:CERNET建立以來,校園BBS恨快地發(fā)展了起來,目前很多大學(xué)都有了BBS,幾乎遍及全國上下。象清華大學(xué)、北京大學(xué)等等都建立了自己的BBS系統(tǒng),清華大學(xué)的水木清華很受學(xué)生和網(wǎng)民們的喜愛。大多數(shù)BBS是由各校的網(wǎng)絡(luò)中心建立的,也有私人性質(zhì)的BBS。 </p><p> ?。?〕商業(yè)BBS站:這里主要是進(jìn)行有關(guān)商業(yè)的商業(yè)宣傳,產(chǎn)品推薦等等,目前手機(jī)的商業(yè)站、電腦
16、的商業(yè)站、房地產(chǎn)的商業(yè)站比比皆是。</p><p> ?。?〕技術(shù)BBS站:如CSDN技術(shù)論壇,主要為各種技術(shù)開發(fā)人員和相關(guān)企業(yè)提供全面的信息服務(wù)和技術(shù)服務(wù)。</p><p> ?。?)專業(yè)BBS站:這里所說的專業(yè)BBS是指部委和公司的BBS,它主要用于建立地域性的文件傳輸和信息發(fā)布系統(tǒng)。 </p><p> ?。?)綜合BBS:主要關(guān)于新聞,娛樂,以及各種熱門話題
17、的交流</p><p> ?。?)資源BBS:主要用于各種資源的發(fā)布并提供用戶下載</p><p> (7)個(gè)人BBS:有些個(gè)人主頁的制作者們在自己的個(gè)人主頁上建設(shè)了BBS,用于接受別人的想法,更有利于與好友進(jìn)行溝通。</p><p> 二、論壇開發(fā)的技術(shù)類型</p><p> 目前主流的論壇開發(fā)技術(shù)有基于ASP、PHP(有名如Disc
18、uz)、JAVA(如OSPOD)的等等,每種技術(shù)都有自己的優(yōu)點(diǎn)、缺點(diǎn)。Java是由Sun Microsystems公司推出的Java程序設(shè)計(jì)語言(以下簡稱Java語言)和Java平臺的總稱。Java語言是一種簡單的,面象對象的,分布式的,解釋的,健壯的,安全的,結(jié)構(gòu)的中立的,可移植的,性能優(yōu)異的,多線程的,動(dòng)態(tài)的語言。有著“一次編寫到處運(yùn)行”的特點(diǎn),并且與平臺為關(guān)。它還有著眾多的開源項(xiàng)目、豐富的資源庫以及眾多的中間件開發(fā)商。正因?yàn)镴AV
19、A有如此多的優(yōu)點(diǎn),使它的支持者越來越多,同時(shí)對Web的迅速發(fā)展起到至關(guān)重要的作用。本論壇系統(tǒng)也將基于JAVA來實(shí)現(xiàn)。</p><p><b> 三、設(shè)計(jì)目標(biāo)</b></p><p> 本論壇系統(tǒng)將使用JAVA程序設(shè)計(jì)語言開發(fā),屬于技術(shù)支持和維護(hù)類,采用提問-回答模式,與CSDN相似,為用戶提供各種信息資源和思想交流的場所。</p><p>
20、 第二章 論壇的需求分析</p><p><b> 一、基本流程</b></p><p> 要想使用論壇提供的各項(xiàng)功能服務(wù),首先必須注冊?;玖鞒淌鞘紫?,注冊人須閱讀互聯(lián)網(wǎng)有關(guān)法規(guī)及論壇服務(wù)條款款,并提交同意申請;論壇管理系統(tǒng)將設(shè)定一個(gè)賬號名和密碼并詢問注冊人一些情況,如姓名、性別、年齡、身份證號碼、職業(yè)等等。注冊人必須如實(shí)填寫,系統(tǒng)能夠進(jìn)行驗(yàn)證碼,通過后整個(gè)
21、注冊過程就基本完成。一旦注冊成功,便成為論壇的合法會員。會員擁有唯一的帳號,這個(gè)帳號就是他在論壇中的通行證,是眾多會員中相互辨別的唯一標(biāo)志。在使用論壇的過程中所有會員必須遵守論壇的各項(xiàng)規(guī)章制度和行為準(zhǔn)則,否則將被管理員開除或者被封Post權(quán)! </p><p><b> 二、模塊分析</b></p><p> 根據(jù)以上流程大致分為以下幾個(gè)模塊:</p>
22、<p> ?。ㄒ唬┯脩舻顷懽阅K</p><p> 登陸將使用帳號+密碼+驗(yàn)證碼的方式,成功后登陸信息將存儲在Session中,關(guān)閉瀏覽器后失效,注冊時(shí)用戶必須先閱讀論壇服務(wù)條款,之后填寫論壇注冊的各項(xiàng)信息,驗(yàn)證成功后即可使用論壇的各項(xiàng)功能。</p><p> ?。ǘ┱搲~戶信息模塊</p><p> 用戶可查看和修改自己的信息,同時(shí)也可以
23、通過名片功能查看其他用戶信息,用戶的信息分為基本信息,詳細(xì)信息,積分信息,狀態(tài)信息等。基本信息包括登陸名,密碼,Email,用戶類型,用戶特性……等;用戶的類型分為系統(tǒng)管理員,版主和普通會員,系統(tǒng)管理員可管理所有用戶,可設(shè)置論壇的版面和版主,版主可管理普通用戶的帖子,發(fā)布公告等等。用戶特性分為,專家和普特會員兩中,詳細(xì)信息包括真實(shí)姓名,通信地址,聯(lián)系電話……等;積分可通過發(fā)帖、回帖獲得,也可以在帖子被版主置頂或推薦時(shí)可獲得獎(jiǎng)勵(lì)積分;狀態(tài)
24、信息由管理員設(shè)定,可修改或刪除用戶。</p><p> ?。ㄈ┱搲恼掳l(fā)布模塊</p><p> 用戶登陸后可使用文章發(fā)布功能(即發(fā)帖、回復(fù)),文章內(nèi)容支持使用HTML在線編輯功能,用戶可通過設(shè)定提問分?jǐn)?shù)來吸引其他用戶的參與,并可想專家體溫。</p><p> ?。ㄋ模┱搲恼鹿芾砟K</p><p> 管理功能只限版主使用,主要功
25、能包括發(fā)布公告,文章設(shè)置置定、推薦或取消置定、取消推薦,刪除文章,刪除回復(fù)等。</p><p> ?。ㄎ澹┯脩艄芾砟K</p><p> 系統(tǒng)管理員可管理各個(gè)用戶的狀態(tài),也可直接刪除用戶。</p><p> ?。┌婷婀芾砟K</p><p> 系統(tǒng)管理員可設(shè)置版面信息。有添加、修改、刪除功能。</p><p&g
26、t; ?。ㄆ撸┌嬷鞴芾砟K</p><p> 系統(tǒng)管理員可設(shè)置各個(gè)版塊的版主,也可以取消設(shè)置。</p><p> 第三章、論壇的系統(tǒng)分析</p><p><b> 一、開發(fā)工具的選擇</b></p><p> 目前JAVA的主流開發(fā)工具有JBuilder、VisualAge for Java、Forte for
27、 Java、Visual J++、Eclipse、NetBeans、JCreator+J2SDK、JDK+記事本、EditPlus+ J2SDK等等。一般開發(fā)J2EE項(xiàng)目時(shí)都需要安裝應(yīng)用服務(wù)器(中間件)和相應(yīng)的開發(fā)工具。論壇使用的是Eclipse+MyEclipse+Tomcat6.0作為開發(fā)工具以及應(yīng)用服務(wù)器。Eclipse是一種可擴(kuò)展的開放源代碼IDE,由IBM出資組建。Eclipse框架靈活、擴(kuò)展容易,最大特點(diǎn)是它能接受由Java
28、開發(fā)者自己編寫的開放源代碼插件,同時(shí)為工具開發(fā)商提供了更好的靈活性,使他們能更好地控制自己的軟件技術(shù),因此很受開發(fā)人員的喜愛,目前它的支持者越來越多,大有成為Java第一開發(fā)工具之勢。MyEclipse是Eclipse的一款插件,利用它我們可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML, Struts, JS
29、F, CSS, J</p><p> 二、運(yùn)行環(huán)境的選擇:</p><p> 本系統(tǒng)的運(yùn)行環(huán)境應(yīng)用:</p><p> Windows 2000、Windows XP操作系統(tǒng)。</p><p><b> 三、數(shù)據(jù)庫的選擇</b></p><p> 論壇使用的數(shù)據(jù)庫為MySql,它是一個(gè)小
30、型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由于其體積小、速度快、總體擁有成本低、開放源碼等特點(diǎn),被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。</p><p> 第四章、論壇的系統(tǒng)設(shè)計(jì)</p><p> 對上述各項(xiàng)功能進(jìn)行集中、分塊,按照結(jié)構(gòu)化程序設(shè)計(jì)的要求,得到系統(tǒng)功能模塊圖如下:</p><p> 圖4.1 系統(tǒng)功能模塊圖</p><p><
31、b> 一、數(shù)據(jù)庫設(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),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應(yīng)用需求(信息要求和處理要求)。在系統(tǒng)的總體模塊確定之后,接下來的工作就是數(shù)據(jù)庫的設(shè)計(jì)了,而數(shù)據(jù)庫的設(shè)計(jì)在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,因?yàn)橐粋€(gè)系統(tǒng)中數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞,直接對應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的
32、數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲的效率,保證數(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><p><b> 二、數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)</b>
33、</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><p> 圖4.2.4 版
34、主實(shí)體</p><p> 圖4.2.5 文章帖子實(shí)體 </p><p> 圖4.2.6 文章回復(fù)實(shí)體</p><p> 三、數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)</p><p> 在上面的實(shí)體以及實(shí)體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的表以及各個(gè)表之間的關(guān)系。</p><p> 論壇系統(tǒng)數(shù)據(jù)庫中的各個(gè)表的設(shè)計(jì)結(jié)果如下所示:&l
35、t;/p><p> t_userbase 用戶基本信息表</p><p> t_userinfo 用戶詳細(xì)信息表</p><p> ※`t_userbase`表中的`id`和`t_userinfo`表中的`id`相互關(guān)聯(lián)</p><p> t_bbs_topic文章帖子表</p><p> t_bbs_rever
36、t文章回復(fù)表</p><p> t_propertie 版面屬性表</p><p> t_bbs_group版主表</p><p> 第五章、開發(fā)環(huán)境配置</p><p> 本輪系系統(tǒng)將使用JDK1.6 + Eclipse.3.3+MyEclipse6.0+Tomcat6.0進(jìn)行開發(fā),數(shù)據(jù)庫為MySql。使用了SVN進(jìn)行版本控
37、制。</p><p> 一、安裝JDK及環(huán)境變量配置</p><p> 首先下載并安裝JDK1.6,完成后右擊"我的電腦"——>"屬性",在彈出的"系統(tǒng)屬性"選項(xiàng)面板中選擇"高級"選項(xiàng)卡,點(diǎn)擊"環(huán)境變量"按鈕,彈出"環(huán)境變量"面板。</p><
38、;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</p><p> 配置
39、完畢后,點(diǎn)擊”開始”——>”運(yùn)行”,輸入”cmd”,將打開命令提示框,在其中輸入”javac”,如果顯示為JAVA的命令信息,則安裝成功。</p><p> 二、安裝配置Tomcat</p><p> 下載安裝Tomcat6.0,進(jìn)如Tomcat的安裝目錄下” conf”,找到server.xml并打開,在” Host”標(biāo)簽之間加<Context path="&q
40、uot; reloadable="true" docBase="E:\項(xiàng)目\WorkSpace\ChinaEn\WebRoot" />,docBase為程序文件的存放路徑,最后保存即可。</p><p> 二、安裝配置Eclipse及MyEclipse</p><p> 由于使用MyEclipse,所以只需下載MyEclipse安裝到任意目
41、錄即可,安裝完畢后運(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”完成。</p><p> 三、
42、Struts配置</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”下的文件類型(Action、Form……等等)。</p>
43、<p> 四、Hibernate配置</p><p> 運(yùn)行MyEclipse,點(diǎn)擊菜單欄”MyEclipse””Capabilties””Add Hibernate Capabilties”,將自動(dòng)生成hibernate.cfg.xml配置文件、HibernateSessionFactory工廠類和所需要的JAR包。之后點(diǎn)擊右上更多進(jìn)入” MyEclipse Hibernate”,在”DB Bro
44、wser”配置并連接到數(shù)據(jù)庫,右鍵點(diǎn)擊表名”Hibernate Reverse Engineering”按提示對表進(jìn)行映射。將自動(dòng)生成Hibernate的實(shí)體Bean和對應(yīng)的.hbm.xml文件。</p><p> 第六章、系統(tǒng)實(shí)現(xiàn)技術(shù)</p><p> 一、用戶登陸注冊模塊</p><p> 系統(tǒng)啟動(dòng)之后,用戶想進(jìn)入論壇使用必須先通過用于驗(yàn)證用戶名和用戶密碼
45、的過程。界面顯示如下圖:</p><p> 圖6.1.1 登錄界面</p><p> 點(diǎn)擊登錄時(shí)系統(tǒng)將彈出登錄框,用戶登錄表單中放置了兩個(gè)文本框和一個(gè)登陸按鈕,用來輸入用戶名和密碼以及提交表單信息,點(diǎn)擊登陸按鈕將提交到/users/checkusername.jsp,JS代碼如下:</p><p> var name=$("#namereg&quo
46、t;).val(); </p><p> var pass=$("#pass_login").val(); </p><p> var day=$("#days").val();</p><p> var days_=0;</p><p> if(day.checked==true){<
47、/p><p> days_=day.value;</p><p><b> }else{</b></p><p><b> days_=0;</b></p><p><b> }</b></p><p> //使用JQUERY中AJAX的調(diào)用方式&
48、lt;/p><p> $.post("/users/checkusername.jsp?name="+name+"&pass="+pass+"&days="+days_+"&time="+new Date(),{aq:0},function(data){</p><p> if(data
49、.indexOf("ok")>-1){//登錄成功</p><p> var link_parent=parent.window.location.href;</p><p> if(link_parent.indexOf("login=false")>-1){</p><p> parent.window.
50、location.href=data;</p><p><b> }</b></p><p><b> try{</b></p><p> loginSuess()</p><p> }catch(e){ </p><p> parent.loginSuess();
51、</p><p><b> }</b></p><p> }else{//登錄失敗</p><p> alert("密碼錯(cuò)誤!");</p><p><b> }</b></p><p><b> });</b></p
52、><p> checkusername.jsp中代碼如下:</p><p> int check = StringUtil.toInt(request.getParameter("check"),0);//是否記住密碼</p><p> int days = StringUtil.toInt(request.getParameter("
53、;days"), 0);</p><p> //根據(jù)用戶名和密碼查找數(shù)據(jù)庫`t_userbase`表</p><p> List list = DaoFactory.getUserbaseDAO().findByLongin(name, pass);</p><p> if (list.size() > 0) {//用戶名和密碼正確</p
54、><p> user_login = (UserManagerInfo) list.get(0); </p><p> UserManager.getInstants().setSessionForBaseUser(request,response,user_login,days); </p><p> String return_path_old = Strin
55、gUtil.dealNull(""+session.getAttribute("return_url"));</p><p> if (return_path_old.length()>0) {///返回到登陸之前的網(wǎng)頁</p><p> if (return_path_old.indexOf("?")>-1)&l
56、t;/p><p> return_path_old=return_path_old+"&";</p><p><b> else</b></p><p> return_path_old=return_path_old+"?";</p><p> out.println
57、(return_path_old); </p><p><b> }</b></p><p> out.println("ok");</p><p> } else {//用戶名和密碼不正確</p><p> if (check > 0) {</p><p>&l
58、t;b> %></b></p><p><b> <script></b></p><p> var a_link_l="密碼錯(cuò)誤"; </p><p> parent.document.getElementById("passresult").innerHTM
59、L=a_link_l;</p><p><b> </script></b></p><p><b> <%</b></p><p><b> return;</b></p><p><b> }</b></p>&
60、lt;p> out.println("nots");</p><p><b> }</b></p><p> 用戶名和密碼驗(yàn)證成功后,登錄界面自動(dòng)關(guān)閉,用戶信息將保存session中。</p><p> 如果沒有帳號,則點(diǎn)擊“注冊成為網(wǎng)站會員”,注冊頁面如下圖:</p><p> 圖6
61、.1.2 注冊-基本信息界面</p><p> 圖6.1.3 注冊-詳細(xì)信息界面</p><p> 圖6.1.4 注冊-聯(lián)系方式界面</p><p> 注冊信息分為三部分:</p><p><b> 基本信息</b></p><p> 所有基本信息都為必填項(xiàng),并且登錄名不能重復(fù)。&
62、lt;/p><p><b> 詳細(xì)信息</b></p><p><b> 非必填項(xiàng)</b></p><p><b> 聯(lián)系方式</b></p><p><b> 非必填項(xiàng)</b></p><p> 點(diǎn)擊注冊按鈕表單提交到/us
63、ers/m/info/userAction.do?method=reg實(shí)現(xiàn)的代碼如下:</p><p> public ActionForward reg(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception {&
64、lt;/p><p> TUserbase tb = new TUserbase();</p><p> tb.setIType(0);</p><p> String loginname = StringUtil.dealNull(request.getParameter("loginname"));</p><p>
65、 if(loginname.trim().length() == 0){</p><p> request.setAttribute("message", "登錄名不能為空!");</p><p> return actionMapping.findForward("success");</p><p>
66、;<b> }</b></p><p> TUserbase user = UserManager.getInstants().findByVLoginname(loginname);</p><p> if(user != null){</p><p> request.setAttribute("message"
67、, "登錄名已存在!");</p><p> return actionMapping.findForward("success");</p><p><b> }</b></p><p> tb.setVLoginname(loginname);</p><p> Str
68、ing newpwd = StringUtil.dealNull(request.getParameter("newpwd"));</p><p> if(newpwd.length() == 0){</p><p> request.setAttribute("message", "密碼不能為空!");</p>
69、<p> return actionMapping.findForward("success");</p><p><b> }</b></p><p> String retpwd = StringUtil.dealNull(request.getParameter("retpwd"));</p>
70、<p> if(!newpwd.equals(retpwd)){</p><p> request.setAttribute("message", "密碼和確認(rèn)密碼不一致!");</p><p> return actionMapping.findForward("success");</p>&
71、lt;p><b> }</b></p><p> tb.setVPassword(newpwd);</p><p> String nickname = StringUtil.dealNull(request.getParameter("nickname"));</p><p> if(nickname.tri
72、m().length() == 0){</p><p> request.setAttribute("message", "昵稱不能為空!");</p><p> return actionMapping.findForward("success");</p><p><b> }</
73、b></p><p> tb.setVNickname(nickname);</p><p> String realname = StringUtil.dealNull(request.getParameter("realname"));</p><p> tb.setIRealname(realname);</p>
74、<p> String email = StringUtil.dealNull(request.getParameter("email"));</p><p> if(email.trim().length() == 0){</p><p> request.setAttribute("message", "電子郵件不能為空
75、!");</p><p> return actionMapping.findForward("success");</p><p><b> }</b></p><p> if(!email.matches("^(.+)@(.+)[.](.+)$")){</p><p
76、> request.setAttribute("message", "電子郵件不正確!");</p><p> return actionMapping.findForward("success");</p><p><b> }</b></p><p> tb.setI
77、Email(email);</p><p> int city = StringUtil.toInt(request.getParameter("province"));</p><p> if(city == -1){</p><p> request.setAttribute("message", "請選擇
78、所在城市!");</p><p> return actionMapping.findForward("success");</p><p><b> }</b></p><p> tb.setICity(city);</p><p> int year = StringUtil.t
79、oInt(request.getParameter("year"));</p><p> int month = StringUtil.toInt(request.getParameter("month"))-1;</p><p> int day = StringUtil.toInt(request.getParameter("day
80、"));</p><p> Calendar c = Calendar.getInstance();</p><p> c.set(year, month, day);</p><p> tb.setIBirthday(c.getTime());</p><p> String sex = StringUtil.dealNu
81、ll(request.getParameter("sex"));</p><p> if(sex.equals("M") || sex.equals("F")){</p><p> tb.setVSex(sex);</p><p><b> }</b></p>&l
82、t;p> UserManager.getInstants().saveUser(tb, 0);//保存到`t_userbase`表</p><p> TUserinfo tu = new TUserinfo();</p><p> tu.setId(tb.getId());</p><p> int stage = StringUtil.toInt(r
83、equest.getParameter("stage"));</p><p> if(stage == 10 || stage == 20 || stage == 30){</p><p> tu.setIStage(stage);</p><p> String school = StringUtil.dealNull(request.g
84、etParameter("school"));</p><p> String company = StringUtil.dealNull(request.getParameter("company"));</p><p> tu.setVSchool(school);</p><p> tu.setVCompany(c
85、ompany);</p><p><b> }</b></p><p> String edu_level = StringUtil.dealNull(request.getParameter("edu_level"));</p><p> tu.setVEduLevel(edu_level);</p>
86、<p> String trade = request.getParameter("trade");</p><p> tu.setVTrade(trade);</p><p> String month_income = request.getParameter("month_income");</p><p&g
87、t; tu.setVMonthIncome(month_income);</p><p> String features = request.getParameter("features");</p><p> tu.setIFeatures(features);</p><p> String address = request.ge
88、tParameter("address");</p><p> tu.setVAddress(address);</p><p> String postal_code = request.getParameter("postal_code");</p><p> if(postal_code.equals("
89、") || postal_code.matches("[0-9]{6}")){</p><p> tu.setIPostalCode(postal_code);</p><p><b> }</b></p><p> String phonenum = request.getParameter("p
90、honenum");</p><p> if(phonenum.equals("") || phonenum.matches("([0-9]{3,4}-)?[0-9]{7,8}(-[0-9]{3,4})?")){</p><p> tu.setIPhonenum(phonenum);</p><p><b&
91、gt; }</b></p><p> String mobilenum = StringUtil.dealNull(request.getParameter("mobilenum"));</p><p> if(mobilenum.equals("") || mobilenum.matches("[1]{1}[0-9]{1
92、0}")){</p><p> tu.setIMobilenum(mobilenum);</p><p><b> }</b></p><p> String qq = request.getParameter("qq");</p><p> tu.setIQq(qq);</p
93、><p> String msn = request.getParameter("msn");</p><p> tu.setIMsn(msn);</p><p> UserinfoManager.getInstants().saveUserinfo(tu, 0);//保存到`t_userinfo`表</p><p>
94、 request.setAttribute("message", "注冊成功!");</p><p> UserManager.getInstants().UploadLoginUserInfo(request,response,tb.getId(),0);//將注冊信息放到Session中</p><p> return actionMappi
95、ng.findForward("success");</p><p><b> }</b></p><p> //UserManager和UserinfoManager中的方法</p><p> public void saveUser(TUserbase user, int userid) {</p>
96、<p> DaoFactory.getUserbaseDAO().save(user);</p><p> DaoFactory.getSyslogDAO().log("添加新用戶名:" + user.getVLoginname() + ",編號:" + user.getId(),userid);</p><p><b>
97、}</b></p><p> public void saveUserinfo(TUserinfo user, int userid) {</p><p> DaoFactory.getUserinfoDAO().save(user);</p><p> DaoFactory.getSyslogDAO().log("添加用戶詳細(xì)信息: I
98、D=" + user.getId(),userid);</p><p><b> }</b></p><p> //TUserbaseDAO 和 TUserinfoDAO數(shù)據(jù)對象方法</p><p> public void save(TUserinfo transientInstance) {</p><p
99、> log.debug("saving TUserinfo instance");</p><p> Transaction tx = getSession().beginTransaction();</p><p><b> try {</b></p><p> getSession().save(trans
100、ientInstance);</p><p> tx.commit();</p><p> log.debug("save successful");</p><p> } catch (Exception re) {</p><p> log.error("save failed", re);
101、</p><p><b> }</b></p><p><b> }</b></p><p> public void save(TUserbase transientInstance) {</p><p> log.debug("saving TUserbase instance
102、");</p><p> Transaction tx = getSession().beginTransaction();</p><p><b> try {</b></p><p> getSession().save(transientInstance);</p><p> tx.commit(
103、);</p><p> log.debug("save successful");</p><p> } catch (Exception e) {</p><p> log.error("save failed", e);</p><p><b> }</b></
104、p><p><b> }</b></p><p> 二、論壇賬戶信息模塊</p><p> 用戶可以對自己注冊時(shí)填寫的資料進(jìn)行修改,登錄后點(diǎn)擊修改資料,用戶資料的修改為分基本資料,詳細(xì)資料,聯(lián)系方式,修改密碼,修改郵件5個(gè)步驟進(jìn)行,頁面如圖6.2.1所示:</p><p> 圖6.2.1 修改基本資料界面</
105、p><p> 用戶昵稱將做為論壇用戶身份標(biāo)識顯示,所在城市的選擇將調(diào)用Ajax進(jìn)行實(shí)時(shí)查詢,當(dāng)點(diǎn)擊我在:工作時(shí)將顯示學(xué)校和公司輸入框,點(diǎn)擊我在:上學(xué)時(shí)只顯示學(xué)校輸入框,點(diǎn)擊其他時(shí)學(xué)校和公司輸入框隱藏。點(diǎn)擊保存修改將提交到/users/m/info/userAction.do?method=updateJbzl,代碼如下:</p><p> public ActionForward upda
106、teJbzl(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception {</p><p> UserManagerInfo u_login_info = UserManager.getInstants().getNo
107、wLoginBaseUserId(request, response);</p><p> int userid = u_login_info.getId();</p><p> TUserbase tb = UserManager.getInstants().findById(userid);</p><p> if(tb == null){</p&g
108、t;<p> request.setAttribute("message", "用戶不存在!");</p><p> return actionMapping.findForward("success");</p><p><b> }</b></p><p>
109、String nickname = StringUtil.dealNull(request.getParameter("nickname"));</p><p> if(nickname.trim().length() == 0){</p><p> request.setAttribute("message", "昵稱不能為空!&qu
110、ot;);</p><p> return actionMapping.findForward("success");</p><p><b> }</b></p><p> tb.setVNickname(nickname);</p><p> int city = StringUtil.t
111、oInt(request.getParameter("city"));</p><p> if(city == -1){</p><p> request.setAttribute("message", "請選擇所在城市!");</p><p> return actionMapping.findFo
112、rward("success");</p><p><b> }</b></p><p> tb.setICity(city);</p><p> UserManager.getInstants().updateUser(tb,userid); //更新數(shù)據(jù)庫表`t_userbase`</p><p
113、> TUserinfo tu = UserManager.getInstants().getUserInfO(userid);</p><p> if(tu.getId() == null){</p><p> tu.setId(userid);</p><p><b> }</b></p><p> i
114、nt stage = StringUtil.toInt(request.getParameter("stage"));</p><p> if(stage == 10 || stage == 20 || stage == 30){</p><p> tu.setIStage(stage);</p><p> String school =
115、null;</p><p> String company = null;</p><p> if(stage == 20){</p><p> school = StringUtil.dealNull(request.getParameter("school"));</p><p> }else if(stage
116、 == 30){</p><p> school = StringUtil.dealNull(request.getParameter("school"));</p><p> company = StringUtil.dealNull(request.getParameter("company"));</p><p>&
117、lt;b> }</b></p><p> tu.setVSchool(school);</p><p> tu.setVCompany(company);</p><p><b> }</b></p><p> UserinfoManager.getInstants().updateUseri
118、nfo(tu,userid);//更新數(shù)據(jù)庫表`t_userinfo`</p><p> UserManager.getInstants().UploadLoginUserInfo(request,response,userid,0);//查詢更新的信息重新保存到Session中</p><p> return actionMapping.findForward("succe
119、ss");</p><p><b> }</b></p><p> 其他4個(gè)步驟同上,分別調(diào)用</p><p> /users/m/info/userAction.do?method=updateXxzl//修改詳細(xì)資料</p><p> /users/m/info/userAction.do?meth
120、od=updateLxfs//修改聯(lián)系方式</p><p> /users/m/info/userAction.do?method=updatePasw//修改修改密碼</p><p> /users/m/info/userAction.do?method=updateMail//修改郵件</p><p> 三、論壇文章發(fā)布模塊</p><
121、p> 文章發(fā)布包括發(fā)帖、回復(fù)功能,是論壇的基本功能,用戶可以發(fā)表文字、圖片、文件等等,發(fā)帖或回復(fù)成功用戶能得到一定的積分獎(jiǎng)勵(lì),為了實(shí)現(xiàn)這一功能,我們采用FCKeditor,它是一款在線HTML編輯器,具有與微軟office軟件相似的功能,與之不同的是FCKeditor不需要用戶安裝任何形式的客戶端,F(xiàn)CKeditor程序非常精簡而且功能強(qiáng)大。</p><p> 要配置使用FCKeditor首先下載FCK
122、editor的程序代碼放在項(xiàng)目的WebRoot目錄下并在web.xml中加入如下:</p><p><b> <servlet></b></p><p> <servlet-name>Connector</servlet-name></p><p> <servlet-class>com.f
123、redck.FCKeditor.connector.ConnectorServlet</servlet-class></p><p> <init-param></p><p> <param-name>baseDir</param-name></p><p> <param-value>/uploa
124、dfile/</param-value></p><p> </init-param></p><p> <init-param></p><p> <param-name>httpPath</param-name></p><p> <param-value>h
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---基于java的web的bbs論壇設(shè)計(jì)
- 基于java的“博客”論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 畢業(yè)設(shè)計(jì)(論文)-基于java技術(shù)的論壇(bbs)
- 基于java的論壇bbs的實(shí)現(xiàn)(doc畢業(yè)設(shè)計(jì)論文)
- 基于java的論壇系統(tǒng)
- 基于java_web的郵件管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)設(shè)計(jì)
- 基于java的“博客”論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)+開題報(bào)告+文獻(xiàn)綜述】
- 基于java的網(wǎng)上論壇系統(tǒng)
- 畢業(yè)設(shè)計(jì)----基于web的畢業(yè)設(shè)計(jì)課題系統(tǒng)
- 畢業(yè)設(shè)計(jì)---基于java的航空售票系統(tǒng)
- 畢業(yè)設(shè)計(jì)---基于web的畢業(yè)設(shè)計(jì)選題管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)--基于java web的網(wǎng)上商城的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)--基于java的在線考試系統(tǒng)
- 基于java的餐飲管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于java的在線考試系統(tǒng)
- 基于java_web技術(shù)開發(fā)的bbs論壇
- 畢業(yè)設(shè)計(jì)---基于java用戶管理系統(tǒng)
- 基于web的畢業(yè)設(shè)計(jì)管理系統(tǒng)
- bbs論壇系統(tǒng)畢業(yè)設(shè)計(jì)
- java論壇管理系統(tǒng)——畢業(yè)論文
評論
0/150
提交評論