聊天工具設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
聊天工具設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
聊天工具設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
聊天工具設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
聊天工具設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、南 昌 工 程 學(xué) 院畢畢 業(yè)業(yè) 設(shè)設(shè) 計(jì)計(jì) (論論 文文) 信息工程 系(院) 08 計(jì)算機(jī)網(wǎng)絡(luò) 專(zhuān)業(yè)畢業(yè)設(shè)計(jì)(論文)題目 聊天工具設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名 周志冬 班 級(jí) 08 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù) 學(xué) 號(hào) 2008011224 指導(dǎo)教師 鄧少波 完成日期 2011 年 5 月 30 日abstract聊天工具設(shè)計(jì)與實(shí)現(xiàn)聊天工具設(shè)計(jì)與實(shí)現(xiàn)design and implementation of chat總計(jì) 畢業(yè)設(shè)計(jì)(論文) 41 頁(yè) 表 格 2 個(gè)插 圖 13 幅南昌工程學(xué)院專(zhuān)科畢業(yè)論文i摘 要越來(lái)越多的人開(kāi)始通過(guò)網(wǎng)絡(luò)進(jìn)行及時(shí)的溝通和交流,聊天室應(yīng)用系統(tǒng)是一個(gè)比較好的人們進(jìn)行實(shí)時(shí)交互的工具,而最常

2、用的就是完全基于 www 的方式,用戶(hù)不需要任何定制的客戶(hù)端,只需要通過(guò)訪(fǎng)問(wèn)指定的 url 就可以登入聊天室和其他在線(xiàn)的用戶(hù)進(jìn)行溝通。本系統(tǒng)主要具有用戶(hù)注冊(cè)、用戶(hù)登錄驗(yàn)證、用戶(hù)在線(xiàn)顯示,用戶(hù)資料查看與修改、實(shí)時(shí)聊天等功能。在實(shí)現(xiàn)實(shí)時(shí)顯示聊天內(nèi)容功能時(shí),運(yùn)用了 ajax 技術(shù)。使用 ajax 的異步模式,瀏覽器就不必等用戶(hù)請(qǐng)求操作,也不必更新整個(gè)窗口就可以顯示新獲取的數(shù)據(jù)。只要來(lái)回傳送采用 xml 格式的數(shù)據(jù),在瀏覽器里面運(yùn)行的 javascript 代碼就可以與服務(wù)器進(jìn)行聯(lián)系。javascript 代碼還可以把樣式表加到檢索到的數(shù)據(jù)上,然后在現(xiàn)有網(wǎng)頁(yè)的聊天內(nèi)容顯示區(qū)加以顯示。本系統(tǒng)采用 str

3、uts、jsp 作為開(kāi)發(fā)工具,后臺(tái)數(shù)據(jù)庫(kù)采用 sql server 2000 數(shù)據(jù)庫(kù)設(shè)計(jì),利用基于 jdbc 的 odbc 數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的各種管理操作,實(shí)現(xiàn)用戶(hù)登錄驗(yàn)證的功能、用戶(hù)聊天的功能和顯示在線(xiàn)聊天用戶(hù)信息等功能。關(guān)鍵詞關(guān)鍵詞: 聊天室 jdbc ajax application session abstractiiabstractmore and more people begin to through the network to communicate and exchange, chat application system is a good people in

4、real time, and the interactive tool is the most commonly used is completely based on www way, users dont need any custom client, need only through the visit the url is designated can log in chat rooms and other online users to communicate. this system mainly has the user registration, user login val

5、idation, users online shows, the user data to check and modification, real-time chat etc. function. to realize real-time display in chat function as the content, using ajax technology. with ajax asynchronous mode of, the browser will dont need to wait for users request operation, also dont have to u

6、pdate the whole window can show new data obtained. as long as the transfer of the back and forth an xml format data in the browser, operates the javascript code can to contact a web server. javascript code can also add to the style sheet to retrieve data, and then in the existing web chat show area

7、to show the content. the system uses struts, jsp as development tools, the backend database using sql server 2000 database design, use the odbc database access based on jdbc database technology to achieve various management operation, realize user login the verification of the function, the function

8、 and user chat show chat online user information etc. function. key words: ajax; application; session; jdbc; chat room 南昌工程學(xué)院專(zhuān)科畢業(yè)論文iii目目 錄錄摘摘 要要.iabstract.ii目目 錄錄.iii第一章第一章 緒論緒論.11.1 設(shè)計(jì)的研究意義.11.2 研究概況及發(fā)展趨勢(shì).1第二章第二章 系統(tǒng)設(shè)計(jì)基本原理與技術(shù)系統(tǒng)設(shè)計(jì)基本原理與技術(shù).32.1 sql server 200 sql 簡(jiǎn)介.32.1.2 sql 數(shù)據(jù)庫(kù)體系結(jié)構(gòu).32.1.3 sq

9、l 的組成.42.2 struts1.x簡(jiǎn)介.42.3 關(guān)鍵技術(shù).72.3.1 ajax技術(shù).72.3.2 application對(duì)象.102.3.3 session對(duì)象.11第三章第三章 需求分析需求分析.133.1 需求分析.13第四章第四章 系統(tǒng)概要設(shè)計(jì)系統(tǒng)概要設(shè)計(jì).154.1 系統(tǒng)功能模塊圖.154.2 系統(tǒng)流程圖.17第五章第五章 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì).195.1 數(shù)據(jù)庫(kù)模塊設(shè)計(jì).195.2 用戶(hù)登錄模塊設(shè)計(jì).205.3 用戶(hù)注冊(cè)模塊設(shè)計(jì).235.4 顯示在線(xiàn)用戶(hù)模塊設(shè)計(jì).26iv5.5 用戶(hù)退出模塊設(shè)計(jì).27第六章第六章 系統(tǒng)的測(cè)試和維護(hù)系統(tǒng)的測(cè)試和維護(hù).296.1 系統(tǒng)調(diào)試與測(cè)試的作

10、用和意義.296.2 系統(tǒng)調(diào)試與測(cè)試的目的和原則.296.3 系統(tǒng)的調(diào)試.296.4 在線(xiàn)聊天室測(cè)試.29結(jié)結(jié) 束束 語(yǔ)語(yǔ).33謝謝 辭辭.35參考文獻(xiàn)參考文獻(xiàn).37南昌工程學(xué)院專(zhuān)科畢業(yè)論文1第一章 緒論1.1 設(shè)計(jì)的研究意義設(shè)計(jì)的研究意義21 世紀(jì)是信息社會(huì)的時(shí)代,科學(xué)和技術(shù)和社會(huì)的發(fā)展正在迎接這時(shí)代的到來(lái),當(dāng)前信息網(wǎng)絡(luò)得到飛速的發(fā)展,尤其是計(jì)算機(jī)和通信技術(shù)的發(fā)展和結(jié)合,改變了人民的生活、學(xué)習(xí)和工作方式,減輕工作的負(fù)擔(dān),提高生活水平,推動(dòng)社會(huì)的進(jìn)步。當(dāng)前電子商務(wù)、erp、wap 等技術(shù)正深深的影響著我們。隨著網(wǎng)絡(luò)的普及,在線(xiàn)技術(shù)支持、在線(xiàn)交流和在線(xiàn)服務(wù)等逐漸在各網(wǎng)站上流行。其中,在線(xiàn)交流提供

