網(wǎng)絡(luò)聊天室系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)分析_第1頁
網(wǎng)絡(luò)聊天室系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)分析_第2頁
網(wǎng)絡(luò)聊天室系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)分析_第3頁
網(wǎng)絡(luò)聊天室系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)分析_第4頁
網(wǎng)絡(luò)聊天室系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)分析_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、-. z. -. -可修編- .科研訓(xùn)練網(wǎng)絡(luò)聊天室系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)Design and implementation of network chat room system學(xué)生*專業(yè)軟件工程*1305*指導(dǎo)教師* 祝*學(xué)院計(jì)算機(jī)科學(xué)技術(shù)學(xué)院二一六年六月-. z.起止周1719周數(shù)3實(shí)習(xí)地點(diǎn)計(jì)算機(jī)學(xué)院專業(yè)實(shí)驗(yàn)室南區(qū)研1213選題自選實(shí)習(xí)目的:培養(yǎng)學(xué)生未來進(jìn)入職場的素質(zhì),以及企業(yè)級(jí)行業(yè)解決方案系統(tǒng)的分析、設(shè)計(jì)、實(shí)現(xiàn)等企業(yè)級(jí)綜合應(yīng)用能力。主要任務(wù)通過工程開發(fā)培養(yǎng)學(xué)生的職業(yè)素質(zhì),按照軟件工程的思想,訓(xùn)練學(xué)生掌握面向?qū)ο蠓治?設(shè)計(jì)(UML 建模)、編碼規(guī)、概要設(shè)計(jì)方法、詳細(xì)設(shè)計(jì)方法、模塊劃分方法等技能;培

2、養(yǎng)學(xué)生的編程思想和根本工作技能,培養(yǎng)學(xué)生的編程能力。實(shí)習(xí)要求:要求學(xué)生能掌握軟件開發(fā)的根本能力,具有工程開發(fā)的實(shí)際經(jīng)歷,按照專業(yè)方向或本人就業(yè)方向選擇一個(gè)工程進(jìn)展實(shí)際開發(fā),能熟練運(yùn)用常用的程序設(shè)計(jì)語言和開發(fā)工具,完成整個(gè)開發(fā)過程。實(shí)習(xí)容及進(jìn)度安排:每個(gè)同學(xué)的課題的主要研究容,完成的主要功能、按周完成的工作總計(jì)3周,每周具體完成的容要寫清楚指導(dǎo)教師評(píng)語:成績:指導(dǎo)教師/帶隊(duì)教師簽字 2016年 6月日-. z.目錄TOC o 1-3 h u HYPERLINK l _Toc19969 一、引言 PAGEREF _Toc19969 1 HYPERLINK l _Toc18243 二、需求分析 PA

3、GEREF _Toc18243 1 HYPERLINK l _Toc318 2.1 系統(tǒng)運(yùn)行環(huán)境需求 PAGEREF _Toc318 1 HYPERLINK l _Toc23798 2.2 模塊功能分析 PAGEREF _Toc23798 1 HYPERLINK l _Toc31745 2.3系統(tǒng)功能構(gòu)造 PAGEREF _Toc31745 3 HYPERLINK l _Toc23228 2.4系統(tǒng)數(shù)據(jù)流圖 PAGEREF _Toc23228 3 HYPERLINK l _Toc21419 頂層數(shù)據(jù)流圖 PAGEREF _Toc21419 3 HYPERLINK l _Toc3946 一層數(shù)據(jù)

4、流圖 PAGEREF _Toc3946 3 HYPERLINK l _Toc30389 二層數(shù)據(jù)流圖 PAGEREF _Toc30389 4 HYPERLINK l _Toc1711 2.5數(shù)據(jù)字典 PAGEREF _Toc1711 5 HYPERLINK l _Toc1246 三、概要設(shè)計(jì) PAGEREF _Toc1246 5 HYPERLINK l _Toc16622 3.1系統(tǒng)總體構(gòu)造設(shè)計(jì) PAGEREF _Toc16622 5 HYPERLINK l _Toc26133 構(gòu)造設(shè)計(jì)系統(tǒng) PAGEREF _Toc26133 5 HYPERLINK l _Toc13067 系統(tǒng)功能模塊構(gòu)造

5、PAGEREF _Toc13067 6HYPERLINK l _Toc32153 3.2數(shù)據(jù)庫設(shè)計(jì) PAGEREF _Toc32153 8 HYPERLINK l _Toc5514 概念設(shè)計(jì) PAGEREF _Toc5514 8 HYPERLINK l _Toc796 邏輯設(shè)計(jì) PAGEREF _Toc796 8 HYPERLINK l _Toc1448 物理設(shè)計(jì) PAGEREF _Toc1448 9 HYPERLINK l _Toc6635 四、詳細(xì)設(shè)計(jì) PAGEREF _Toc6635 9 HYPERLINK l _Toc20579 4.1流程圖 PAGEREF _Toc20579 9 H

6、YPERLINK l _Toc15975 用戶注冊(cè)登錄 PAGEREF _Toc15975 9 HYPERLINK l _Toc16005 在線用戶顯示模塊 PAGEREF _Toc16005 11 HYPERLINK l _Toc9310 用戶交流聊天模塊 PAGEREF _Toc9310 12 HYPERLINK l _Toc12839 聊天信息顯示模塊 PAGEREF _Toc12839 13 HYPERLINK l _Toc13566 系統(tǒng)消息顯示模塊 PAGEREF _Toc13566 14 HYPERLINK l _Toc10580 管理員管理用戶模塊 PAGEREF _Toc10

7、580 14 HYPERLINK l _Toc4466 輔助功能 PAGEREF _Toc4466 15 HYPERLINK l _Toc5803 4.2算法 PAGEREF _Toc5803 16 HYPERLINK l _Toc26482 用戶對(duì)話存儲(chǔ)算法 PAGEREF _Toc26482 16 HYPERLINK l _Toc18488 檢測用戶是否被踢算法 PAGEREF _Toc18488 16 HYPERLINK l _Toc3914 4.2.3 檢測當(dāng)前用戶是否有新消息算法 PAGEREF _Toc3914 17 HYPERLINK l _Toc5587 4.3界面設(shè)計(jì) PAG