11、了客服與用戶(hù)及用戶(hù)間直接對(duì)話(huà)的平臺(tái)。如今,像 qq、雅虎通這些傳統(tǒng)的 c/s 結(jié)構(gòu)的實(shí)時(shí)通訊軟件已經(jīng)非常成熟,像 web qq 這樣 b/s 結(jié)構(gòu)的在線(xiàn)聊天平臺(tái)正以其輕盈、便捷的優(yōu)勢(shì)成為近幾年實(shí)時(shí)通訊系統(tǒng)發(fā)展的一種趨勢(shì)。對(duì)于傳統(tǒng) c/s 結(jié)構(gòu)的在線(xiàn)聊天系統(tǒng),需要用戶(hù)安裝客戶(hù)端軟件,對(duì)于一次性訪(fǎng)問(wèn)或者需要在短時(shí)間內(nèi)獲取信息的用戶(hù)來(lái)說(shuō),這種等待是無(wú)法忍耐的。此外,客戶(hù)端軟件存在升級(jí)維護(hù)等問(wèn)題是用戶(hù)所不愿意等待的。b/s 結(jié)構(gòu)與其不同,它不需要安裝任何軟件,直接使用瀏覽器即可,因?yàn)樗p盈、便捷的優(yōu)勢(shì),得到了更多用戶(hù)的偏好。1.21.2 研究概況及發(fā)展趨勢(shì)研究概況及發(fā)展趨勢(shì)越來(lái)越多的人開(kāi)始通過(guò)網(wǎng)絡(luò)進(jìn)行

12、及時(shí)的溝通和交流,聊天室應(yīng)用系統(tǒng)是一個(gè)比較好的人們進(jìn)行實(shí)時(shí)交互的工具,而最常用的就是完全基于 www 的方式,用戶(hù)不需要任何定制的客戶(hù)端,只需要通過(guò)訪(fǎng)問(wèn)指定的 url 就可以登入聊天室和其他在線(xiàn)的用戶(hù)進(jìn)行溝通。 基于 www 網(wǎng)站的聊天,典型的有以色列的一家公司推出的新的聊天程序,該聊天系統(tǒng)的特點(diǎn)是用戶(hù)注冊(cè)登入以后,把用戶(hù)瀏覽頁(yè)面的情況實(shí)時(shí)的發(fā)送到相關(guān)的服務(wù)器上,這樣,服務(wù)器就可以知道當(dāng)前有多少用戶(hù)在某一個(gè)特定的網(wǎng)站上。每當(dāng)用戶(hù)從一個(gè)網(wǎng)站切換到 gooey,一個(gè)網(wǎng)站的時(shí)候,聊天系統(tǒng)就會(huì)告訴用戶(hù)在這個(gè)網(wǎng)站上同時(shí)還有哪些用戶(hù)也正在瀏覽,這樣,所有在同一個(gè)網(wǎng)站上面的用戶(hù)就可以實(shí)時(shí)的進(jìn)行溝通?;?w

13、eb 的聊天服務(wù)器系統(tǒng)的最大的優(yōu)點(diǎn)是完全基于瀏覽器和 web 服務(wù)器的,所以用戶(hù)不需要任何其他的客戶(hù)端的工具,而且由于瀏覽器完全支持多媒體形式,所以傳輸?shù)膬?nèi)容可以非常豐富多彩?,F(xiàn)在隨著發(fā)展出現(xiàn)了視頻聊天室、語(yǔ)音聊天室、動(dòng)畫(huà)聊天室等聊天室。這里介紹一種復(fù)合天室: 典型代表是 uc 聊天室,它打破了傳統(tǒng) im 軟件主要用于文字通訊的第一章 緒論2單一模式,將有聲有色、圖文并茂的場(chǎng)景融入聊天模式,加之視頻電話(huà)、可斷點(diǎn)續(xù)傳的文件傳輸、消息群發(fā)功能和在線(xiàn)游戲功能以及同學(xué)錄(團(tuán)體)等有機(jī)結(jié)合,形成一個(gè)完整的網(wǎng)上即時(shí)通訊娛樂(lè)平臺(tái),帶來(lái)聊天新感覺(jué)。采用 j2ee 技術(shù),用 jsp、java 結(jié)合 ajax 技

14、術(shù)實(shí)現(xiàn)本聊天室。聊天室是基于 web的聊天室,它不需要安裝專(zhuān)門(mén)的軟件,web 瀏覽器就可以使用聊天服務(wù);它集成在 web服務(wù)器中,不需額外的硬件支持,便于廣大中小型客戶(hù)建設(shè)和使用。web 聊天室的主要特點(diǎn)構(gòu)建一個(gè)跨平臺(tái)的 web 聊天室引擎系統(tǒng),可支持行在任何操作系統(tǒng)上。用戶(hù)不需要任何定制的客戶(hù)端,只需要通過(guò)問(wèn)指定的 url 就可以登入聊天室和其他在線(xiàn)的用戶(hù)進(jìn)行溝通。南昌工程學(xué)院專(zhuān)科畢業(yè)論文3第二章 系統(tǒng)設(shè)計(jì)基本原理與技術(shù)2.12.1 sqlsql serverserver 200020002.1.1 sql 簡(jiǎn)介 sql 全稱(chēng)是“結(jié)構(gòu)化查詢(xún)語(yǔ)言(structured query langua

15、ge)” 。最早是 ibm 的圣約瑟研究實(shí)驗(yàn)室為其關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) system r 開(kāi)發(fā)的一種查詢(xún)語(yǔ)言,它的前身是square 語(yǔ)言。sql 語(yǔ)言結(jié)構(gòu)簡(jiǎn)潔,功能強(qiáng)大,簡(jiǎn)單易學(xué),所以自從 ibm 公司 1981 年推出以來(lái),sql 語(yǔ)言得到了廣泛的應(yīng)用。目前,sql 語(yǔ)言已被確定為關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的國(guó)際標(biāo)準(zhǔn),被絕大多數(shù)商品化關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)采用,如 oracle 、sybase、db2、informix、sql server 這些數(shù)據(jù)庫(kù)管理系統(tǒng)都支持 sql 語(yǔ)言作為查詢(xún)語(yǔ)言。結(jié)構(gòu)化查詢(xún)語(yǔ)言 sql 是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語(yǔ)言,其功能包括查詢(xún)、操縱、定義和控制四個(gè)方面,是一個(gè)通用的功

16、能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言。在 sql 語(yǔ)言中不需要告訴 sql 如何訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),只要告訴 sql 需要數(shù)據(jù)庫(kù)做什么。2.1.2 sql 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)sql 數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)基本上也是三級(jí)模式。sql 術(shù)語(yǔ)與傳統(tǒng)的關(guān)系模型術(shù)語(yǔ)不同。在 sql 中,外模式對(duì)應(yīng)于視圖,模式對(duì)應(yīng)于基本表,元組稱(chēng)為“行” ,屬性稱(chēng)為“列” 。內(nèi)模式對(duì)應(yīng)于存儲(chǔ)文件。 sql 數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)特征: 一個(gè) sql 模式(schema)是表和約束的集合。 一個(gè)表(table)是行(row)的集合,每行是列(column)的序列,每列對(duì)應(yīng)一個(gè)數(shù)據(jù)項(xiàng)。 個(gè)表可以是一個(gè)基本表,也可以是一個(gè)視圖,基本表是實(shí)際存儲(chǔ)在數(shù)據(jù)庫(kù)中的表。

17、視圖是從基本表或其他視圖中導(dǎo)出的表,它本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫(kù)中,也就是說(shuō)數(shù)據(jù)庫(kù)中只存放視圖的定義而不存放視圖的數(shù)據(jù),視圖是一個(gè)虛表。一個(gè)基本表可以跨一個(gè)或多個(gè)存儲(chǔ)文件,一個(gè)存儲(chǔ)文件也可存放一個(gè)或多個(gè)基本表,一個(gè)表可以帶若干索引,索引也存放在存儲(chǔ)文件中。每個(gè)存儲(chǔ)文件與外部存儲(chǔ)器上一個(gè)物理文件對(duì)應(yīng)。存儲(chǔ)文件的邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫(kù)的內(nèi)模式。用戶(hù)可以用 sql 語(yǔ)句對(duì)視圖和基本表進(jìn)行查詢(xún)等操作。在用戶(hù)看來(lái),視圖和基本表是一樣的,都是關(guān)系(即表格)。第二章 系統(tǒng)設(shè)計(jì)基本原理與技術(shù)4sql 用戶(hù)可以是應(yīng)用程序,也可以是終端用戶(hù)。sql 語(yǔ)句可嵌入在宿主語(yǔ)言的程序中使用;sql 語(yǔ)言也能作為獨(dú)立的用戶(hù)接

18、口,供交互環(huán)境下的終端用戶(hù)使用。2.1.3 sql 的組成sql 主要分成四個(gè)部分:數(shù)據(jù)定義:這一部分也稱(chēng)為“ddl” ,用于定義 sql 模式、基本表、視圖和索引。數(shù)據(jù)操縱:這一部分也稱(chēng)為“dml”,數(shù)據(jù)操縱分成數(shù)據(jù)查詢(xún)和數(shù)據(jù)更新兩類(lèi),其中數(shù)據(jù)更新又分成插入、刪除和修改三種操作。數(shù)據(jù)控制:這一部分也稱(chēng)為“dcl” 。數(shù)據(jù)控制包括對(duì)基本表和視圖的授權(quán),完整性規(guī)則的描述,事務(wù)控制語(yǔ)句等。2.22.2 struts1.xstruts1.x 簡(jiǎn)介簡(jiǎn)介struts 最早是作為 apache jakarta 項(xiàng)目的組成部分,項(xiàng)目的創(chuàng)立者希望通過(guò)對(duì)該項(xiàng)目的研究,改進(jìn)和提高 javaserver pages

19、 、servlet、標(biāo)簽庫(kù)以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。struts這個(gè)名字來(lái)源于在建筑和舊式飛機(jī)中使用的支持金屬架。這個(gè)框架之所以叫struts,是為了提醒我們記住那些支撐我們房屋,建筑,橋梁,甚至我們踩高蹺時(shí)候的基礎(chǔ)支撐。這也是一個(gè)解釋 struts 在開(kāi)發(fā) web 應(yīng)用程序中所扮演的角色的精彩描述。當(dāng)建立一個(gè)物理建筑時(shí),建筑工程師使用支柱為建筑的每一層提供支持。同樣,軟件工程師使用 struts為業(yè)務(wù)應(yīng)用的每一層提供支持。它的目的是為了幫助我們減少在運(yùn)用 mvc 設(shè)計(jì)模型來(lái)開(kāi)發(fā) web 應(yīng)用的時(shí)間。我們?nèi)匀恍枰獙W(xué)習(xí)和應(yīng)用該架構(gòu),不過(guò)它將可以完成其中一些繁重的工作。如果想混合使用 servlet

20、s 和 jsp 的優(yōu)點(diǎn)來(lái)建立可擴(kuò)展的應(yīng)用,struts 是一個(gè)不錯(cuò)的選擇。 早期 smalltalk 程序語(yǔ)言便采用了 mvc(model-view -controller) 模式( patterns ) 以增加程序代碼彈性,mvc 模式將程序代碼整理切割為三部份,model 部分是業(yè)務(wù)與應(yīng)用領(lǐng)域( business domain) 相關(guān)邏輯、管理狀態(tài)之對(duì)象,controller 部分接收來(lái)自 view 所輸入的資料并與 model 部分互動(dòng),是業(yè)務(wù)流程控制( flow control) 之處,view 部分則負(fù)責(zé)展現(xiàn)資料、接收使用者輸入資料。在 java 應(yīng)用中,jfc/swing、awt、

21、jsp 皆是可用作view 之技術(shù)規(guī)格,而 javabean 與 enterprise javabean 規(guī)格則可用于 model 程序代碼,一旦應(yīng)用程序以 mvc 模式加以適當(dāng)?shù)姆指?,model 部分程序代碼可在不同使用者接口外觀(guān)的應(yīng)用程序中重復(fù)使用。 隨著 jsp 與 servlet 技術(shù)大量應(yīng)用于以 web 為基礎(chǔ)的應(yīng)用程序,java 開(kāi)發(fā)人員群體南昌工程學(xué)院專(zhuān)科畢業(yè)論文5認(rèn)為應(yīng)以較佳之模式以提升 web 應(yīng)用程序之可維護(hù)性與重復(fù)使用性。早期 jsp 規(guī)格書(shū)中曾列舉兩種可行之 jsp 應(yīng)用架構(gòu),分別為 model1 與 model 2。 在 model 1 架構(gòu)中,jsp 直接處理 we