8、EREF _Toc5587 18 HYPERLINK l _Toc26408 登錄首頁 PAGEREF _Toc26408 18-. z. HYPERLINK l _Toc7117 注冊(cè)界面 PAGEREF _Toc7117 19 HYPERLINK l _Toc15782 聊天室界面 PAGEREF _Toc15782 20 HYPERLINK l _Toc11187 4.4工程構(gòu)造設(shè)計(jì) PAGEREF _Toc11187 20 HYPERLINK l _Toc28148 4.5各類功能設(shè)計(jì) PAGEREF _Toc28148 21 HYPERLINK l _Toc11369 實(shí)體類 PAG

9、EREF _Toc11369 22 HYPERLINK l _Toc8721 數(shù)據(jù)庫操作Dao層 PAGEREF _Toc8721 23 HYPERLINK l _Toc11251 監(jiān)聽器 PAGEREF _Toc11251 23 HYPERLINK l _Toc5097 業(yè)務(wù)邏輯service層 PAGEREF _Toc5097 23 HYPERLINK l _Toc14497 工具箱Utils PAGEREF _Toc14497 24 HYPERLINK l _Toc11356 4.5.6 Actions PAGEREF _Toc11356 24 HYPERLINK l _Toc1144

10、五、系統(tǒng)實(shí)現(xiàn) PAGEREF _Toc1144 24 HYPERLINK l _Toc6000 5.1用戶注冊(cè)登錄模塊 PAGEREF _Toc6000 25 HYPERLINK l _Toc11535 用戶注冊(cè) PAGEREF _Toc11535 25 HYPERLINK l _Toc24394 用戶登錄 PAGEREF _Toc24394 26 HYPERLINK l _Toc4928 5.2在線用戶顯示模塊 PAGEREF _Toc4928 28 HYPERLINK l _Toc27544 5.3用戶交流聊天模塊 PAGEREF _Toc27544 29 HYPERLINK l _Toc

11、18771 5.4聊天信息顯示模塊 PAGEREF _Toc18771 30 HYPERLINK l _Toc29069 5.5系統(tǒng)消息顯示模塊 PAGEREF _Toc29069 32 HYPERLINK l _Toc5006 5.6管理員管理用戶模塊 PAGEREF _Toc5006 32 HYPERLINK l _Toc173 5.7輔助功能 PAGEREF _Toc173 33 HYPERLINK l _Toc5720 六、總結(jié)與體會(huì) PAGEREF _Toc5720 35 HYPERLINK l _Toc31473 6.1開發(fā)中遇到的問題 PAGEREF _Toc31473 35 H

12、YPERLINK l _Toc26184 6.2問題分析與解決方法 PAGEREF _Toc26184 35 HYPERLINK l _Toc31500 6.3經(jīng)歷與教訓(xùn) PAGEREF _Toc31500 35 HYPERLINK l _Toc4569 參考文獻(xiàn) PAGEREF _Toc4569 37 HYPERLINK l _Toc472 附錄 PAGEREF _Toc472 38-. z.引言隨著網(wǎng)絡(luò)的大幅度普及,以及網(wǎng)絡(luò)技術(shù)快速開展,人們通過網(wǎng)絡(luò)進(jìn)展交流的方式發(fā)生著巨大的變化,人們不再拘泥于移動(dòng)的通話模式,越來越多的人通過網(wǎng)絡(luò)聊天工具進(jìn)展交流,網(wǎng)絡(luò)聊天室便是非常典型的聊天工具之一。聊天

13、室系統(tǒng)的即時(shí)交流方式滿足了網(wǎng)絡(luò)中人們同時(shí)與多人進(jìn)展聊天交流的需要,使得較多的人在同一個(gè)聊天頁面進(jìn)展交流變得方便,簡單。本設(shè)計(jì)所完成的網(wǎng)絡(luò)聊天室具有常用聊天室的所有功能,包括使用賬號(hào)登錄聊天室、注冊(cè)賬號(hào)、顯示在線用戶列表、顯示系統(tǒng)消息、兩人之間進(jìn)展私密聊天、消息提醒、發(fā)送表情、修改發(fā)送文字顏色;同時(shí),為了管理聊天室中的用戶使用語言的文明,賦予管理員踢出使用不文明語言的用戶功能,顯示全部聊天信息。該系統(tǒng)采用B/S瀏覽器/效勞器構(gòu)造進(jìn)展開發(fā),參考網(wǎng)絡(luò)中正在使用的大型聊天室的架構(gòu)、分析聊天室可實(shí)現(xiàn)功能,結(jié)合本次設(shè)計(jì)的相關(guān)要求,進(jìn)展開發(fā)設(shè)計(jì)并寫出需求分析說明書。該系統(tǒng)具體開發(fā)環(huán)境:使用Windows8.

14、1專業(yè)版作為效勞器運(yùn)行平臺(tái),效勞器開發(fā)語言使用Java語言,前臺(tái)使用Jsp技術(shù)、JavaScript、Jquery語言,系統(tǒng)框架使用Struts2+Hibernate+Spring框架,后臺(tái)數(shù)據(jù)庫使用MySql數(shù)據(jù)庫。需求分析該系統(tǒng)采用B/S模式設(shè)計(jì),開發(fā)目的主要是提供一個(gè)基于網(wǎng)絡(luò)的平安文明的供多人聊天社交平臺(tái)。2.1 系統(tǒng)運(yùn)行環(huán)境需求該系統(tǒng)是在windows 8.1專業(yè)版操作系統(tǒng)下,搭建的運(yùn)行平臺(tái),使用myEclipse作為開發(fā)工具,mySql作為數(shù)據(jù)庫,Java語言作為系統(tǒng)后臺(tái)開發(fā)語言。JSP技術(shù)作為前臺(tái)開發(fā)語言,其中使用JavaScript以及Jquery作為腳本語言。工程框架使用Str

15、uts+Spring+Hibernate框架。效勞器配置:配置效勞器。客戶端要求配置:谷歌瀏覽器、狐火瀏覽器以及IE瀏覽器5.0以上版本。2.2 模塊功能分析用戶注冊(cè)登錄模塊新用戶在使用該聊天室系統(tǒng)時(shí),必須先進(jìn)展注冊(cè)新用戶操作,后臺(tái)將注冊(cè)信息添加到數(shù)據(jù)庫中,用于胡勇登錄驗(yàn)證;在注冊(cè)成功之后再進(jìn)展登錄;當(dāng)用戶名與密碼匹配成功,即可進(jìn)入聊天室系統(tǒng)。在線用戶顯示模塊當(dāng)用戶登錄進(jìn)入系統(tǒng)后,該頁面實(shí)現(xiàn)在線用戶的統(tǒng)計(jì),并將在線用戶依次顯示出來。如果當(dāng)前用戶屬于管理員角色,則在普通用戶角色的右邊顯示踢下線,如果當(dāng)前用戶屬于普通用戶角色,則正常顯示在線用戶名。用戶交流聊天模塊該模塊主要負(fù)責(zé)發(fā)送信息容,選擇聊天