22、b 瀏覽器送來(lái)之請(qǐng)求( request ),并輔以javabean 處理應(yīng)用相關(guān)邏輯。model 1 架構(gòu)單純編寫(xiě)比較容易,但在 model 1 中 jsp 可能同時(shí)肩負(fù) view 與 controller 角色,兩類(lèi)程序代碼有可能混雜而不易維護(hù)。而 model 2 中將 servlet 納入架構(gòu)中扮演前端 controller 角色,將 web 瀏覽器送出之請(qǐng)求集中送至servlet ,servlet 可集中管理使用者登入、權(quán)限控制、多國(guó)語(yǔ)言轉(zhuǎn)換等前置處理,再視需求轉(zhuǎn)向給對(duì)應(yīng)之 jsp 處理。model 2 中采用了較佳之 mvc 模式,但增加了編寫(xiě)復(fù)雜度。 struts 是 apache

23、軟件基金下 jakarta 項(xiàng)目的一部分。除 struts 之外,還有其他成功的開(kāi)源產(chǎn)品,包括 tomcat, ant 和 velocity。2000 年 craig r. mcclanahan 先生貢獻(xiàn)了他編寫(xiě)的 jsp model 2 架構(gòu)之 application framework 原始程序代碼給 apache 基金會(huì),成為 apache jakarta 計(jì)劃 struts framework 前身。 開(kāi)始的代碼基礎(chǔ)從 2000 年 5 月開(kāi)始開(kāi)發(fā),直到 2001 年 6 月,1.0 版本發(fā)布。有 30 多個(gè)開(kāi)發(fā)者參與進(jìn)來(lái),并有數(shù)千人參與到討論組中。struts 代碼基礎(chǔ)由一個(gè)志愿的c

24、ommnitter 團(tuán)隊(duì)來(lái)管理。到 2002 年,struts 小組共有 9 個(gè)志愿 commnitter。 struts 框架的主要架構(gòu)設(shè)計(jì)和開(kāi)發(fā)者是 craig r.mcclanahan。craig 也是 tomcat 4的主要架構(gòu)師,以及 java web services developer pack 的主要架構(gòu)師和實(shí)現(xiàn)者。他現(xiàn)在是sun 的 javaserver faces (jsr-127) 以及 j2ee 平臺(tái)的 web 層架構(gòu)的規(guī)范領(lǐng)導(dǎo)。craig r. mcclanahan 先生是 jcp expertgroup 成員之一,曾參與 jsp 規(guī)格制定與 tomcat 4 之編寫(xiě)

25、,因此 struts framework 廣受 java 開(kāi)發(fā)人員群體所重視。borland 自 2002 年底開(kāi)始于開(kāi)發(fā)工具 jbuilder 中支持 struts framework。 struts 是 apache 基金會(huì) jakarta 項(xiàng)目組的一個(gè) open source 項(xiàng)目,它采用 mvc 模式,能夠很好地幫助 java 開(kāi)發(fā)者利用 j2ee 開(kāi)發(fā) web 應(yīng)用。和其他的 java 架構(gòu)一樣,struts 也是面向?qū)ο笤O(shè)計(jì),將 mvc 模式分離顯示邏輯和業(yè)務(wù)邏輯的能力發(fā)揮得淋漓盡致。structs 框架的核心是一個(gè)彈性的控制層,基于如 java servlets,javabean

26、s,resourcebundles 與 xml 等標(biāo)準(zhǔn)技術(shù),以及 jakarta commons 的一些類(lèi)庫(kù)。struts 由一組相互協(xié)作的類(lèi)(組件) 、servlet 以及 jsp tag lib 組成?;?struts 構(gòu)架的 web 應(yīng)用程序基本上符合 jsp model2 的設(shè)計(jì)標(biāo)準(zhǔn),可以說(shuō)是一個(gè)傳統(tǒng) mvc 設(shè)計(jì)模式的一種變化類(lèi)型。 第二章 系統(tǒng)設(shè)計(jì)基本原理與技術(shù)6struts 最早是作為 apache jakarta 項(xiàng)目的組成部分問(wèn)世運(yùn)作。項(xiàng)目的創(chuàng)立者希望通過(guò)對(duì)該項(xiàng)目的研究,改進(jìn)和提高 java server pages、servlet、標(biāo)簽庫(kù)以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。 stru

27、ts 跟 tomcat、turbine 等諸多 apache 項(xiàng)目一樣,是開(kāi)源軟件,這是它的一大優(yōu)點(diǎn),使開(kāi)發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。 除此之外,struts 的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:taglib 和頁(yè)面導(dǎo)航。taglib 是struts 的標(biāo)記庫(kù),靈活運(yùn)用,能大大提高開(kāi)發(fā)效率。另外,就目前國(guó)內(nèi)的 jsp 開(kāi)發(fā)者而言,除了使用 jsp 自帶的常用標(biāo)記外,很少開(kāi)發(fā)自己的標(biāo)記,或許 struts 是一個(gè)很好的起點(diǎn)。 關(guān)于頁(yè)面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過(guò)一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。尤其

28、是當(dāng)另一批開(kāi)發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。 struts 繼承了 mvc 的各項(xiàng)特性,并根據(jù) j2ee 的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。 struts 對(duì) model,view 和 controller 都提供了對(duì)應(yīng)的組件。 actionservlet,這個(gè)類(lèi)是 struts 的核心控制器,負(fù)責(zé)攔截來(lái)自用戶(hù)的請(qǐng)求。 action,這個(gè)類(lèi)通常由用戶(hù)提供,該控制器負(fù)責(zé)接收來(lái)自 actionservlet 的請(qǐng)求,并根據(jù)該請(qǐng)求調(diào)用模型的業(yè)務(wù)邏輯方法處理請(qǐng)求,并將處理結(jié)果返回給 jsp 頁(yè)面顯示。 model 部分,由 javabean 組成,actionform 用于封裝用戶(hù)的請(qǐng)求參數(shù),

29、封裝成actionform 對(duì)象,該對(duì)象被 actionservlet 轉(zhuǎn)發(fā)給 action,action 根據(jù) actionform 里面的請(qǐng)求參數(shù)處理用戶(hù)的請(qǐng)求。 javabean 則封裝了底層的業(yè)務(wù)邏輯,包括數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)等。 view 部分,該部分采用 jsp 實(shí)現(xiàn)。 struts 提供了豐富的標(biāo)簽庫(kù),通過(guò)標(biāo)簽庫(kù)可以減少腳本的使用,自定義的標(biāo)簽庫(kù)可以實(shí)現(xiàn)與 model 的有效交互,并增加了現(xiàn)實(shí)功能。對(duì)應(yīng)上圖的 jsp 部分。 controller 組件,controller 組件有兩個(gè)部分組成系統(tǒng)核心控制器,業(yè)務(wù)邏輯控制器。 系統(tǒng)核心控制器,對(duì)應(yīng)上圖的 actionservlet。該控制器

30、由 struts 框架提供,繼承httpservlet 類(lèi),因此可以配置成標(biāo)注的 servlet。該控制器負(fù)責(zé)攔截所有的 http 請(qǐng)求,然后根據(jù)用戶(hù)請(qǐng)求決定是否要轉(zhuǎn)給業(yè)務(wù)邏輯控制器。 業(yè)務(wù)邏輯控制器,負(fù)責(zé)處理用戶(hù)請(qǐng)求,本身不具備處理能力,而是調(diào)用 model 來(lái)完成處理。對(duì)應(yīng) action 部分。 南昌工程學(xué)院專(zhuān)科畢業(yè)論文7struts 框架具有組件的模塊化,靈活性和重用性的優(yōu)點(diǎn),同時(shí)簡(jiǎn)化了基于 mvc 的web 應(yīng)用程序的開(kāi)發(fā)。 框架中所使用的組件: actionservlet 控制器 actionform 顯示模塊數(shù)據(jù) actionmapping 幫助控制器將請(qǐng)求映射到操作 action

31、forward 用來(lái)指示操作轉(zhuǎn)移的對(duì)象2.32.3 關(guān)鍵技術(shù)關(guān)鍵技術(shù)2.3.1 ajax 技術(shù)web 開(kāi)發(fā)領(lǐng)域的最新時(shí)髦術(shù)語(yǔ)其實(shí)質(zhì)是“舊貌換新顏” 。ajax(asynchronous javascript and xml)是結(jié)合了 java 技術(shù)、xml 以及 javascript等編程技術(shù),可以讓開(kāi)發(fā)人員構(gòu)建基于 java 技術(shù)的 web 應(yīng)用,并打破了使用頁(yè)面重載的慣例。ajax 是使用客戶(hù)端腳本與 web 服務(wù)器交換數(shù)據(jù)的 web 應(yīng)用開(kāi)發(fā)方法。這樣,web頁(yè)面不用打斷交互流程進(jìn)行重新加裁,就可以動(dòng)態(tài)地更新。使用 ajax,用戶(hù)可以創(chuàng)建接近本地桌面應(yīng)用的直接、高可用、更豐富、更動(dòng)態(tài)的

32、web 用戶(hù)界面。異步 javascript 和 xml(ajax)不是什么新技術(shù),而是指這樣一種方法:使用幾種現(xiàn)有技術(shù)包括級(jí)聯(lián)樣式表(css) 、javascript、xhtml、xml 和可擴(kuò)展樣式語(yǔ)言轉(zhuǎn)換(xslt) ,開(kāi)發(fā)外觀(guān)及操作類(lèi)似桌面軟件的 web 應(yīng)用軟件。實(shí)現(xiàn) ajax 的所有組件都已存在了許多年。adaptive path 的用戶(hù)體驗(yàn)戰(zhàn)略部門(mén)主管兼創(chuàng)辦合伙人 jesse james garrett今年 2 月發(fā)表在 adaptive path 網(wǎng)站上的一篇文章中杜撰了這個(gè)術(shù)語(yǔ)。異步這個(gè)詞是指 ajax 應(yīng)用軟件與主機(jī)服務(wù)器進(jìn)行聯(lián)系的方式。如果使用舊模式,每當(dāng)用戶(hù)執(zhí)行某種操作

33、、向服務(wù)器請(qǐng)求獲得新數(shù)據(jù),web 瀏覽器就會(huì)更新當(dāng)前窗口。如果使用 ajax 的異步模式,瀏覽器就不必等用戶(hù)請(qǐng)求操作,也不必更新整個(gè)窗口就可以顯示新獲取的數(shù)據(jù)。只要來(lái)回傳送采用 xml 格式的數(shù)據(jù),在瀏覽器里面運(yùn)行的javascript 代碼就可以與服務(wù)器進(jìn)行聯(lián)系。javascript 代碼還可以把樣式表加到檢索到的數(shù)據(jù)上,然后在現(xiàn)有網(wǎng)頁(yè)的某個(gè)部分加以顯示。在面向消費(fèi)者的諸多應(yīng)用當(dāng)中,google 的 gmail 和 google maps 就是最常見(jiàn)的例子。在 gmail 當(dāng)中,ajax 負(fù)責(zé)如何開(kāi)啟線(xiàn)程會(huì)話(huà),以顯示不同郵件的文本內(nèi)容。而在 maps第二章 系統(tǒng)設(shè)計(jì)基本原理與技術(shù)8當(dāng)中,aj

34、ax 允許用戶(hù)以一種似乎無(wú)縫的方式拖拉及滾動(dòng)地圖。還有雅虎的 flickr 像片共享應(yīng)用和亞馬遜網(wǎng)站的 a9 搜索引擎。另外,雅虎新的 web郵件服務(wù)可能很快就會(huì)吸引 ajax 支持者的莫大關(guān)注,這項(xiàng)服務(wù)基于雅虎收購(gòu) oddpost 后得到的技術(shù)。這些 ui 都充分地使用了后臺(tái)通道,也被一些開(kāi)發(fā)者稱(chēng)為“web 2.0” ,并導(dǎo)致了大家對(duì) ajax 應(yīng)用興趣的猛漲。然而,ajax 應(yīng)用軟件廠(chǎng)商越來(lái)越把目光瞄準(zhǔn)了企業(yè)。譬如說(shuō),scalix 的 web access電子郵件應(yīng)用軟件其實(shí)比微軟 outlook 自己的 web 郵件界面更像 outlook。不過(guò) ajax 應(yīng)用軟件的適用領(lǐng)域具有一定的局

35、限性。因?yàn)樗鼈兝昧艘恍┳钚碌膚eb 技術(shù),所以只能在某些 web 瀏覽器里面運(yùn)行不過(guò) ajax 適用的瀏覽器正越來(lái)越多。隨著 ajax 應(yīng)用程序的不斷擴(kuò)展,將會(huì)有越來(lái)越多的 javascript 代碼應(yīng)用到 ajax 中,這可能導(dǎo)致許多意想不到的問(wèn)題。因此有必要對(duì) ajax 代碼進(jìn)行重構(gòu)。下面將介紹實(shí)現(xiàn)ajax 重構(gòu)的基本步驟。創(chuàng)建一個(gè)單獨(dú)的 js 文件,名稱(chēng)為 ajaxrequest.js,并且在該文件中編寫(xiě)重構(gòu) ajax 所需的代碼,具體代碼如下:var net=new object(); /定義一個(gè)全局變量/編寫(xiě)構(gòu)造函數(shù)net.ajaxrequest=function(url,onlo

36、ad,onerror,method,params) this.req=null; this.onload=onload; this.onerror=(onerror) ? onerror : this.defaulterror; this.loaddate(url,method,params);/編寫(xiě)用于初始化xmlhttprequest對(duì)象并指定處理函數(shù),最后發(fā)送http請(qǐng)求的方法net.ajaxrtotype.loaddate=function(url,method,params) if (!method) method=get; 南昌工程學(xué)院專(zhuān)科畢業(yè)論文9 if (w

37、indow.xmlhttprequest) this.req=new xmlhttprequest(); else if (window.activexobject) this.req=new activexobject(microsoft.xmlhttp); if (this.req) try var loader=this; this.req.onreadystatechange=function() net.ajaxrequest.onreadystate.call(loader); this.req.open(method,url,true); if(method=post)this.