16、對(duì)象;除此之外,可以修改聊天容的字體顏色以及發(fā)送的表情。發(fā)言的顏色和發(fā)言的表情通過下拉式組合框?qū)崿F(xiàn)。發(fā)言容書寫完畢后。通過點(diǎn)擊發(fā)送按鈕,發(fā)送聊天容。聊天信息顯示模塊當(dāng)用戶選擇聊天對(duì)象并發(fā)送聊天容后,顯示出當(dāng)前發(fā)送的容以及之前的歷史聊天容,聊天的容只有對(duì)話的兩人可見,其他人不可見。當(dāng)用戶退出系統(tǒng)后,再次登錄進(jìn)入聊天室時(shí),兩人的對(duì)話記錄依然存在。系統(tǒng)消息顯示模塊系統(tǒng)消息提示所有用戶,聊天室的文明守則,以及當(dāng)其他用戶進(jìn)入、離開或被管理員踢出聊天室的情況。管理員管理用戶模塊管理員用戶可以與其他用戶聊天,并且隨時(shí)監(jiān)視其他用戶的言行,一旦出現(xiàn)不文明用語,即將改用戶踢出聊天室。輔助功能輔助功能包括:顯示全部

17、聊天信息、退出聊天室、檢測用戶是否有新消息。顯示全部信息是指當(dāng)用戶之間的聊天信息占滿全屏的時(shí)候,點(diǎn)擊顯示全部信息,即可看到全部的聊天容。退出聊天室是指用戶離開聊天室。檢測用戶是否有新信息,當(dāng)用戶收到其他用戶發(fā)來的消息時(shí),提示用戶。2.3系統(tǒng)功能構(gòu)造圖2-1 功能構(gòu)造圖2.4系統(tǒng)數(shù)據(jù)流圖頂層數(shù)據(jù)流圖圖2-2 頂層數(shù)據(jù)流圖一層數(shù)據(jù)流圖圖2-3 一層數(shù)據(jù)流圖二層數(shù)據(jù)流圖圖2-4 二層數(shù)據(jù)流圖2.5數(shù)據(jù)字典數(shù)據(jù)項(xiàng)名稱:用戶名數(shù)據(jù)項(xiàng)別名:username說明:用戶唯一標(biāo)識(shí)類型:varchar長度:20取值圍及含義:用戶登錄聊天室的用戶名長度在120之不管數(shù)字、字符還是符號(hào)。表2-1 用戶名數(shù)據(jù)字典數(shù)據(jù)項(xiàng)

18、名稱:密碼數(shù)據(jù)項(xiàng)別名:password說明:用戶登陸密碼類型:varchar長度:20取值圍及含義:用戶登錄聊天室的密碼長度在120之不管數(shù)字、字母還是符號(hào)。表2-2 密碼數(shù)據(jù)字典數(shù)據(jù)項(xiàng)名稱:級(jí)別數(shù)據(jù)項(xiàng)別名:type說明:用戶身份級(jí)別類型:varchar長度:20取值圍及含義:用戶登錄聊天室的角色,管理員admin或者普通用戶user。表2-3 級(jí)別數(shù)據(jù)字典概要設(shè)計(jì)3.1系統(tǒng)總體構(gòu)造設(shè)計(jì)構(gòu)造設(shè)計(jì)系統(tǒng)圖3-1 總體構(gòu)造圖系統(tǒng)功能模塊構(gòu)造用戶注冊(cè)登錄模塊用戶注冊(cè)是添加用戶到數(shù)據(jù)中,只能注冊(cè)普通用戶,當(dāng)注冊(cè)驗(yàn)證信息合格,即可登錄進(jìn)入聊天室。圖3-2 用戶注冊(cè)登錄H圖在線用戶顯示模塊當(dāng)用戶登錄進(jìn)入系統(tǒng)

19、后,該頁面實(shí)現(xiàn)在線用戶的統(tǒng)計(jì),并將在線用戶依次顯示出來。如果當(dāng)前用戶屬于管理員角色,則在普通用戶角色的右邊顯示踢下線,如果當(dāng)前用戶屬于普通用戶角色,則正常顯示在線用戶名。用戶交流聊天模塊交流包括選擇聊天對(duì)象,選擇發(fā)送表情,字體顏色。圖3-3 用戶聊天H圖聊天信息顯示模塊聊天信息的顯示,首先系統(tǒng)必須獲得與當(dāng)前用戶正在進(jìn)展聊天的對(duì)象,根據(jù)聊天對(duì)象的用戶名,獲得存儲(chǔ)在系統(tǒng)中的聊天記錄,傳送到瀏覽器客戶端,瀏覽器客戶端進(jìn)展1s刷新界面,從而獲取兩人之間的私密聊天記錄并顯示在界面上。圖3-4 聊天信息顯示H圖系統(tǒng)消息顯示模塊系統(tǒng)信息包括:聊天室守則、系統(tǒng)公告。圖3-5 系統(tǒng)信息顯示H圖管理員管理用戶模塊

20、管理員用戶可以與其他用戶聊天,并且隨時(shí)監(jiān)視其他用戶的言行,一旦出現(xiàn)不文明用語,即將改用戶踢出聊天室。輔助功能輔助功能包括:顯示全部聊天信息、退出聊天室。顯示全部信息是指當(dāng)用戶之間的聊天信息占滿全屏的時(shí)候,點(diǎn)擊顯示全部信息,即可看到全部的聊天容。退出聊天室是指用戶離開聊天室。3.2數(shù)據(jù)庫設(shè)計(jì)概念設(shè)計(jì)E-R圖:該系統(tǒng)只存在用戶一個(gè)實(shí)體,用戶的屬性包括:id、用戶名、密碼、級(jí)別。圖3-6 E-R圖邏輯設(shè)計(jì)用戶表字段名數(shù)據(jù)類型長度說明描述idint4不空用戶iduserNamevarchar20不空用戶名passwordvarchar20不空登錄密碼typevarchar20不空用戶級(jí)別表3-1 用戶