38、req.setrequestheader(content-type,application/x-www-form-urlencoded); this.req.send(params); catch (err) this.onerror.call(this); /重構(gòu)回調(diào)函數(shù)net.ajaxrequest.onreadystate=function() var req=this.req; var ready=req.readystate; if (ready=4) if (req.status=200 ) this.onload.call(this); else this.onerror.cal

39、l(this);第二章 系統(tǒng)設(shè)計(jì)基本原理與技術(shù)10/重構(gòu)默認(rèn)的錯(cuò)誤處理函數(shù)net.ajaxrtotype.defaulterror=function() alert(錯(cuò)誤數(shù)據(jù)nn回調(diào)狀態(tài):+this.req.readystate+n狀態(tài): +this.req.status);在需要應(yīng)用 ajax 的頁(yè)面中應(yīng)用以下的語(yǔ)句包含 js 文件“ajaxrequest.js” 。在應(yīng)用 ajax 的頁(yè)面中編寫(xiě)錯(cuò)誤處理的方法、實(shí)例化 ajax 對(duì)象的方法和回調(diào)函數(shù),具體代碼如下:/*錯(cuò)誤處理的方法*/function onerror()alert(您的操作有誤!);/*實(shí)例化 ajax

40、 對(duì)象的方法*/function getcheckcode1(showcheckcode,checkcode)var loader1=new net.ajaxrequest(getpicturecheckcode.jsp?nocache=+new date().gettime(),deal_getcheckcode,onerror,get);showcheckcode.style.display=;checkcode.focus();/*回調(diào)函數(shù)*/function deal_getcheckcode()document.getelementbyid(showcheckcode).innerh

41、tml=this.req.responsetext;2.3.2 application 對(duì)象application 對(duì)象是一個(gè)環(huán)境上下文(context)對(duì)象,用于保存應(yīng)用程序中的所有公有數(shù)據(jù),服務(wù)器啟動(dòng)并且自動(dòng)創(chuàng)建 application 對(duì)象以后,只要沒(méi)有關(guān)閉服務(wù)器,application 對(duì)象將一直存在,所有用戶(hù)可以共享 application 對(duì)象。application 對(duì)象為 jsp 提供的內(nèi)置對(duì)象,可以直接使用,但是在 servlet 中,需要通南昌工程學(xué)院專(zhuān)科畢業(yè)論文11過(guò)以下代碼來(lái)獲取該對(duì)象的實(shí)例,才可以使用該對(duì)象。servletcontext application = g

42、etservletcontext();application 對(duì)象提供了很多方法,本實(shí)例中,只使用了 setattribute()方法和getattribute()方法。首先來(lái)介紹 setattribute()方法,該方法用于將一個(gè)對(duì)象綁定到一個(gè)屬性上,該屬性在整個(gè) servlet 上下文中都適用。setattribute()方法的語(yǔ)法格式如下:application.setattribute(string name,object object);name:用于指定一個(gè)屬性名,該屬性在整個(gè) servlet 上下文中都適用。object:用于指定屬性值。例如,在本實(shí)例中,設(shè)置保存群聊信息的 ap

43、plication 對(duì)象的屬性的具體代碼如下:application.setattribute(message, sourcemessage);下面再來(lái)介紹 getattribute()方法,該方法用于返回 application 對(duì)象的指定屬性的值。如果不存在該屬性,則返回 null。getattribute()方法的基本語(yǔ)法如下:application. getattribute(string name);name:用于指定一個(gè)屬性名。例如,在本實(shí)例中,設(shè)置獲取群聊信息的 application 對(duì)象的屬性的具體代碼如下:string sourcemessage = application

44、.getattribute(message).tostring();2.3.3 session 對(duì)象session 對(duì)象是十分重要的一個(gè) jsp 內(nèi)置對(duì)象,它可以用來(lái)在每一個(gè)用戶(hù)之間分別保存用戶(hù)信息,這與 application 對(duì)象不同。application 對(duì)象用于在多個(gè)程序之間保存信息,application 對(duì)象只有一個(gè),它可以綁定若干個(gè)相當(dāng)于全局變量的參數(shù)或者 java 對(duì)象,每個(gè)jsp 程序所訪(fǎng)問(wèn)的都是 application 對(duì)象的一個(gè)同步副本,都是一樣的,而且 application 對(duì)象的生命周期貫穿服務(wù)器的整個(gè)運(yùn)行周期。但是,服務(wù)器上的 session 對(duì)象卻可以有多個(gè),

45、不同的用戶(hù)所面臨的 session 對(duì)象一般來(lái)說(shuō)是不同的,當(dāng)用戶(hù)登錄網(wǎng)站,系統(tǒng)將為他生成一個(gè)獨(dú)一無(wú)二的 session 對(duì)象,用以記錄該用戶(hù)的個(gè)人信息,一旦該用戶(hù)退出網(wǎng)站,那么該 session 對(duì)象將會(huì)被注銷(xiāo)。session 對(duì)象也可以綁定若干個(gè)參數(shù)或者 java 對(duì)象,這些參數(shù)或者 java 對(duì)象就相當(dāng)于局部變量,不同 session 對(duì)象間的同名變量是不會(huì)相互干擾的。應(yīng)用 session 對(duì)象的功能,可以十分簡(jiǎn)單地實(shí)現(xiàn)購(gòu)物車(chē)等功能。但是我們僅能獲取原 session 對(duì)象的一個(gè)同步副本,這一點(diǎn)上,session 對(duì)象和application 對(duì)象是一致的。application 對(duì)象和