21、表物理設(shè)計(jì)數(shù)據(jù)庫類型使用mySql數(shù)據(jù)庫,用戶表的主鍵為id。詳細(xì)設(shè)計(jì)4.1流程圖用戶注冊(cè)登錄用戶注冊(cè)的時(shí)候,操作人員輸入想取的用戶民,輸入自創(chuàng)密碼與確認(rèn)密碼,點(diǎn)擊注冊(cè);此時(shí),系統(tǒng)會(huì)首先檢測兩次密碼是有一致,假設(shè)不一致,提示用戶密碼不一致,請(qǐng)重新輸入。假設(shè)一致,檢測用戶名是否已經(jīng)被注冊(cè)過,假設(shè)已經(jīng)被注冊(cè),提示是用戶,已被注冊(cè)。假設(shè)為被注冊(cè),系統(tǒng)添加用戶注冊(cè)信息到數(shù)據(jù)庫user表中。界面提示用戶注冊(cè)成功,并跳轉(zhuǎn)到登錄界面。注冊(cè)的用戶默認(rèn)type是普通用戶,即user。圖4-1 注冊(cè)流程圖用戶登錄的時(shí)候,用戶輸入用戶名,密碼,點(diǎn)擊進(jìn)入按鈕,系統(tǒng)獲取用戶所填寫的用戶名與密碼,首先判斷該用戶名是否存在

22、于數(shù)據(jù)庫,假設(shè)不存在,提示用戶不存在該用戶,請(qǐng)重新填寫或注冊(cè),假設(shè)該用戶名存在,則判斷密碼與用戶名是否匹配,假設(shè)不匹配,提示用戶密碼錯(cuò)誤,請(qǐng)重新填寫,假設(shè)匹配,進(jìn)入聊天室界面。圖4-2 登錄流程圖在線用戶顯示模塊當(dāng)用戶登錄進(jìn)入聊天室時(shí),系統(tǒng)會(huì)將用戶的信息存入application屬性的userMap中,進(jìn)入系統(tǒng)后,在jsp中獲取userMap,將所有的用戶信息中的用戶名顯示出來。圖4-3 顯示在線人數(shù)流程圖用戶交流聊天模塊用戶實(shí)現(xiàn)找人聊天,點(diǎn)擊聊天對(duì)象的用戶名,獲取聊天對(duì)象,填寫發(fā)送容,選擇表情、與發(fā)送字體的顏色,點(diǎn)擊發(fā)送即可進(jìn)展聊天。在未選擇聊天對(duì)象時(shí),點(diǎn)擊發(fā)送,提示用戶選擇聊天對(duì)象;在未填

23、寫發(fā)送的容點(diǎn)擊發(fā)送時(shí),提示用戶未填寫發(fā)送容。發(fā)送的表情默認(rèn)為微笑著,字體顏色默認(rèn)為黑色。圖4-4 發(fā)送信息流程圖聊天信息顯示模塊聊天信息顯示,首先必須保證聊天對(duì)象的用戶名不為空,當(dāng)不為空時(shí),系統(tǒng)將獲取用戶名,在application作用域中獲得,相應(yīng)的聊天記錄屬性,返回到j(luò)sp中,并顯示在界面中。圖4-5 顯示聊天記錄流程圖系統(tǒng)消息顯示模塊在用戶登錄聊天室時(shí),系統(tǒng)存儲(chǔ)聊天室的聊天守則,并獲取登錄的用戶名,存儲(chǔ)系統(tǒng)公告*進(jìn)入聊天室!;當(dāng)用戶離開聊天室時(shí),修改系統(tǒng)公告*離開聊天室!;當(dāng)用戶被管理員踢出聊天室時(shí),修改系統(tǒng)公告*,被管理員踢出聊天室!。圖4-6 顯示系統(tǒng)信息流程圖管理員管理用戶模塊當(dāng)用

24、戶使用了不文明的語言,管理員有權(quán)利該用戶踢出聊天室。獲取用戶名,在application中的userMap中獲得相應(yīng)的用戶session,去除該session即可將用戶踢下線。圖4-7 管理員管理用戶流程圖輔助功能顯示與*人的全部聊天信息,當(dāng)聊天的容占滿全屏,點(diǎn)擊顯示全部消息,即可顯示全部信息。當(dāng)用戶離開聊天室時(shí),系統(tǒng)獲取當(dāng)前用戶名,并釋放user的session。檢測用戶是否有新消息:圖4-8 檢測信息流程圖4.2算法用戶對(duì)話存儲(chǔ)算法首先獲取進(jìn)展對(duì)話雙方的用戶名以及id,再比較兩者的id假設(shè)id1id2,則messageName = userName1 + userName2;否則messa

25、geName = userName2 + userName1。圖4-9 用戶對(duì)話存儲(chǔ)算法檢測用戶是否被踢算法當(dāng)用戶登錄進(jìn)入聊天室時(shí),向application中存儲(chǔ)一個(gè)isKickedMap屬性,將用戶名添加到isKickedMap中并賦值為11表示在線,-1表示被踢。當(dāng)管理員將*個(gè)用戶踢下線時(shí),將isKickedMap屬性中的改用戶名修改成*符號(hào),并賦值為-1。Jsp頁面每秒刷新一次,當(dāng)檢測到isKickedMap屬性中g(shù)etAttribute*= -1 時(shí),則該用戶被踢下線,此時(shí)要在jsp頁面中提示用戶已被踢下線,并返回登陸界面。圖4-10 檢測用戶是否被踢算法4.2.3 檢測當(dāng)前用戶是否有

26、新消息算法Jsp每隔1s就檢測一次當(dāng)前session中的call屬性中是否有值,如果有值,返回到j(luò)sp中,在jsp中遍歷出有個(gè)值,并且讓id為該值的標(biāo)簽的背風(fēng)光為紅色。圖4-11 檢測當(dāng)前用戶是否有新消息算法4.3界面設(shè)計(jì)登錄首頁登陸首頁是寫在inde*.jsp中的,前臺(tái)主要運(yùn)用jsp動(dòng)態(tài)網(wǎng)頁技術(shù)。并使用JavaScript語言判斷用戶是否正確輸入用戶名以及密碼。在登錄界面可以點(diǎn)擊注冊(cè)用戶進(jìn)入用戶注冊(cè)界面。圖4-12 登錄界面注冊(cè)界面圖4-13 注冊(cè)界面聊天室界面聊天室界面:左側(cè)是在線人員列表顯示,和在線人數(shù)的統(tǒng)計(jì);右側(cè)是專門顯示系統(tǒng)公告的地方;中間屬于聊天容的顯示;下方是用戶發(fā)送消息的模塊,

27、在該模塊中,當(dāng)用戶點(diǎn)擊聊天對(duì)象的用戶名,下方的第一個(gè)input框?qū)@取到聊天對(duì)象的用戶名,還可以選擇聊天的表情與字體的顏色,在最下角的input框可以編輯所要說的話,點(diǎn)擊發(fā)送,即可發(fā)送聊天容。圖4-14 聊天室主界面4.4工程構(gòu)造設(shè)計(jì)該系統(tǒng)采用SSHstruts2 + spring + hibernate框架搭建工程。系統(tǒng)的根本業(yè)務(wù)流程是:在表示層中,首先通過JSP頁面實(shí)現(xiàn)交互界面,負(fù)責(zé)接收請(qǐng)求(Request)和傳送響應(yīng)(Response),然后Struts根據(jù)配置文件(struts-config.*ml)將ActionServlet接收到的Request委派給相應(yīng)的Action處理。在業(yè)務(wù)

28、層中,管理效勞組件的Spring IOC容器負(fù)責(zé)向Action提供業(yè)務(wù)模型(Model)組件和該組件的協(xié)作對(duì)象數(shù)據(jù)處理(DAO)組件完成業(yè)務(wù)邏輯,并提供事務(wù)處理、緩沖池等容器組件以提升系統(tǒng)性能和保證數(shù)據(jù)的完整性。而在持久層中,則依賴于Hibernate的對(duì)象化映射和數(shù)據(jù)庫交互,處理DAO組件請(qǐng)求的數(shù)據(jù),并返回處理結(jié)果。采用上述開發(fā)模型,不僅實(shí)現(xiàn)了視圖、控制器與模型的徹底別離,而且還實(shí)現(xiàn)了業(yè)務(wù)邏輯層與持久層的別離。這樣無論前端如何變化,模型層只需很少的改動(dòng),并且數(shù)據(jù)庫的變化也不會(huì)對(duì)前端有所影響,大大提高了系統(tǒng)的可復(fù)用性。而且由于不同層之間耦合度小,有利于團(tuán)隊(duì)成員并行工作,大大提高了開發(fā)效率。工程

29、構(gòu)造中其中:applicationConte*t.*ml文件是關(guān)于配置spring的配置文件,主要是將各種POJO,JAVA,action配置到*ML轉(zhuǎn)交給beanfactory管理,降低耦合度。perties文件配置struts的屬性值,程序員可以通過它來管理Struts 2 框架中定義的大量常量。perties 文件是一個(gè)標(biāo)準(zhǔn)的properties 文件。struts.*ml 為Struts 2的核心配置文件。struts.*ml文件主要負(fù)責(zé)管理應(yīng)用中的Action映射,以及該Action包含的Result定義。圖4-15 工程構(gòu)造4.5各類功能設(shè)計(jì)類圖圖4-16 工程類圖實(shí)體類User.

30、java,屬性包括:private int id;/idprivate String username;/用戶名private String password;/密碼private String type;/級(jí)別用于建立與數(shù)據(jù)庫user表表的映射關(guān)系,管理用戶。Message.java,屬性包括:private static String eIn = 走進(jìn)聊天室!;private static String goOut = 離開聊天室!;private static String kicked = 被管理員踢出去!;用于獲取系統(tǒng)公告。數(shù)據(jù)庫操作Dao層BaseHibernateDAO.java

31、,方法:public List query(String hql, Object values,int firstResult, int ma*Results)用于查詢數(shù)據(jù)庫。public Serializable save(Object obj) 用于添加用戶到數(shù)據(jù)庫中監(jiān)聽器MyServletConte*tListener.java,實(shí)現(xiàn)了ServletConte*tListener接口。重寫方法:public void conte*tInitialized(ServletConte*tEvent sce)用于監(jiān)聽:一旦創(chuàng)立servletConte*t對(duì)象,就添加用戶和相應(yīng)的session進(jìn)

32、去。使用此監(jiān)聽器可以得到所有登錄的用戶以及相應(yīng)的session。監(jiān)聽器的配置:在WEB-INF下的web.*ml中寫上下面語句。.cust.listener.MyServletConte*tListener實(shí)體類實(shí)現(xiàn)監(jiān)聽HttpSessionBindingListener接口,當(dāng)當(dāng)前用戶session.setAttribute(user, user)時(shí),運(yùn)行public void valueBound(HttpSessionBindingEvent event)方法,當(dāng)session.invalidate()時(shí),運(yùn)行public void valueUnbound(HttpSessionBin

33、dingEvent event)方法。業(yè)務(wù)邏輯service層LoginSrvImpl.java,方法:public Map e*ecuteLogin(String username, String password)用于用戶登錄,返回值Map:當(dāng)用戶名不存在reMap.put(result, -1);reMap.put(msg, 用戶不存在!); 當(dāng)密碼錯(cuò)誤時(shí),eMap.put(result, -2);reMap.put(msg, 密碼錯(cuò)誤!);登錄成功時(shí),reMap.put(result, 1);reMap.put(msg, 登錄成功!);reMap.put(user, user);Reg

34、isterSrvImpl.java,方法:public int e*ecuteRegister(String userName, String password)用于注冊(cè),添加用戶到數(shù)據(jù)庫。public int query(String userName)用于判斷用戶名是否已經(jīng)被注冊(cè)了。返回值為int,當(dāng)用戶被注冊(cè)return -1;工具箱UtilsUtils.java,方法:public static Map gainUserMap()/獲取application里的userMappublic static Map gainSysMessageMap()/獲取系統(tǒng)消息public stati

35、c HttpSession gainToSession(String toId)/得到對(duì)方sessionpublic static HttpSession gainCurrentSession()/得到當(dāng)前sessionpublic static ServletConte*t gainApplication()/得到applicationpublic static String gainMessageName(String from, String to, String fromId, String toId)/獲得聊天消息的名稱4.5.7 ActionsCheckNewMessageActi

36、on.java /檢測當(dāng)前用戶是否有新消息CheckUserIsKickAction.java /檢測當(dāng)前用戶是否被管理員踢出聊天室E*itAction.java /當(dāng)前用戶離開聊天室KickAction.java /管理員踢出語言不文明的用戶LoginAction.java /用戶登錄RegisterAction.java /新用戶注冊(cè)SendMessageAction.java /發(fā)送聊天消息給指定用戶ShowSendMessage.java /顯示聊天信息SystemMessageAction.java /顯示系統(tǒng)消息系統(tǒng)實(shí)現(xiàn)聊天室的功能主要是實(shí)現(xiàn)用戶的發(fā)言和觀看大家發(fā)言的容,發(fā)言界面和