46、session 對(duì)象并非不能被創(chuàng)建,但是,他們只第二章 系統(tǒng)設(shè)計(jì)基本原理與技術(shù)12能夠由 jsp 引擎自動(dòng)創(chuàng)建。application 對(duì)象在服務(wù)器啟動(dòng)的時(shí)候被創(chuàng)建,在服務(wù)器關(guān)閉時(shí)被刪除,session 對(duì)象在新的 http 連接產(chǎn)生時(shí)被創(chuàng)建,在 http 連接中斷或者超時(shí)的時(shí)候被刪除,同時(shí),jsp 程序員也可以調(diào)用 invalidate()方法強(qiáng)行刪除 session 對(duì)象,中斷http 連接。這是 application 對(duì)象和 session 對(duì)象的不同點(diǎn)之一。在本實(shí)例中,設(shè)置保存私聊信息的 session 對(duì)象的屬性的具體代碼如下:usersession.setattribute(ow

47、nmessage, listsession);南昌工程學(xué)院專(zhuān)科畢業(yè)論文13第二章 系統(tǒng)設(shè)計(jì)基本原理與技術(shù)14第三章 需求分析3.13.1 需求分析需求分析這是一個(gè)具有最簡(jiǎn)單功能的聊天室。通過(guò)該聊天室,用戶(hù)首先應(yīng)要進(jìn)行注冊(cè)獲得登錄賬號(hào)后,才可以用獲得的賬號(hào)和密碼進(jìn)入聊天室,用戶(hù)可以在聊天室中發(fā)送群聊信息,可以和指定的聊天對(duì)象用戶(hù)私聊,還可以對(duì)發(fā)送的信息進(jìn)行表情、顏色等方面的限制。系統(tǒng)應(yīng)具有自動(dòng)把在線(xiàn)但不發(fā)言的時(shí)間超過(guò)系統(tǒng)設(shè)置的時(shí)間的用戶(hù)踢出聊天室和的功能,應(yīng)具有當(dāng)有新用戶(hù)進(jìn)入聊天室時(shí),實(shí)時(shí)更新在線(xiàn)用戶(hù)的功能,還應(yīng)具有查看在線(xiàn)用戶(hù)基本的基本資料和查看自己基本的基本資料及修改自己的基本資料的功能。聊

48、天室的特點(diǎn)就是要求能夠?qū)崟r(shí)顯示出聊天者所談的內(nèi)容。無(wú)論是私聊或群聊,都可以在短時(shí)間內(nèi)立刻看到其他聊天者的發(fā)言。作為用戶(hù)喜歡的 web 應(yīng)用程序,除了具有能夠?qū)崟r(shí)顯示出聊天者所談?wù)摰膬?nèi)容外,還應(yīng)具有以多種方式發(fā)布信息的功能。jsp 、ajax 和 struts 相結(jié)合,就可以快速地創(chuàng)建和顯示 web 頁(yè)面的動(dòng)態(tài)內(nèi)容??偟膩?lái)說(shuō),本聊天室主要實(shí)現(xiàn)了以下的功能:用戶(hù)注冊(cè)帳號(hào),填寫(xiě)個(gè)人基本資料將用戶(hù)的基本資料保存到數(shù)據(jù)庫(kù)用戶(hù)輸入帳號(hào),密碼登錄聊天室用戶(hù)可以修改聊天語(yǔ)句的顏色,選擇說(shuō)話(huà)表情用戶(hù)聊天室可以選擇聊天對(duì)象(私聊,群聊)聊天室不斷地對(duì) application 和 session 中的內(nèi)容進(jìn)行刷新、

49、讀取實(shí)時(shí)更新在線(xiàn)的用戶(hù)查看在線(xiàn)用戶(hù)的基本資料查看并可修改自己的基本資料用戶(hù)退出聊天室南昌工程學(xué)院專(zhuān)科畢業(yè)論文15圖 3-1 用戶(hù) e-r 圖圖 3-2 在線(xiàn)用戶(hù)信息 e-r 圖第四章 系統(tǒng)概要設(shè)計(jì)16第四章 系統(tǒng)概要設(shè)計(jì)4.14.1 系統(tǒng)功能模塊圖系統(tǒng)功能模塊圖圖 4-1 系統(tǒng)功能模塊圖本系統(tǒng)主要包括以下功能:(1) 用戶(hù)注冊(cè),在首頁(yè)點(diǎn)擊“賬號(hào)注冊(cè)”按鈕,轉(zhuǎn)到用戶(hù)注冊(cè)頁(yè)面,填寫(xiě)相應(yīng)的信息。(2) 用戶(hù)登錄,在首頁(yè)填寫(xiě)賬號(hào)和密碼,點(diǎn)擊“登錄”按鈕,進(jìn)入聊天室。(3) 信息顯示,用戶(hù)成功登錄后,即可顯示在線(xiàn)用戶(hù)、群聊內(nèi)容和私聊內(nèi)容(4) 用戶(hù)選擇相應(yīng)的聊天對(duì)象,即可聊天,群聊或私聊。(5) 用戶(hù)可

50、以查看在線(xiàn)用戶(hù)的基本資料。南昌工程學(xué)院專(zhuān)科畢業(yè)論文17(6) 用戶(hù)同樣也可以查看個(gè)人的基本資料并且可對(duì)個(gè)人的基本資料修改。(7) 用戶(hù)聊天內(nèi)容發(fā)送,在用戶(hù)選擇好聊天對(duì)象、表情、字體顏色及聊天內(nèi)容后,點(diǎn)擊“發(fā)送”按鈕(或按鍵“ctrl + enter”鍵) ,即可將聊天內(nèi)容發(fā)送出去。(8) 用戶(hù)退出聊天室,點(diǎn)擊“退出聊天室”按鈕,即可退出,聊天室。第四章 系統(tǒng)概要設(shè)計(jì)184.24.2 系統(tǒng)流程圖系統(tǒng)流程圖圖 4-2 系統(tǒng)流程圖開(kāi)始用戶(hù)登陸帳號(hào)判斷帳號(hào)或密碼錯(cuò)誤密碼提示重新輸入或注冊(cè)帳號(hào)正確張卻顯示在線(xiàn)用戶(hù)選擇聊天對(duì)象選擇表情選擇字體顏色查看在線(xiàn)用戶(hù)資料修改個(gè)人資料查看個(gè)人資料顯示聊天內(nèi)容是否退出

51、結(jié)束南昌工程學(xué)院專(zhuān)科畢業(yè)論文19 (1) 在登錄首頁(yè),輸入賬號(hào)和密碼,點(diǎn)擊“登錄”按鈕,若賬號(hào)或密碼錯(cuò)誤,將提示“登錄失敗,賬號(hào)、密碼錯(cuò)誤或注冊(cè)賬號(hào)” ;若是賬號(hào)和密碼正確,將成功進(jìn)入聊天室,并顯示所有在線(xiàn)用戶(hù)、群聊內(nèi)容及私聊內(nèi)容。(2) 進(jìn)入聊天室后,就可以選擇相應(yīng)的聊天對(duì)象聊天;查看在線(xiàn)用戶(hù)的基本資料;查看個(gè)人的基本資料及修改個(gè)人的基本資料或是退出聊天室。第五章 詳細(xì)設(shè)計(jì)20第五章 詳細(xì)設(shè)計(jì)5.15.1 數(shù)據(jù)庫(kù)模塊設(shè)計(jì)數(shù)據(jù)庫(kù)模塊設(shè)計(jì)建立一個(gè)名為 chatroom 的 sql server 數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)中共使用一個(gè)表名為: 表 5-1 用戶(hù)信息表(userinfo)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空i