37、聊天容需要顯示在同一屏界面中,以方便發(fā)言和觀看,另外,通常還需要顯示當(dāng)前在線的人數(shù)和用戶列表,以方便選擇對(duì)誰發(fā)言。用戶書寫發(fā)言的界面、聊天容的顯示、用戶列表的顯示均需要通過單獨(dú)的頁面來實(shí)現(xiàn),為了能在同一屏界面中同時(shí)顯示多個(gè)頁面的容,此時(shí)需要利用帶框架集的頁面來實(shí)現(xiàn)。框架集是多個(gè)框架的集合,每一個(gè)框架可顯示一個(gè)頁面的容,在同一屏中需要顯示多少個(gè)頁面,就需要?jiǎng)?chuàng)立一個(gè)具有多少個(gè)框架的框架集來實(shí)現(xiàn),整個(gè)框架集最后存盤形成一個(gè)頁面,以后瀏覽該頁面時(shí),各框架集中的容就會(huì)自動(dòng)顯示出來。5.1用戶注冊(cè)登錄模塊用戶注冊(cè)用戶進(jìn)入注冊(cè)頁面后,根據(jù)要求,填寫表單中各項(xiàng)數(shù)據(jù),單擊注冊(cè)按鈕后,將輸入的容通過異步刷新的方式

38、傳遞給后臺(tái)處理頁面register.action進(jìn)展寫入數(shù)據(jù)庫處理。其中,在進(jìn)展表單傳遞的時(shí)候,系統(tǒng)還調(diào)用了JavaScript的function check函數(shù)對(duì)填入表單的數(shù)據(jù)進(jìn)展檢驗(yàn),一旦發(fā)現(xiàn)表單中有一個(gè)數(shù)據(jù)項(xiàng)不符合要求,系統(tǒng)便會(huì)彈出出錯(cuò)信息,提示用戶重新填寫。在后臺(tái)處理頁面中,系統(tǒng)先定義對(duì)應(yīng)于表單各數(shù)據(jù)項(xiàng)的變量,利用Struts2配置,將用戶填入表單的數(shù)據(jù)賦給這些變量,判斷用戶名是否已經(jīng)存在,存在返回?cái)?shù)據(jù)2,前臺(tái)接收到數(shù)據(jù)2,提示用戶用戶名已經(jīng)被注冊(cè),請(qǐng)重新填寫,假設(shè)改用戶名有效,但是兩次密碼不一致,則返回?cái)?shù)據(jù)1,前臺(tái)接收到數(shù)據(jù)1,則提示用戶兩次密碼不一致,請(qǐng)重新輸入,這些數(shù)據(jù)都正確的情

39、況下,存入數(shù)據(jù)庫的時(shí)候直接將變量值添入數(shù)據(jù)庫即可,并返回?cái)?shù)據(jù)4,前臺(tái)接收到數(shù)據(jù)4則提示用戶注冊(cè)成功,并跳轉(zhuǎn)到登錄界面,用戶可以直接用剛剛注冊(cè)的用戶登錄進(jìn)入聊天室主頁,假設(shè)存入數(shù)據(jù)庫失敗,則返回?cái)?shù)據(jù)3,提示用戶注冊(cè)失敗。下面以zhuwei為用戶名,111為密碼進(jìn)展注冊(cè),前提是數(shù)據(jù)庫中沒有該數(shù)據(jù)的記錄,結(jié)果是注冊(cè)成功。數(shù)據(jù)庫chatroom,表user中的數(shù)據(jù)記錄:圖5-1 數(shù)據(jù)庫記錄注冊(cè)界面以及填寫的信息,可以看到數(shù)據(jù)庫并沒有該數(shù)據(jù)的記錄。圖5-2 注冊(cè)用戶zhuwei注冊(cè)成功:圖5-3 注冊(cè)成功用戶登錄用戶在聊天室登錄界面填入正確的注冊(cè)信息,單擊登錄,系統(tǒng)將自動(dòng)把用戶填入的、密碼于數(shù)據(jù)庫中存放