52、dint50noqqvarchar12nonicknamevarchar12nopasswordvarchar12noagedatatime12nosexvarchar12yesbirthdayvarchar12yes signvarchar50yesphotovarchar1024圖 5-1 用戶(hù)信息表在規(guī)劃設(shè)計(jì)聊天室時(shí),首先要確定好談話(huà)內(nèi)容存儲(chǔ)方式,jsp 可以用三種形式實(shí)現(xiàn)聊天內(nèi)容的存?。?)用全局變量 application 和 session 對(duì)象實(shí)現(xiàn)。這種形式速度快、效果好,但較消耗系統(tǒng)資源。2)用讀寫(xiě)數(shù)據(jù)庫(kù)的方法實(shí)現(xiàn)。這種方法相對(duì)簡(jiǎn)單,但會(huì)使數(shù)據(jù)庫(kù)負(fù)擔(dān)重。本系統(tǒng)采用的就是該方法。

53、本設(shè)計(jì)選擇了 sql server 2000 數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)談話(huà)內(nèi)容。3)用讀寫(xiě)文本文件方法。該方法適合簡(jiǎn)單的聊天室。另一個(gè)設(shè)計(jì)聊天室時(shí)要考慮的因素就是聊天室成員的動(dòng)態(tài)刷新。有的用戶(hù)在退出聊天室時(shí)并不是從退出鏈接退出的,但服務(wù)器并不知道用戶(hù)已經(jīng)離開(kāi)了。因此需要建立一個(gè)在線(xiàn)用戶(hù)數(shù)據(jù)庫(kù),每隔一段南昌工程學(xué)院專(zhuān)科畢業(yè)論文21時(shí)間檢查一次,看用戶(hù)從最后一次發(fā)言到現(xiàn)在是否超時(shí),若是,則將該用戶(hù)自動(dòng)刪除。5.25.2 用戶(hù)登錄模塊設(shè)計(jì)用戶(hù)登錄模塊設(shè)計(jì)本系統(tǒng)需注冊(cè),輸入賬號(hào)和密碼即可。登錄成功后,顯示聊天室列表,用戶(hù)選擇想要進(jìn)入的聊天室,則在相應(yīng)的聊天室中顯示出歡迎信息,并在當(dāng)前在線(xiàn)用戶(hù)中增加剛才登錄的當(dāng)前用

54、戶(hù)的名字。如圖 5-2 所示。圖 5-2 用戶(hù)登入界面圖 5-3 聊天室主界面第五章 詳細(xì)設(shè)計(jì)22用戶(hù)從登陸頁(yè)面進(jìn)入聊天室時(shí),如果登錄失敗則顯示出錯(cuò)原因。比如用戶(hù)名或密碼錯(cuò)誤,或者申請(qǐng)已經(jīng)存在的用戶(hù)名,出現(xiàn)檢正后重新輸入等提示。如果該用戶(hù)已在線(xiàn),出現(xiàn)用戶(hù)以在線(xiàn)提示。如圖 5-4 所示。圖 5-4 網(wǎng)頁(yè)消息用戶(hù)登錄驗(yàn)證public class loginaction extends dispatchaction /* * 數(shù)據(jù)庫(kù)查詢(xún),驗(yàn)證登錄帳號(hào),密碼 */public actionforward login(actionmapping mapping, actionform form,http

55、servletrequest request, httpservletresponse response)throws exception httpsession session = request.getsession();useractionform uaf = (useractionform) form;system.out.println(000000000跳到action這邊來(lái)了);user user = null;string qq = uaf.getqq();string password = uaf.getpassword();userinfo userinfo = useri

56、nfo.getinstance(); / 獲得userinfo類(lèi)的對(duì)象vector vector = userinfo.getlist();南昌工程學(xué)院專(zhuān)科畢業(yè)論文23boolean flag = true; / 標(biāo)記是否登錄的變量/ 判斷用戶(hù)是否登錄for (int i = 0; i vector.size(); i+) user = (user) vector.elementat(i);system.out.println(user.getqq= + user.getqq();system.out.println(uqq= + qq);if (qq.equals(user.getqq()

57、printwriter out;try out = response.getwriter();out.println(alert(該用戶(hù)已登錄);window.location.href=index.jsp;); catch (ioexception e) e.printstacktrace();flag = false;break;if (flag) user = usermanager.getinstance().userlogin(qq, password);if (user != null) / 登錄成功,轉(zhuǎn)到聊天頁(yè)面/ 將用戶(hù)信息保存到session中session.setattri

58、bute(user_info, user); / 創(chuàng)建一個(gè)hashmap對(duì)象,用來(lái)保存每個(gè)用戶(hù)的session idencodingfilter.put(user.getqq(), session);response.sendredirect(messages?action=loginroom); else / 密碼或id錯(cuò)誤,要回到login.jsp頁(yè)面第五章 詳細(xì)設(shè)計(jì)24printwriter out;try out = response.getwriter();out.println(alert(賬號(hào)或密碼錯(cuò)誤,請(qǐng)重新登錄);window.location.href=index.jsp;

59、); catch (ioexception e) e.printstacktrace();return null;5.35.3 用戶(hù)注冊(cè)模塊設(shè)計(jì)用戶(hù)注冊(cè)模塊設(shè)計(jì)該模塊的主要作用是實(shí)現(xiàn)用戶(hù)注冊(cè),及保存用戶(hù)的個(gè)人信息。注冊(cè)完成之后系統(tǒng)會(huì)返回一個(gè)賬號(hào)給用戶(hù),用戶(hù)下次登錄的時(shí)候就用此賬號(hào)和密碼。圖 5-5 用戶(hù)注冊(cè)注冊(cè)成功后,系統(tǒng)會(huì)自動(dòng)生成一個(gè)賬號(hào)。生成頁(yè)面如下:南昌工程學(xué)院專(zhuān)科畢業(yè)論文25圖 5-6 注冊(cè)成功實(shí)現(xiàn)用戶(hù)注冊(cè)功能代碼如下:public class userregiteraction extends action overridepublic actionforward execute(a

60、ctionmapping mapping, actionform form,httpservletrequest request, httpservletresponse response)throws exception useractionform uaf=(useractionform) form;user user = new user();boolean flag = false;string photoname = ;string qq=;iptimestamp its = new iptimestamp(request.getremoteaddr(); / 產(chǎn)生由ip、時(shí)間,3位

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論