40、的用戶注冊(cè)信息進(jìn)展比對(duì)驗(yàn)證。系統(tǒng)進(jìn)展用戶身份驗(yàn)證時(shí),首先利用Request對(duì)象,將用戶填入的即用戶名、密碼傳遞給預(yù)先定義的變量,再使用Select語句,將變量值與用戶信息表進(jìn)展比對(duì)List list = dao.query( from User where username=, username);當(dāng)list不為空時(shí),表示該用戶名已經(jīng)注冊(cè)可以進(jìn)展登錄操作,然后比對(duì)密碼是否與數(shù)據(jù)庫中的密碼一致。User user = (User) list.get(0);if(password.equals(user.getPassword()如果一致,用戶登錄成功,頁面發(fā)生跳轉(zhuǎn),如果一開場用戶名不存在于數(shù)據(jù)庫

41、list = null 或者list.isEmpty(),提示用戶用戶名錯(cuò)誤。如果密碼不一致提示用戶密碼錯(cuò)誤。以Response對(duì)象的Redirect方法跳轉(zhuǎn)到聊天主頁面,Response對(duì)象的Redirect方法是實(shí)現(xiàn)頁面的跳轉(zhuǎn),使當(dāng)前頁面跳轉(zhuǎn)到指定的頁面。在用戶登錄進(jìn)聊天主頁面的同時(shí),系統(tǒng)將該用戶的用戶名以及該用戶的session存入application中的userMap集合中,目的是利用userMap集合遍歷出所有在線的用戶,顯示在線用戶的用戶名。同時(shí),也將該用戶存入當(dāng)前session中,session.setAtrribute(user, User);目的是在聊天主頁能夠獲取當(dāng)前用戶

42、的信息,可以通過User對(duì)象中的type屬性,判斷當(dāng)前用戶的級(jí)別,是否為管理員,是否有權(quán)限踢出其他用戶。通過上述的用戶驗(yàn)證和數(shù)據(jù)傳遞,系統(tǒng)跳轉(zhuǎn)到聊天頁面,此時(shí)用戶便可在聊天主頁面進(jìn)展聊天交流了。下面以剛剛注冊(cè)的用戶信息登錄進(jìn)入聊天室:圖5-4 zhuwei用戶登錄點(diǎn)擊進(jìn)入,進(jìn)入聊天室,如下列圖所示,可以看到該用戶已經(jīng)成功登錄并存入application的userMap集合中,當(dāng)前在線列表中也遍歷出來該用戶的用戶名,系統(tǒng)公告也顯示zhuwei走進(jìn)聊天室!。圖5-5 在線人員列表顯示圖5-6 系統(tǒng)公告顯示5.2在線用戶顯示模塊為了存儲(chǔ)所有登錄進(jìn)入聊天室的用戶,在jsp的置對(duì)象application

43、中設(shè)置一個(gè)集合屬性,userMap 該集合的關(guān)鍵字為User用戶對(duì)象,值是該用戶對(duì)象所對(duì)應(yīng)的session值。如此便可以根據(jù)user得到user的session值。為了判斷集合中的關(guān)鍵字user對(duì)象與傳入的user對(duì)象相等,在實(shí)體類User中重寫int hashCode() 與boolean equals(Object obj)方法比較兩者的id是否一樣,id一樣則User對(duì)象一樣,反之則不一樣。當(dāng)瀏覽器進(jìn)入登錄首頁,創(chuàng)立servletConte*t對(duì)象,監(jiān)聽器MyServletConte*tListener監(jiān)聽servletConte*t對(duì)象的創(chuàng)立,就在向application中添加屬性u(píng)s

44、erMap;當(dāng)用戶確認(rèn)登錄成功,將User對(duì)象user添加到時(shí),在public void valueBound(HttpSessionBindingEvent event)方法中得到userMap,并向其添加當(dāng)前session與用戶user進(jìn)去。這樣application中就有所有登錄進(jìn)去聊天室的用戶,所以在jsp頁面也就是online.jsp中使用el表達(dá)式$userMap即可將所有在線用戶顯示出來,如下列圖所示:圖5-7 在線人員列表顯示當(dāng)*個(gè)用戶離開或被管理員踢出聊天室時(shí),系統(tǒng)將得到的userMap集合根據(jù)離開的用戶的id找到相應(yīng)的session,去除該session即可刪除離開的用戶。

45、在顯示當(dāng)前在線人員列表的時(shí)候,首先要判斷當(dāng)前用戶是否是管理員,管理員可以踢出其他用戶,但是管理員之間是不可以相互踢出,即判斷條件為:當(dāng)前用戶的級(jí)別等于admin并且要顯示的用戶的級(jí)別不等于admin,在jsp中寫成:在滿足條件的情況下,顯示踢下線。踢下線下面登錄一個(gè)管理員aaa:圖5-8 登錄管理員在用戶aaa中的在線人員列表中用戶zhuwei的右邊顯示踢下線操作,但在用戶zhuwei的在線人員列表當(dāng)中用戶aaa的右邊不顯示踢下線操作:圖5-9 aaa的在線人員顯示圖5-10 zhuwei的在線人員顯示5.3用戶交流聊天模塊進(jìn)入聊天主頁面后,用戶便可在主頁面下方的發(fā)言界面設(shè)計(jì)書寫自己想要說的話

46、,以及想對(duì)誰說,同時(shí),系統(tǒng)還提供了發(fā)言字體顏色選擇、插入表情、圖片的功能,如圖下列圖所示,讓用戶的聊天更有趣味。圖5-11 寫對(duì)話界面在點(diǎn)擊發(fā)送調(diào)用JavaScript的send()方法,在發(fā)送消息之前,確保已經(jīng)選擇聊天的對(duì)象,并將用戶名顯示在zhiwei對(duì)右邊的文本框中,以及發(fā)送的容不為空時(shí),即可調(diào)用后臺(tái)的sendMessage.action。用戶發(fā)言界面采用Jsp表單from模式設(shè)計(jì),在表單包括發(fā)言對(duì)象、發(fā)言容、發(fā)送容字體顏色以及發(fā)言顏色,并未它們每一個(gè)標(biāo)簽寫上name值。這些表單數(shù)據(jù),通過post的異步刷新方式,提交到后臺(tái),后臺(tái)action的屬性中與jsp的標(biāo)簽則值一樣,并為每個(gè)屬性添加

47、上set方法。在得到這些屬性值后,根據(jù)Utils.gainMessageName(from,to,fromId,oId);方法得到對(duì)話的名稱messageName,然后將這些屬性值寫成html語言:sourceMessage += + from+ + face+ 對(duì) + to + 說:+ + content + + sendTime + ;之后將sourceMessage存入application中:Utils.gainApplication().setAttribute(messageName, sourceMessage);到此為止,聊天容就已經(jīng)發(fā)送,等發(fā)言對(duì)象端接收并顯示消息容。在面管理

48、員aaa將發(fā)送一段文字給用戶zhuwei:圖5-12 aaa向zhuwei發(fā)送一條對(duì)話5.4聊天信息顯示模塊當(dāng)聊天對(duì)象沒有選擇聊天對(duì)象時(shí),例如用戶zhuwei開場并沒有選擇聊天對(duì)象aaa,但是aaa向zhuwei發(fā)送了消息,此時(shí),系統(tǒng)檢測到zhuwei有新消息,所有在jsp頁面中將把a(bǔ)aa的背風(fēng)光變成紅色以提醒zhuwei有新消息來自aaa,如下列圖所示。這個(gè)功能在輔助功能中介紹:圖5-13 zhuwei檢索到aaa有新消息提醒中選擇聊天對(duì)象aaa后,jsp開場刷洗界面,并調(diào)用JavaScript的方法showSendMessage(),在該方法中還是已post的異步刷新方式,調(diào)用后臺(tái)的sho

49、wSendMessage.action。在該action中同樣將獲取application的消息名稱,并根據(jù)此消息名稱獲得相應(yīng)的對(duì)話:String message = (String) Utils.gainApplication().getAttribute(messageName);如果message不等于null,則向jsp中輸出message:response.getWriter().println(message);在jsp中的回調(diào)函數(shù)中獲得data,并在id為content的div中顯示data:$(#content).html(sysBBS + data + );Jsp界面每隔1s

50、就刷新界面,調(diào)用后臺(tái)showSendMessage.action的action獲取最新的消息。例如用戶zhuwei收到來自aaa的消息,如下列圖所示:圖5-14 zhuwei收到aaa的對(duì)話并顯示在聊天容中用戶zhuwei回復(fù)用戶aaa:圖5-15 zhuwei向aaa回復(fù)一條對(duì)話在用戶aaa的界面中收到來自zhuwei的回話:圖5-16 aaa收到zhuwei的回復(fù)至此,聊天信息的顯示完畢。5.5系統(tǒng)消息顯示模塊系統(tǒng)消息包括聊天室守則歡送來到聊天室,請(qǐng)遵守聊天室規(guī)則,不要使用不文明用語。的顯示;還有就是系統(tǒng)公告的顯示。首先聊天室準(zhǔn)則的顯示,一旦用戶登錄進(jìn)入聊天室守則就被顯示在聊天容的下方,它

51、的實(shí)現(xiàn)主要是在jsp中,一旦加載了聊天室主頁main.jsp就執(zhí)行:var sysBBS = 歡送來到聊天室,請(qǐng)遵守聊天室規(guī)則,不要使用不文明用語。;$(#content).html(sysBBS);這兩句js代碼。而當(dāng)用戶開場選擇聊天對(duì)象進(jìn)展聊天時(shí),調(diào)用的顯示聊天信息的action返回到j(luò)sp的data時(shí),sysBBS與data一同顯示在聊天容上:$(#content).html(sysBBS + data + );對(duì)于系統(tǒng)公告,首先創(chuàng)立了一個(gè)實(shí)體類Message,其中它的屬性包括了所有系統(tǒng)公告的容;當(dāng)用戶調(diào)用登錄action時(shí),并且驗(yàn)證成功,登錄成功時(shí),向application中添加屬性s

52、ysMessageMap,并且屬性記錄用戶登錄情況:sysMessageMap.put(user.getUsername(), Message.geteIn();Utils.gainApplication().setAttribute(sysMessageMap, sysMessageMap);當(dāng)用戶離開聊天室時(shí),向application中得到sysMessageMap屬性,并根據(jù)用戶名得到對(duì)應(yīng)的值,將其修改為Message.getGoOut(),再次存入application當(dāng)中。當(dāng)用戶被管理員踢出聊天時(shí),同樣獲取sysMessageMap,根據(jù)用戶名得到相應(yīng)的值,將其修改成Message.

53、getKicked(),再次存入application當(dāng)中。下面將用戶zhuwei退出聊天室,或是將其踢出聊天室,效果如下列圖:圖5-17 aaa將zhuwei踢出聊天室圖5-18 zhuwei主動(dòng)離開聊天室5.6管理員管理用戶模塊當(dāng)普通用戶使用了不文明的語言,管理員有權(quán)將其踢出聊天室。當(dāng)管理員點(diǎn)擊踢下線操作時(shí),調(diào)用后臺(tái)的kick.action,并將踢出用戶的id與用戶名傳參到后臺(tái),在action中,獲取application中的userMap,根據(jù)id得到相應(yīng)的session,去除該session即可踢出用戶。但是存在一個(gè)BUG,當(dāng)用戶自己退出聊天室時(shí),其session也將被去除,由此導(dǎo)致,

54、jsp在調(diào)用js方法check()檢測是否被踢出去的時(shí)候,出現(xiàn)用戶自己退出聊天室時(shí)也被當(dāng)成被踢提示用戶由于您使用不文明語言,被踢下線了!。解決方法是:在application中再存入一個(gè)屬性isKickedMap,關(guān)鍵字存入用戶名,值存入數(shù)字,1表示在線;-1表示被踢。當(dāng)用戶被踢時(shí),將其用戶名改為*,并將值改為-1。這樣在調(diào)用check方法時(shí),先判斷是否存在*,并且其值是否為-1,才進(jìn)展被踢提示,否則不提示:if(isKickedMap.get(*) != null)if(Integer)isKickedMap.get(*) = -1)/被踢isKickedMap.remove(*);Util

55、s.gainApplication().setAttribute(isKicked, isKickedMap);if(user = null)response.getWriter().println(1);elseresponse.getWriter().println(2);elseresponse.getWriter().println(3);5.7輔助功能顯示全部聊天信息:直接調(diào)用js方法checkScrollScreen()if (!$(#scrollScreen).attr(checked) $(#content).css(overflow, scroll); else $(#con

56、tent).css(overflow, hidden);/當(dāng)聊天信息超過一屏?xí)r,設(shè)置最先發(fā)送的聊天信息不顯示$(#content).scrollTop($(#content).height() * 2);setTimeout(checkScrollScreen(), 500);退出聊天室:釋放當(dāng)前用戶的session即可。提醒用戶是否有新信息:每個(gè)用戶的session當(dāng)中存入一個(gè)call屬性,該屬性屬于List call = new ArrayList();類型;在*個(gè)用戶對(duì)其進(jìn)展聊天的時(shí)候,根據(jù)聊天對(duì)象的名稱在application獲取session,在session當(dāng)中獲取call屬性,將

57、發(fā)起會(huì)話的用戶名稱添加到call當(dāng)中:List call = (List) toSession.getAttribute(call);call.add(from);toSession.setAttribute(call, call);在當(dāng)前用戶的jsp當(dāng)中每隔1s就調(diào)用一次gainCall方法,其中調(diào)用checkCall.action,在這個(gè)action中獲取該用戶的session的call屬性,遍歷出所有用戶名,將用戶名返回到j(luò)sp中:if (data != null) data = data.toString();var strs = new Array(); /定義一數(shù)組strs = d

58、ata.split(,); /字符分割for (i=0; istrs.length ;i+ ) var id = # + strsi;$(id).css(background-color, red);將id為該用戶名的設(shè)置為紅色;當(dāng)用戶已經(jīng)讀取這些信息之后,依次將call中的值刪除:List call = (List) session.getAttribute(call);if(call != null & !call.isEmpty()for (int i = 0; i call.size(); i+) if (call.get(i).equals(to) call.remove(i); i

59、-; 這樣在讀取完信息之后,就不會(huì)讓用戶名的背風(fēng)光一直為紅色,將恢復(fù)原色表示沒有最新消息。圖5-19 zhuwei接到aaa的消息提醒圖5-20 zhuwei讀取aaa的消息總結(jié)與體會(huì)6.1開發(fā)中遇到的問題我在聊天室系統(tǒng)程序設(shè)計(jì)過程中,遇到的問題大體可分為兩類:A.知道但不會(huì)。這類問題往往是我知道應(yīng)該怎么去設(shè)計(jì),但卻就是動(dòng)不了手,要不就錯(cuò)誤百出。B.完全不會(huì)。這類問題擺在面前,我只能束手無策,苦惱而又無奈。6.2問題分析與解決方法對(duì)于第一類問題,其實(shí)本質(zhì)上不存在什么大的問題,都是因?yàn)樽约浩綍r(shí)學(xué)習(xí)功底不夠,還有編程時(shí)不夠慎重,才造成的。人非完人,學(xué)過了,有點(diǎn)不懂或迷惑的地方也是很正常的,再說竟然知道

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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)論